diff options
Diffstat (limited to 'ishtar_common/utils.py')
| -rw-r--r-- | ishtar_common/utils.py | 14 | 
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  | 
