diff options
author | luxagraf <sng@luxagraf.net> | 2018-11-24 22:29:02 -0600 |
---|---|---|
committer | luxagraf <sng@luxagraf.net> | 2018-11-24 22:29:02 -0600 |
commit | 0c2a092e8d8ad33a1c306ee9efca0da96eb56415 (patch) | |
tree | 0aaf48f20771c97ec30e005ef818ef6ce4856097 /apps/utils | |
parent | 7a284139f6b97bb06548e69d47eef188bc99099d (diff) |
way to much for a single commit
Diffstat (limited to 'apps/utils')
-rw-r--r-- | apps/utils/util.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/apps/utils/util.py b/apps/utils/util.py index 0c089ee..899b73f 100644 --- a/apps/utils/util.py +++ b/apps/utils/util.py @@ -1,5 +1,8 @@ import re +import random +import string from django.apps import apps +from django.utils.text import slugify from django.template.loader import render_to_string from bs4 import BeautifulSoup import markdown @@ -82,3 +85,23 @@ def parse_video(s): if soup.find('video'): return True return False + + +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=4) + ) + return unique_slug_generator(instance, new_slug=new_slug) + return slug |