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-04-16 16:42:32 +0200
commit50dd359c1981bd4136c9dedf7a147bed9c1b47bf (patch)
tree1a328ff8a6f97f06bd2d5d4f8990694136037a7b /ishtar_common/utils.py
parenta634566637d52380f1289be46bdcfd9e636f31af (diff)
downloadIshtar-50dd359c1981bd4136c9dedf7a147bed9c1b47bf.tar.bz2
Ishtar-50dd359c1981bd4136c9dedf7a147bed9c1b47bf.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 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)