diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-11 20:23:41 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:24 +0100 | 
| commit | 3168c8e172f3d1f1ad1b66a942242d259fa26fa6 (patch) | |
| tree | d039b0c3e3604643b6f2c3a0fe35d292747c6053 | |
| parent | a2cff1951871f2a59cb3c252d759358bff5f5fa4 (diff) | |
| download | Ishtar-3168c8e172f3d1f1ad1b66a942242d259fa26fa6.tar.bz2 Ishtar-3168c8e172f3d1f1ad1b66a942242d259fa26fa6.zip  | |
Add post_import action for container: put_document_by_complete_identifier
| -rw-r--r-- | archaeological_warehouse/models.py | 28 | 
1 files changed, 25 insertions, 3 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index db08c3467..61b2e3f6d 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -45,6 +45,7 @@ from ishtar_common.models_common import GeneralType, \  from ishtar_common.model_merging import merge_model_objects  from ishtar_common.utils import cached_label_changed, \      cached_label_and_geo_changed, get_generated_id +from ishtar_common.data_importer import ImporterError  class DivisionContainer(DashboardFormItem): @@ -990,7 +991,25 @@ class Container(DocumentItem, Merge, LightHistorizedItem,      @property      def get_merge_key(self): -        return str(self.location.uuid) + "|" + self._generate_cached_division() +        try: +            return str(self.location.uuid) + "|" + \ +                   self._generate_cached_division() +        except Warehouse.DoesNotExist: +            return + +    @post_importer_action +    def put_document_by_complete_identifier(self, context, value): +        Document = apps.get_model("ishtar_common", "Document") +        try: +            doc = Document.objects.get(complete_identifier=value) +        except Document.DoesNotExist: +            raise ImporterError(str(_("Document with complete id: {} does not " +                                      "exists")).format(value)) +        doc.container_id = self.pk +        doc.container_ref_id = self.pk +        doc.skip_history_when_saving = True +        doc.save() +    put_document_by_complete_identifier.post_save = True      def _generate_cached_division(self):          parents = [] @@ -1371,8 +1390,11 @@ class Container(DocumentItem, Merge, LightHistorizedItem,          if not self.responsibility_id and not self.responsibility:              if self.location_id:                  self.responsibility_id = self.location_id -            if self.location: -                self.responsibility = self.location +            else: +                try: +                    self.responsibility = self.location +                except Warehouse.DoesNotExist: +                    return          if self.container_type.stationary:              return          q = Container.objects.filter(index=self.index, location=self.location)  | 
