summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
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
commitb217ce412e27732159e1a58ad5de123f371ad61c (patch)
tree75bca97e662fcc5095af0b2de59fbacf292aa5df /archaeological_operations
parent97d8fbd41e654a520830ed2c452b0273581ba72f (diff)
downloadIshtar-b217ce412e27732159e1a58ad5de123f371ad61c.tar.bz2
Ishtar-b217ce412e27732159e1a58ad5de123f371ad61c.zip
Operation - fix label regeneration on town change
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/models.py14
-rw-r--r--archaeological_operations/tests.py32
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()