summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py48
1 files changed, 22 insertions, 26 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index add786012..507077d55 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
@@ -1737,9 +1743,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()
@@ -1754,6 +1758,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)
@@ -1797,33 +1806,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()