+ 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,
+ )