X-Git-Url: https://code.kerkeslager.com/?p=txt.house;a=blobdiff_plain;f=txt_house%2Fviews.py;fp=txt_house%2Fviews.py;h=7a1f0788df386adf105f03d61371476391688960;hp=5a8f922fbde7c8a03021f14d05d7a742f6795752;hb=9b232a209ae57cea33a0156a5c4cac7e72edda8f;hpb=3cdbc0aa5864867577563b5b3a699d47cac79770 diff --git a/txt_house/views.py b/txt_house/views.py index 5a8f922..7a1f078 100644 --- a/txt_house/views.py +++ b/txt_house/views.py @@ -2,7 +2,7 @@ import base64 import secrets from django.http import HttpResponse, Http404 -from django.shortcuts import get_object_or_404, redirect, render +from django.shortcuts import get_object_or_404, render from . import models @@ -21,7 +21,15 @@ def create(request): tf = models.TextFile(text=text, edit_key=secrets.token_urlsafe()) tf.save() - return redirect(tf.get_absolute_url()) + return render( + request, + 'edit.html', + { + 'text_file': tf, + 'text': tf.text, + 'edit_key': tf.edit_key, + }, + ) def text_file(request, pk): if request.method != 'GET': @@ -31,4 +39,49 @@ def text_file(request, pk): tf = get_object_or_404(models.TextFile, pk=pk_int) - return HttpResponse(tf.text) + if request.GET.get('raw'): + return HttpResponse(tf.text, content_type='text/plain') + + font = request.GET.get('font', 'sans') + + return render( + request, + 'text_file.html', + { + 'text_file': tf, + 'font': font, + 'text': tf.text.strip(), + }, + ) + +def edit(request, pk): + pk_int = int.from_bytes(base64.urlsafe_b64decode(pk), 'big') + + tf = get_object_or_404(models.TextFile, pk=pk_int) + + context = { + 'text_file': tf, + } + + if request.method == 'POST': + edit_key = request.POST.get('edit_key','') + text = request.POST.get('text','') + + context['text'] = text + + if secrets.compare_digest(edit_key, tf.edit_key): + context['edit_key'] = edit_key + tf.text = text + tf.save() + + else: + context['incorrect_key'] = True + + elif request.method == 'GET': + context['text'] = tf.text + + return render( + request, + 'edit.html', + context, + )