diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-26 11:41:41 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-02-26 15:20:16 +0100 |
commit | d1890dc252f7f75c8b7dd5166e7fd145f7db5379 (patch) | |
tree | 1b8ad4496714de34a36866f1eb13de78508553cc /ishtar_common/utils.py | |
parent | 7f19c3e85b4184f43e23cf212c8ec150bc52a719 (diff) | |
download | Ishtar-d1890dc252f7f75c8b7dd5166e7fd145f7db5379.tar.bz2 Ishtar-d1890dc252f7f75c8b7dd5166e7fd145f7db5379.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 69736a434..a408abb24 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -1271,13 +1271,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) |