From af04b1ecfc22f8c104f6f960c26086c4284e9777 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 20 Jan 2023 11:46:57 +0100 Subject: Warehouse: new slug field to prevent ID change when name is changed --- archaeological_warehouse/models.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'archaeological_warehouse/models.py') 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) -- cgit v1.2.3