diff options
| -rw-r--r-- | archaeological_warehouse/models.py | 7 | ||||
| -rw-r--r-- | archaeological_warehouse/tests.py | 12 | ||||
| -rw-r--r-- | ishtar_common/models.py | 7 | 
3 files changed, 19 insertions, 7 deletions
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] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 08ae93fa6..04ed6d6c0 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -4278,16 +4278,15 @@ class Merge(models.Model):          self.generate_merge_key()          item = super(Merge, self).save(*args, **kwargs)          if not merge_key_generated: +            self.merge_candidate.clear()              self.generate_merge_candidate()          return item      def archive(self):          self.archived = True          self.save() -        for m in self.merge_candidate.all(): -            m.delete() -        for m in self.merge_exclusion.all(): -            m.delete() +        self.merge_candidate.clear() +        self.merge_exclusion.clear()      def merge(self, item, keep_old=False, exclude_fields=None):          merge_model_objects(self, item, keep_old=keep_old,  | 
