From 9f8e22e404f30b0c26933ebc85efdb416cc7bca4 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 6 Oct 2020 19:44:11 +0200 Subject: Complete identifier field: database - profile settings - save --- ishtar_common/models_common.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'ishtar_common/models_common.py') 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): -- cgit v1.2.3