From 735be2a425636b7dc49f71c650e1765a527a3e97 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 31 Aug 2020 18:11:40 +0200 Subject: Containers: append warehouse to merge key (refs #4964) --- archaeological_warehouse/models.py | 7 +++++-- archaeological_warehouse/tests.py | 12 +++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'archaeological_warehouse') diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 17719539b..d24985645 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -447,7 +447,6 @@ class WarehouseDivisionLink(models.Model): return self.warehouse.uuid, self.container_type.txt_idx - class ContainerTree(models.Model): CREATE_SQL = """ CREATE VIEW containers_tree AS @@ -765,7 +764,7 @@ class Container(DocumentItem, Merge, LightHistorizedItem, QRCodeItem, GeoItem, verbose_name=_("Main image"), blank=True, null=True) DISABLE_POLYGONS = False - MERGE_ATTRIBUTE = "get_cached_division" + MERGE_ATTRIBUTE = "get_merge_key" MERGE_STRING_FIELDS = ["old_reference"] class Meta: @@ -818,6 +817,10 @@ class Container(DocumentItem, Merge, LightHistorizedItem, QRCodeItem, GeoItem, def get_cached_division(self): return self._generate_cached_division() + @property + def get_merge_key(self): + return str(self.location.uuid) + "|" + self._generate_cached_division() + def _generate_cached_division(self): parents = [] parent = self.parent diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 126cc0420..c1d2e032f 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -707,7 +707,7 @@ class ContainerTest(FindInit, TestCase): location=self.main_warehouse, container_type=ct) init_mc = container_1.merge_candidate.count() - models.Container.objects.create( + container_2 = models.Container.objects.create( reference="TEST", responsible=self.main_warehouse, location=self.main_warehouse, container_type=ct) @@ -716,6 +716,16 @@ class ContainerTest(FindInit, TestCase): container_1.archive() self.assertEqual(container_1.merge_candidate.count(), init_mc) + container_1 = models.Container.objects.get(pk=container_1.pk) + container_1.archived = False + container_1.save() + container_2 = models.Container.objects.get(pk=container_2.pk) + self.assertEqual(container_1.merge_candidate.count(), + init_mc + 1) + container_2.location = self.alt_warehouse + container_2.save() + self.assertEqual(container_1.merge_candidate.count(), + init_mc) def test_merge_container(self): ct = models.ContainerType.objects.all()[0] -- cgit v1.2.3