summaryrefslogtreecommitdiff
path: root/archaeological_warehouse
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse')
-rw-r--r--archaeological_warehouse/models.py48
-rw-r--r--archaeological_warehouse/tests.py8
2 files changed, 27 insertions, 29 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index a72d5a214..4c3857180 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -420,7 +420,7 @@ class Warehouse(
@post_importer_action
def add_localisations(self, context, value):
- self._add_localisations(context, value)
+ return self._add_localisations(context, value)
add_localisations.post_save = True
@@ -454,6 +454,7 @@ class Warehouse(
)
parent = None
+ items = []
for idx, value in enumerate(values):
if idx >= len(divisions):
if return_errors:
@@ -475,6 +476,10 @@ class Warehouse(
)
if created and import_object:
parent.imports.add(import_object)
+ items.append(parent)
+ if return_errors:
+ return items, None
+ return items
@property
def short_label(self):
@@ -937,7 +942,7 @@ class Container(
"empty": SearchAltName(pgettext_lazy("key for text search", "empty"), "finds"),
"parent": SearchAltName(
pgettext_lazy("key for text search", "parent-container"),
- "parent__cached_label__iexact"
+ "parent__cached_label__iexact",
),
"contain_containers": SearchAltName(
pgettext_lazy("key for text search", "contain-containers"),
@@ -1226,28 +1231,29 @@ class Container(
doc.container_ref_id = self.pk
doc.skip_history_when_saving = True
doc.save()
+ return doc
@post_importer_action
def put_document_by_external_id(self, context, value):
- self.put_document_by_key(value, "external_id")
+ return self.put_document_by_key(value, "external_id")
put_document_by_external_id.post_save = True
@post_importer_action
def put_document_by_reference(self, context, value):
- self.put_document_by_key(value, "reference")
+ return self.put_document_by_key(value, "reference")
put_document_by_reference.post_save = True
@post_importer_action
def put_document_by_internal_reference(self, context, value):
- self.put_document_by_key(value, "internal_reference")
+ return self.put_document_by_key(value, "internal_reference")
put_document_by_internal_reference.post_save = True
@post_importer_action
def put_document_by_complete_identifier(self, context, value):
- self.put_document_by_key(value, "complete_identifier")
+ return self.put_document_by_key(value, "complete_identifier")
put_document_by_complete_identifier.post_save = True
@@ -1721,9 +1727,7 @@ class Container(
return
q = Container.objects.filter(location=self.location, index__isnull=False)
self.index = (
- int(q.all().aggregate(Max("index"))["index__max"]) + 1
- if q.count()
- else 1
+ int(q.all().aggregate(Max("index"))["index__max"]) + 1 if q.count() else 1
)
if not self.cached_division:
self.cached_division = self._generate_cached_division()
@@ -1738,6 +1742,11 @@ class Container(
self.location.max_division_number = number
self.location.save()
+ def post_delete_to_update(self):
+ q = Container.objects.filter(container_tree_child__container_parent=self)
+ q.update(cached_division="")
+ return ((self.__class__, q.values_list("id", flat=True)),)
+
def save(self, *args, **kwargs):
self.pre_save()
super(Container, self).save(*args, **kwargs)
@@ -1780,33 +1789,20 @@ class Container(
def container_post_save(sender, **kwargs):
cached_label_and_geo_changed(sender=sender, **kwargs)
- # TODO: to be deleted???
- """
- if not kwargs.get('instance'):
- return
- instance = kwargs.get('instance')
- for loca in ContainerLocalisation.objects.filter(
- container=instance).exclude(
- division__warehouse=instance.location).all():
- q = WarehouseDivisionLink.objects.filter(
- warehouse=instance.location,
- division=loca.division.division
- )
- if not q.count():
- continue
- loca.division = q.all()[0]
- loca.save()
- """
def container_pre_delete(sender, **kwargs):
instance = kwargs["instance"]
+ if getattr(instance, "_no_pre_delete", False):
+ return
q = Container.objects.filter(container_tree_child__container_parent=instance)
q.update(cached_division="")
def container_post_delete(sender, **kwargs):
instance = kwargs["instance"]
+ if getattr(instance, "_no_pre_delete", False):
+ return
q = Container.objects.filter(cached_division="", location=instance.location)
for c in q.all():
c.save()
diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py
index 347382e75..dc7d72286 100644
--- a/archaeological_warehouse/tests.py
+++ b/archaeological_warehouse/tests.py
@@ -491,7 +491,9 @@ class WarehouseTest(TestCase):
)
self.assertTrue(error)
- error = self.warehouse._add_localisations(None, base_value, return_errors=True)
+ __, error = self.warehouse._add_localisations(
+ None, base_value, return_errors=True
+ )
self.assertIsNone(error)
parent = None
for idx, reference in enumerate(("A", "42", "allée 3;2")):
@@ -513,7 +515,7 @@ class WarehouseTest(TestCase):
self.assertEqual(container_nb + len(self.container_types), new_container_nb)
value = "A;42;allée 4"
- error = self.warehouse._add_localisations(None, value, return_errors=True)
+ __, error = self.warehouse._add_localisations(None, value, return_errors=True)
self.assertIsNone(error)
# only create a new container
self.assertEqual(new_container_nb + 1, models.Container.objects.count())
@@ -529,7 +531,7 @@ class WarehouseTest(TestCase):
# test with an empty localisation
value = "A;42;;35"
- error = self.warehouse._add_localisations(None, value, return_errors=True)
+ __, error = self.warehouse._add_localisations(None, value, return_errors=True)
self.assertIsNone(error)
q = models.Container.objects.filter(
parent__reference="42",