Use short uuids.

This commit is contained in:
Julien Palard 2018-05-07 00:35:52 +02:00
parent a02660c1f4
commit 81d2dd23ea
2 changed files with 9 additions and 18 deletions

View File

@ -2,24 +2,15 @@ import string
import shortuuid import shortuuid
import os import os
from webtools import settings from webtools import settings
from .models import Paste
def random_id(model):
def next_slug(slug): """Returns a short uuid for the slug of the given model."""
"""Returns the shortest next slug alphabetically.""" uuid = shortuuid.uuid()
slug = list(slug[::-1]) for i in range(3, len(uuid)):
for i in range(len(slug)): if not model.objects.filter(slug=uuid[:i]):
pos = string.ascii_letters.find(slug[i]) + 1 return uuid[:i]
slug[i] = string.ascii_letters[pos % 52] return uuid
if slug[i] != 'a':
break
if slug[i] == 'a':
slug.append('a')
return "".join(slug)[::-1]
def random_id():
"""Returns an id."""
return shortuuid.uuid()
def cache_get_filepath(key): def cache_get_filepath(key):

View File

@ -13,7 +13,7 @@ def index(request):
data = {'menu': 'index', data = {'menu': 'index',
'max_characters': settings.MAX_CHARACTERS} 'max_characters': settings.MAX_CHARACTERS}
if request.method == 'POST': if request.method == 'POST':
paste = Paste(slug=random_id(), paste = Paste(slug=random_id(Paste),
paste_ip=request.META['REMOTE_ADDR'], paste_ip=request.META['REMOTE_ADDR'],
paste_agent=request.META['HTTP_USER_AGENT']) paste_agent=request.META['HTTP_USER_AGENT'])
form = PasteForm(request.POST, instance=paste) form = PasteForm(request.POST, instance=paste)