diff options
author | Sebastian Spaeth <Sebastian@SSpaeth.de> | 2013-01-09 12:40:18 +0100 |
---|---|---|
committer | Sebastian Spaeth <Sebastian@SSpaeth.de> | 2013-01-15 20:08:21 +0100 |
commit | 66d9f1b2a041eeb3dd592b807ad06c25acb746c7 (patch) | |
tree | f7a4acaee45bc8632b61e292e410217623791283 | |
parent | 4ca0755ab63192b9a79c1152673bfeb19e45e8a1 (diff) | |
download | mediagoblin-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.py | 23 |
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): |