summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
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)