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 de499d2b7..f84a2d75b 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"), @@ -1236,28 +1241,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 @@ -1750,9 +1756,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() @@ -1767,6 +1771,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) @@ -1810,33 +1819,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() | 
