summaryrefslogtreecommitdiff
path: root/ishtar_common/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-12 12:54:13 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-08-12 12:54:13 +0200
commit771efc29205b7b200f13404bbf5bf96d984338fa (patch)
treec1c525f5e1f7b244688c282f169fac2e326fa4de /ishtar_common/utils.py
parent05ffc8d92b90cc46c4014346562270c18821e05d (diff)
downloadIshtar-771efc29205b7b200f13404bbf5bf96d984338fa.tar.bz2
Ishtar-771efc29205b7b200f13404bbf5bf96d984338fa.zip
DocumentTemplate: add slug, manage natural key. Utils: create_slug function
Diffstat (limited to 'ishtar_common/utils.py')
-rw-r--r--ishtar_common/utils.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 19ff16394..9eda2d22f 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -241,3 +241,17 @@ def post_save_point(sender, **kwargs):
instance.skip_history_when_saving = True
instance.save()
return
+
+
+def create_slug(model, name, slug_attr='slug', max_length=100):
+ 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():
+ final_slug = slug
+ break
+ slug = base_slug[:(max_length - 1 - len(str(idx)))] + "-" + str(idx)
+ idx += 1
+ return final_slug