From 6b2545c0fc30fe47c03ed5bd6ff23b50a5e8642f Mon Sep 17 00:00:00 2001 From: grisel-davy Date: Thu, 31 Dec 2020 10:44:29 +0100 Subject: [PATCH] check existing slug and uid, just in case --- litl/models.py | 2 +- litl/templates/base.html | 3 +++ litl/templates/display.html | 2 +- litl/views.py | 17 +++++++++++++---- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/litl/models.py b/litl/models.py index 6aa060e..83f1bea 100644 --- a/litl/models.py +++ b/litl/models.py @@ -25,6 +25,6 @@ class Slug(models.Model): auto_now=True,) def __str__(self): - return '{} -> {:.10}'.format(self.slug,self.destination) + return '{} -> {:.15}...'.format(self.slug,self.destination) diff --git a/litl/templates/base.html b/litl/templates/base.html index 7f1fba8..d0cbe92 100644 --- a/litl/templates/base.html +++ b/litl/templates/base.html @@ -6,6 +6,7 @@ + Litl. @@ -13,6 +14,8 @@
diff --git a/litl/templates/display.html b/litl/templates/display.html index e4f6eb6..fbc1b93 100644 --- a/litl/templates/display.html +++ b/litl/templates/display.html @@ -8,7 +8,7 @@

-

litl.auro.re/{{slug.slug}}

+

{{request.META.HTTP_HOST}}/{{slug.slug}}

diff --git a/litl/views.py b/litl/views.py index e231e30..a4c8eb2 100644 --- a/litl/views.py +++ b/litl/views.py @@ -27,9 +27,17 @@ def AddSlug(request): form = SlugAddForm(request.POST) if form.is_valid(): slug = form.save(commit=False) + if slug.slug == '': - slug.slug = ''.join(random.choice(ensemble) for _ in range(RANDOM_SLUG_LEN)) - slug.uid = ''.join(random.choice(ensemble) for _ in range(UID_LEN)) + while slug.slug=='': + rand_string = ''.join(random.choice(ensemble) for _ in range(RANDOM_SLUG_LEN)) + if not Slug.objects.filter(slug=rand_string).exists(): + slug.slug = rand_string + while slug.uid == None: + rand_uid = ''.join(random.choice(ensemble) for _ in range(UID_LEN)) + if not Slug.objects.filter(uid = rand_uid).exists(): + slug.uid = rand_uid + slug.save() return HttpResponseRedirect('display/{}'.format(slug.slug)) else: @@ -41,13 +49,14 @@ def display(request, slug_got): if slug.count()!=1: return render(request,'unknown.html',{'slug':slug_got}) else: - context = {'slug':slug.get()} + context = {'slug':slug.get(), 'request': request} return render(request,'display.html',context) def redirect(request,slug_got): slug = Slug.objects.filter(slug = slug_got).all() if slug.count()!=1: - return render(request,'unknown.html',{'slug':slug_got}) + context = {'slug':slug_got,'request': request} + return render(request,'unknown.html',context) else: return HttpResponseRedirect(slug.get().destination)