From db11f3f42deb08b6302c6360262f3048c90ff129 Mon Sep 17 00:00:00 2001 From: Jesaja Everling Date: Wed, 20 Apr 2022 21:32:56 +0200 Subject: [PATCH] WIP: Append date to slug if not unique - #45 --- ls/joyous/models/event_base.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ls/joyous/models/event_base.py b/ls/joyous/models/event_base.py index 8c72872..fc6e79d 100644 --- a/ls/joyous/models/event_base.py +++ b/ls/joyous/models/event_base.py @@ -285,6 +285,20 @@ def clean(self): self._checkStartBeforeEnd(cleaned_data) return cleaned_data + def full_clean(self, *args, **kwargs): + """Override full_clean, to update slug if it already exists. + + See https://stackoverflow.com/a/43803611 + """ + super().full_clean(*args, **kwargs) + if "slug" in self.errors and self.data["slug"]: + # self.data is immutable, we need to create a copy + self.data = self.data.copy() + # we append the date to make the slug unique for the day + self.data["slug"] += f"-{self.data['date']}" + # validate again after updating duplicate slug + super().full_clean(*args, **kwargs) + def _checkStartBeforeEnd(self, cleaned_data): startTime = getTimeFrom(cleaned_data.get('time_from')) endTime = getTimeTo(cleaned_data.get('time_to'))