diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-01-20 11:20:32 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-01-20 17:28:03 +0100 |
| commit | 4eef09b94b01a226da48c8a6c12af7c70652fc58 (patch) | |
| tree | 6e2c0525eab67efd40e971fa11c1e60500b5c45d /ishtar_common | |
| parent | 7322d72bb2a7469f0bac2f3c2f527028271a490a (diff) | |
| download | Ishtar-4eef09b94b01a226da48c8a6c12af7c70652fc58.tar.bz2 Ishtar-4eef09b94b01a226da48c8a6c12af7c70652fc58.zip | |
♻️ refactor generic models CompleteIdentifierItem -> IdentifierItem, QrCodeItem
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/models_common.py | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index e5afb0b3a..c68d3252b 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -4974,24 +4974,11 @@ class ImageContainerModel: n = timezone.now() return "upload/{}/{:02d}/{:02d}".format(n.year, n.month, n.day) - -class CompleteIdentifierItem(models.Model, ImageContainerModel): +class QrCodeItem(models.Model, ImageContainerModel): HAS_QR_CODE = True - cached_label = models.TextField( - _("Cached name"), - blank=True, - default="", - db_index=True, - help_text=_("Generated automatically - do not edit"), - ) - complete_identifier = models.TextField( - _("Complete identifier"), blank=True, default="" - ) - custom_index = models.IntegerField(_("Custom index"), blank=True, null=True) qrcode = models.ImageField( upload_to=get_image_path, blank=True, null=True, max_length=255 ) - class Meta: abstract = True @@ -5004,19 +4991,6 @@ class CompleteIdentifierItem(models.Model, ImageContainerModel): return "" return self.qrcode.path - def _profile_generate_cached_label(self): - slug = getattr(self, "SLUG", None) - if not slug: - return - return get_generated_id(slug + "_cached_label", self) - - def _generate_cached_label(self): - label = self._profile_generate_cached_label() - if not label: - # to be eventually overloaded by parent class - return str(self) - return label - def generate_qrcode(self, request=None, secure=True, tmpdir=None): if not hasattr(self, "get_absolute_url"): return @@ -5056,6 +5030,35 @@ class CompleteIdentifierItem(models.Model, ImageContainerModel): if tmpdir_created: shutil.rmtree(tmpdir) + +class IdentifierItem(models.Model): + cached_label = models.TextField( + _("Cached name"), + blank=True, + default="", + db_index=True, + help_text=_("Generated automatically - do not edit"), + ) + complete_identifier = models.TextField( + _("Complete identifier"), blank=True, default="" + ) + custom_index = models.IntegerField(_("Custom index"), blank=True, null=True) + class Meta: + abstract = True + + def _profile_generate_cached_label(self): + slug = getattr(self, "SLUG", None) + if not slug: + return + return get_generated_id(slug + "_cached_label", self) + + def _generate_cached_label(self): + label = self._profile_generate_cached_label() + if not label: + # to be eventually overloaded by parent class + return str(self) + return label + def generate_complete_identifier(self): SLUG = getattr(self, "SLUG", None) if not SLUG: @@ -5127,7 +5130,7 @@ class CompleteIdentifierItem(models.Model, ImageContainerModel): return r["max_index"] + 1 def save(self, *args, **kwargs): - super(CompleteIdentifierItem, self).save(*args, **kwargs) + super().save(*args, **kwargs) self.regenerate_all_ids() def regenerate_all_ids(self, save=True): @@ -5153,6 +5156,11 @@ class CompleteIdentifierItem(models.Model, ImageContainerModel): return updated +class CompleteIdentifierItem(IdentifierItem, QrCodeItem): + class Meta: + abstract = True + + class SearchVectorConfig: def __init__(self, key, language=None, func=None): self.key = key |
