Use short uuids.
This commit is contained in:
parent
a02660c1f4
commit
81d2dd23ea
|
@ -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):
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user