summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/utils.py15
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)