summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_warehouse/models.py7
-rw-r--r--archaeological_warehouse/tests.py12
-rw-r--r--ishtar_common/models.py7
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,