diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-12-16 16:13:32 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:23 +0100 |
commit | d6098b0ba42e02d6ddeddeb450f2aedce063c43f (patch) | |
tree | 42377adad5454dc466efba23b384c5fce543015f /archaeological_finds | |
parent | ce9705bb6a5db0b81ee64cfd8d494ae2b54b3b24 (diff) | |
download | Ishtar-d6098b0ba42e02d6ddeddeb450f2aedce063c43f.tar.bz2 Ishtar-d6098b0ba42e02d6ddeddeb450f2aedce063c43f.zip |
Fix regenerate_external_id for finds
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/models_finds.py | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 2f73a55b8..97a408591 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -345,6 +345,13 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem, def natural_key(self): return (self.uuid, ) + def regenerate_external_id(self): + self.skip_history_when_saving = True + self._no_move = True + self.external_id = "" + self.auto_external_id = True + self.save() + @property def operation(self): return self.context_record.operation @@ -1766,19 +1773,26 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem, # images return dct + def regenerate_external_id(self): + for bf in self.base_finds.all(): + if self.base_finds.count() == 1: + bf.label = self.label + bf.regenerate_external_id() + super(Find, self).regenerate_external_id() + @property def name(self): - return " - ".join([base_find.name - for base_find in self.base_finds.all()]) + return " - ".join(base_find.name for base_find in self.base_finds.all()) @property def full_label(self): - lbl = " - ".join([getattr(self, attr) - for attr in ( - 'label', 'denomination', 'administrative_index') - if getattr(self, attr)]) - base = " - ".join([base_find.complete_id() - for base_find in self.base_finds.all()]) + lbl = " - ".join( + getattr(self, attr) for attr in ( + 'label', 'denomination', 'administrative_index') + if getattr(self, attr)) + base = " - ".join( + base_find.complete_id() for base_find in self.base_finds.all() + ) if base: lbl += ' ({})'.format(base) return lbl @@ -1797,7 +1811,7 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem, if no_base_finds: return values # by default attach first basefind data - if not filtr or (filtr and prefix + "base_finds" not in filtr): + if not filtr or prefix + "base_finds" not in filtr: bf = self.get_first_base_find() if not bf: return values |