summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r--ishtar_common/models_common.py54
1 files changed, 38 insertions, 16 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 0b34400a1..98dbb047b 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1615,20 +1615,39 @@ class BaseHistorizedItem(
def duplicate(self, user=None, data=None):
return duplicate_item(self, user, data)
- def update_external_id(self, save=False):
- if not self.EXTERNAL_ID_KEY or (
- self.external_id and not getattr(self, "auto_external_id", False)
- ):
+ def update_external_id(self, save=False, no_set=False):
+ if not hasattr(self, "external_id"):
+ return
+ if self.external_id and not getattr(self, "auto_external_id", False):
return
- external_id = get_generated_id(self.EXTERNAL_ID_KEY, self)
+ external_id_key = self.EXTERNAL_ID_KEY or (
+ hasattr(self, "SLUG") and (self.SLUG + "_external_id")
+ )
+ if not external_id_key:
+ return
+ external_id = get_generated_id(external_id_key, self)
if external_id == self.external_id:
return
- self.auto_external_id = True
- self.external_id = external_id
+ if no_set:
+ return external_id
+ try:
+ self.auto_external_id = True
+ except AttributeError:
+ pass
+ try:
+ self.external_id = external_id
+ except AttributeError:
+ return
self._cached_label_checked = False
if save:
- self.skip_history_when_saving = True
- self.save()
+ if self.pk:
+ self.__class__.objects.filter(pk=self.pk).update(
+ auto_external_id=True,
+ external_id=external_id
+ )
+ else:
+ self.skip_history_when_saving = True
+ self.save()
return external_id
def get_last_history_date(self):
@@ -4524,22 +4543,25 @@ class CompleteIdentifierItem(models.Model, ImageContainerModel):
def regenerate_all_ids(self, save=True):
if getattr(self, "_prevent_loop", False):
- return
- modified = False
+ return {}
+ updated = {}
custom_index = self.generate_custom_index()
if custom_index != self.custom_index:
- modified = True
self.custom_index = custom_index
+ updated["custom_index"] = custom_index
complete_id = self.generate_complete_identifier()
if complete_id and complete_id != self.complete_identifier:
- modified = True
self.complete_identifier = complete_id
- if modified:
+ updated["complete_identifier"] = complete_id
+ if updated:
self._prevent_loop = True
self.skip_history_when_saving = True
if save:
- self.save()
- return modified
+ if self.pk:
+ self.__class__.objects.filter(pk=self.pk).update(**updated)
+ else:
+ self.save()
+ return updated
class SearchVectorConfig: