diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-04-12 18:48:17 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-04-12 18:48:17 +0200 |
commit | b217ce412e27732159e1a58ad5de123f371ad61c (patch) | |
tree | 75bca97e662fcc5095af0b2de59fbacf292aa5df /archaeological_operations | |
parent | 97d8fbd41e654a520830ed2c452b0273581ba72f (diff) | |
download | Ishtar-b217ce412e27732159e1a58ad5de123f371ad61c.tar.bz2 Ishtar-b217ce412e27732159e1a58ad5de123f371ad61c.zip |
Operation - fix label regeneration on town change
Diffstat (limited to 'archaeological_operations')
-rw-r--r-- | archaeological_operations/models.py | 14 | ||||
-rw-r--r-- | archaeological_operations/tests.py | 32 |
2 files changed, 46 insertions, 0 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 3fe658508..2c018ce20 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -2069,6 +2069,20 @@ def operation_post_save(sender, **kwargs): post_save.connect(operation_post_save, sender=Operation) +def operation_town_m2m_changed(sender, **kwargs): + operation = kwargs.get("instance", None) + if not operation: + return + operation._prevent_loop = False + operation.regenerate_all_ids() + cached_label_changed(sender, **kwargs) + + +m2m_changed.connect( + operation_town_m2m_changed, sender=Operation.towns.through +) + + class RelationType(GeneralRelationType): class Meta: verbose_name = _("Operation relation type") diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index 39fa730f0..a2c0ea70d 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -3434,6 +3434,16 @@ class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase): }, ignored=base_ignored_steps, ), + FormData( + "Operation: change a town", + form_datas={ + "selec": {}, + "general": {"operation_type": 2, "year": 2017}, + "townsgeneral": [], + "parcelsgeneral": [], + }, + ignored=base_ignored_steps, + ), ] def pre_wizard(self): @@ -3467,22 +3477,28 @@ class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase): self.form_datas[2].set("general", "operation_type", self.ope_type.pk) self.form_datas[3].set("general", "operation_type", self.ope_type.pk) self.form_datas[4].set("general", "operation_type", self.ope_type.pk) + self.form_datas[5].set("general", "operation_type", self.ope_type.pk) data = self.form_datas[0].form_datas data2 = self.form_datas[1].form_datas data3 = self.form_datas[2].form_datas data4 = self.form_datas[3].form_datas data5 = self.form_datas[4].form_datas + data6 = self.form_datas[5].form_datas data["selec"]["pk"] = operation.pk data2["selec"]["pk"] = operation.pk data3["selec"]["pk"] = operation.pk data4["selec"]["pk"] = operation.pk data5["selec"]["pk"] = operation.pk + data6["selec"]["pk"] = operation.pk town = self.create_towns(datas={"numero_insee": "67890", "name": "Twin Peaks"})[ -1 ] + town_2 = self.create_towns( + datas={"numero_insee": "85000", "name": "South Peaks"} + )[-1] towns = [{"town": town.pk}, {"town": init_town.pk}] parcel_data = { "town": town.pk, @@ -3510,6 +3526,8 @@ class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase): p["parcel_number"] = "43" self.form_datas[4].form_datas["parcelsgeneral"] = [p] + self.form_datas[5].form_datas["townsgeneral"] = [{"town": town_2.pk}] + self.operation_number = models.Operation.objects.count() self.parcel_number = models.Parcel.objects.count() @@ -3593,6 +3611,18 @@ class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase): operation.parcels.count(), test_object.operation_parcel_number ) + def pre_sixth_wizard(test_object): + operation = models.Operation.objects.get(pk=test_object.operations[0].pk) + operation.parcels.clear() + operation.towns.clear() + + def post_sixth_wizard(test_object, final_step_response): + operation = models.Operation.objects.get(pk=test_object.operations[0].pk) + town_str = town_2.name + test_object.assertEqual( + operation.complete_identifier[:len(town_str)], town_str + ) + self.form_datas[0].extra_tests = [post_first_wizard] self.form_datas[1].pre_tests = [pre_second_wizard] self.form_datas[1].extra_tests = [post_second_wizard] @@ -3600,6 +3630,8 @@ class OperationWizardModifTest(WizardTest, OperationInitTest, TestCase): self.form_datas[2].extra_tests = [post_third_wizard] self.form_datas[4].pre_tests = [pre_fifth_wizard] self.form_datas[4].extra_tests = [post_fifth_wizard] + self.form_datas[5].pre_tests = [pre_sixth_wizard] + self.form_datas[5].extra_tests = [post_sixth_wizard] super(OperationWizardModifTest, self).pre_wizard() |