aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Spaeth <Sebastian@SSpaeth.de>2013-01-09 12:40:18 +0100
committerSebastian Spaeth <Sebastian@SSpaeth.de>2013-01-15 20:08:21 +0100
commit66d9f1b2a041eeb3dd592b807ad06c25acb746c7 (patch)
treef7a4acaee45bc8632b61e292e410217623791283
parent4ca0755ab63192b9a79c1152673bfeb19e45e8a1 (diff)
downloadmediagoblin-66d9f1b2a041eeb3dd592b807ad06c25acb746c7.tar.lz
mediagoblin-66d9f1b2a041eeb3dd592b807ad06c25acb746c7.tar.xz
mediagoblin-66d9f1b2a041eeb3dd592b807ad06c25acb746c7.zip
Make generate_slug assign a slug in any case
generate_slug could assign "none" as slug. Make sure it assigns a unique slug in any case. We now try based on: a) existing slug values b) media.title c) media.id d) random garbage Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
-rw-r--r--mediagoblin/db/mixin.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/mediagoblin/db/mixin.py b/mediagoblin/db/mixin.py
index 001b7826..daeda8ce 100644
--- a/mediagoblin/db/mixin.py
+++ b/mediagoblin/db/mixin.py
@@ -56,15 +56,22 @@ class MediaEntryMixin(object):
# (db.models -> db.mixin -> db.util -> db.models)
from mediagoblin.db.util import check_media_slug_used
- self.slug = slugify(self.title)
-
- duplicate = check_media_slug_used(self.uploader, self.slug, self.id)
+ #Is already a slug assigned? Check if it is valid
+ if self.slug:
+ self.slug = slugify(self.slug)
+ elif self.title:
+ #assign slug based on title
+ self.slug = slugify(self.title)
+ elif self.id:
+ # Does the object already have an ID? (after adding to the session)
+ self.slug = unicode(self.id)
+ else:
+ # Everything else failed, just use random garbage
+ self.slug = unicode(uuid4())[1:4]
- if duplicate:
- if self.id is not None:
- self.slug = u"%s-%s" % (self.id, self.slug)
- else:
- self.slug = None
+ while check_media_slug_used(self.uploader, self.slug, self.id):
+ # add garbage till it's unique
+ self.slug = self.slug + unicode(uuid4())[1:4]
@property
def description_html(self):