Skip to content

Commit

Permalink
Ensure unique slugs even when slug is provided. Closes stephenmcd#290.
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenmcd committed Jul 2, 2012
1 parent 9647854 commit 49fc7a9
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions mezzanine/core/models.py
Expand Up @@ -65,24 +65,24 @@ def save(self, *args, **kwargs):
Create a unique slug by appending an index.
"""
if not self.slug:
# For custom content types, use the ``Page`` instance for
# slug lookup.
concrete_model = base_concrete_model(Slugged, self)
self.slug = self.get_slug()
i = 0
while True:
if i > 0:
if i > 1:
self.slug = self.slug.rsplit("-", 1)[0]
self.slug = "%s-%s" % (self.slug, i)
qs = concrete_model.objects.all()
if self.id is not None:
qs = qs.exclude(id=self.id)
try:
qs.get(slug=self.slug)
except ObjectDoesNotExist:
break
i += 1
# For custom content types, use the ``Page`` instance for
# slug lookup.
concrete_model = base_concrete_model(Slugged, self)
i = 0
while True:
if i > 0:
if i > 1:
self.slug = self.slug.rsplit("-", 1)[0]
self.slug = "%s-%s" % (self.slug, i)
qs = concrete_model.objects.all()
if self.id is not None:
qs = qs.exclude(id=self.id)
try:
qs.get(slug=self.slug)
except ObjectDoesNotExist:
break
i += 1
super(Slugged, self).save(*args, **kwargs)

def get_slug(self):
Expand Down

0 comments on commit 49fc7a9

Please sign in to comment.