Created
March 28, 2021 14:14
-
-
Save s4n7h0/a5112dd8404c59d5e4f6a08af65b9220 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# utils for slug generator | |
import random | |
import string | |
from django.utils.text import slugify | |
def random_string_generator(size=10, chars=string.ascii_lowercase + string.digits): | |
return ''.join(random.choice(chars) for _ in range(size)) | |
def unique_slug_generator(instance, new_slug=None): | |
if new_slug is not None: | |
slug = new_slug | |
else: | |
slug = slugify(instance.title) | |
Klass = instance.__class__ | |
qs_exists = Klass.objects.filter(slug=slug).exists() | |
if qs_exists: | |
new_slug = "{slug}-{randstr}".format( | |
slug=slug, | |
randstr=random_string_generator(size=10) | |
) | |
return unique_slug_generator(instance, new_slug=new_slug) | |
return slug | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment