diff options
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r-- | archaeological_warehouse/models.py | 48 |
1 files changed, 22 insertions, 26 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() |