diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-26 11:41:41 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-16 16:42:32 +0200 |
commit | 50dd359c1981bd4136c9dedf7a147bed9c1b47bf (patch) | |
tree | 1a328ff8a6f97f06bd2d5d4f8990694136037a7b /ishtar_common/utils.py | |
parent | a634566637d52380f1289be46bdcfd9e636f31af (diff) | |
download | Ishtar-50dd359c1981bd4136c9dedf7a147bed9c1b47bf.tar.bz2 Ishtar-50dd359c1981bd4136c9dedf7a147bed9c1b47bf.zip |
🗃️ add slug to biographical notes
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r-- | ishtar_common/utils.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index d41e07e97..1397d9701 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -1272,13 +1272,16 @@ def max_value_current_year(value): return MaxValueValidator(datetime.date.today().year)(value) -def create_slug(model, name, slug_attr="slug", max_length=100): +def create_slug(model, name, slug_attr="slug", max_length=100, pk=None): base_slug = slugify(name) slug = base_slug[:max_length] final_slug = None idx = 1 while not final_slug: - if slug and not model.objects.filter(**{slug_attr: slug}).exists(): + q = model.objects.filter(**{slug_attr: slug}) + if pk: + q = q.exclude(pk=pk) + if slug and not q.exists(): final_slug = slug break slug = base_slug[: (max_length - 1 - len(str(idx)))] + "-" + str(idx) |