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 os
from webtools import settings
from .models import Paste
def next_slug(slug):
"""Returns the shortest next slug alphabetically."""
slug = list(slug[::-1])
for i in range(len(slug)):
pos = string.ascii_letters.find(slug[i]) + 1
slug[i] = string.ascii_letters[pos % 52]
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 random_id(model):
"""Returns a short uuid for the slug of the given model."""
uuid = shortuuid.uuid()
for i in range(3, len(uuid)):
if not model.objects.filter(slug=uuid[:i]):
return uuid[:i]
return uuid
def cache_get_filepath(key):

View File

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