diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-20 11:46:57 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-20 11:46:57 +0100 |
commit | 47f4eaa7509693e0a64ad3ee69b7a312df541127 (patch) | |
tree | 5232bf428003effb1dcad3b23c3d49a976c39894 /archaeological_warehouse/models.py | |
parent | f5a0acf2638ce5bb31e1e9750f30fbc52cae1577 (diff) | |
download | Ishtar-47f4eaa7509693e0a64ad3ee69b7a312df541127.tar.bz2 Ishtar-47f4eaa7509693e0a64ad3ee69b7a312df541127.zip |
Warehouse: new slug field to prevent ID change when name is changed
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r-- | archaeological_warehouse/models.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 3f4913d4b..5d96e6863 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -320,6 +320,7 @@ class Warehouse( } GEO_LABEL = "name" DOWN_MODEL_UPDATE = ["containers"] + FORCE_CASCADE_UPDATE = True CACHED_LABELS = ["cached_town_label"] QA_EDIT = QuickAction( @@ -346,6 +347,7 @@ class Warehouse( uuid = models.UUIDField(default=uuid.uuid4) name = models.CharField(_("Name"), max_length=200) + slug = models.SlugField(_("Textual ID"), blank=True, default="", max_length=200) warehouse_type = models.ForeignKey( WarehouseType, verbose_name=_("Warehouse type"), on_delete=models.PROTECT ) @@ -658,15 +660,20 @@ class Warehouse( self.update_search_vector() super(Warehouse, self).save(*args, **kwargs) - self.skip_history_when_saving = True + updated = False + if not self.slug and self.name: + self.slug = slugify(self.name)[:200] + updated = True if not self.external_id or self.auto_external_id: external_id = get_generated_id("warehouse_external_id", self) if external_id != self.external_id: - self.auto_external_id = True self.external_id = external_id - self._cached_label_checked = False - self.save() - return + updated = True + if updated: + self.skip_history_when_saving = True + self._cached_label_checked = False + self.force_update = True + self.save() m2m_changed.connect(document_attached_changed, sender=Warehouse.documents.through) |