diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-10-06 19:44:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:21 +0100 |
commit | 9f8e22e404f30b0c26933ebc85efdb416cc7bca4 (patch) | |
tree | 04961ac0119f44f5c46cb4356733f8bf2b5b0c1d /ishtar_common/models_common.py | |
parent | 8b11f10de8259e2c0108434b15f97a968f5ccd93 (diff) | |
download | Ishtar-9f8e22e404f30b0c26933ebc85efdb416cc7bca4.tar.bz2 Ishtar-9f8e22e404f30b0c26933ebc85efdb416cc7bca4.zip |
Complete identifier field: database - profile settings - save
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r-- | ishtar_common/models_common.py | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 20809e38e..8c5d60637 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -60,7 +60,7 @@ from ishtar_common.models_imports import Import from ishtar_common.templatetags.link_to_window import simple_link_to_window from ishtar_common.utils import get_cache, disable_for_loaddata, \ get_all_field_names, merge_tsvectors, cached_label_changed, post_save_geo, \ - task, duplicate_item, get_external_id, get_current_profile + task, duplicate_item, get_generated_id, get_current_profile """ from ishtar_common.models import get_external_id, \ @@ -1224,7 +1224,7 @@ class BaseHistorizedItem(StatisticItem, TemplateItem, FullSearch, Imported, self.external_id and not getattr(self, 'auto_external_id', False)): return - external_id = get_external_id(self.EXTERNAL_ID_KEY, self) + external_id = get_generated_id(self.EXTERNAL_ID_KEY, self) if external_id == self.external_id: return self.auto_external_id = True @@ -2641,8 +2641,9 @@ class ImageContainerModel: return "upload/{}/{:02d}/{:02d}".format(n.year, n.month, n.day) -class QRCodeItem(models.Model, ImageContainerModel): +class CompleteIdentifierItem(models.Model, ImageContainerModel): HAS_QR_CODE = True + complete_identifier = models.TextField(_("Complete identifier"), blank=True) qrcode = models.ImageField(upload_to=get_image_path, blank=True, null=True, max_length=255) @@ -2689,6 +2690,26 @@ class QRCodeItem(models.Model, ImageContainerModel): if tmpdir_created: shutil.rmtree(tmpdir) + def generate_complete_identifier(self): + SLUG = getattr(self, "SLUG", None) + if not SLUG: + return "" + complete_identifier = get_generated_id( + SLUG + "_complete_identifier", self) + if complete_identifier: + return complete_identifier + cached_label_key = 'cached_label' + if getattr(self, 'GEO_LABEL', None): + cached_label_key = getattr(self, 'GEO_LABEL', None) + if getattr(self, "CACHED_LABELS", None): + cached_label_key = getattr(self, "CACHED_LABELS")[-1] + complete_identifier = getattr(self, cached_label_key) + return complete_identifier + + def save(self, *args, **kwargs): + self.complete_identifier = self.generate_complete_identifier() + super(CompleteIdentifierItem, self).save(*args, **kwargs) + class SearchVectorConfig: def __init__(self, key, language=None, func=None): |