diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/utils.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/main/utils.py b/main/utils.py index 17ca386e..cdd4ff71 100644 --- a/main/utils.py +++ b/main/utils.py @@ -9,6 +9,7 @@ import hashlib from django.core.cache import cache from django.db import connections, router from django.utils.timezone import now +from django.template.defaultfilters import slugify CACHE_TIMEOUT = 1800 @@ -118,6 +119,20 @@ def set_created_field(sender, **kwargs): obj.last_modified = time +def find_unique_slug(model, title): + '''Attempt to find a unique slug for this model with given title.''' + existing = set(model.objects.values_list( + 'slug', flat=True).order_by().distinct()) + + suffixed = slug = slugify(title) + suffix = 0 + while suffixed in existing: + suffix += 1 + suffixed = "%s-%d" % (slug, suffix) + + return suffixed + + def database_vendor(model, mode='read'): if mode == 'read': database = router.db_for_read(model) |