summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
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
commitd1890dc252f7f75c8b7dd5166e7fd145f7db5379 (patch)
tree1b8ad4496714de34a36866f1eb13de78508553cc /ishtar_common/utils.py
parent7f19c3e85b4184f43e23cf212c8ec150bc52a719 (diff)
downloadIshtar-d1890dc252f7f75c8b7dd5166e7fd145f7db5379.tar.bz2
Ishtar-d1890dc252f7f75c8b7dd5166e7fd145f7db5379.zip
🗃️ add slug to biographical notes
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py7
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)