booksing write done!

This commit is contained in:
Alie 2023-06-22 10:27:56 +02:00
parent 3b9549a9f0
commit e349050758
4 changed files with 69 additions and 29 deletions

View File

@ -0,0 +1,15 @@
from django import forms
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as txt
class SignbookForm(forms.Form):
name = forms.CharField(label="Name")
website = forms.CharField(label="Website", required=False)
email = forms.EmailField(label="Email", required=False)
comment = forms.CharField(label="Comment", required=False)
capcha = forms.CharField(label="Tell me that you love 'me'")
def validate_capcha(self):
if self.cleaned_data["capcha"].lower() != "i love me":
raise ValidationError(txt('Invalid captcha'))
return self

View File

@ -1,6 +1,4 @@
from django.db import models from django.db import models
from django.utils import timezone
from django.contrib import admin
# Create your models here. # Create your models here.
class Booksigner(models.Model): class Booksigner(models.Model):

View File

@ -41,28 +41,11 @@
<p> <p>
<p> <p>
<form method="post" action=""> <form method="post" action="">
<div> {% csrf_token %}
Name: {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<input type="text" name="name" /> <table>
<span class="error">*</span> {{ form.as_table }}
</div> </table>
<div>
Website:
<input type="text" name="website" />
</div>
<div>
E-mail:
<input type="text" name="email" />
</div>
<div>
Comment:
<textarea name="comment" rows="1"></textarea>
</div>
<p>
Capcha(Say that you love "me"):
<input type="text" name="capcha" />
<span class="error">*</span>
</p>
<input type="submit" /> <input type="submit" />
</form> </form>
</p> </p>

View File

@ -1,8 +1,9 @@
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound, HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
import os, random import os, random
from .models import Booksigner from .models import Booksigner
from .forms import SignbookForm
def image_dict_from_name_list(name_list: list[str]): def image_dict_from_name_list(name_list: list[str]):
dict_list = [] dict_list = []
@ -45,9 +46,52 @@ def about(request):
def signbook(request): def signbook(request):
signer_list = Booksigner.objects.all() signer_list = Booksigner.objects.all()
if request.method == 'POST':
context = { form = SignbookForm(request.POST)
if form.is_valid():
newsigner = {}
newsigner["name"] = form.cleaned_data['name']
newsigner["website"] = form.cleaned_data['website']
newsigner["email"] = form.cleaned_data['email']
newsigner["comment"] = form.cleaned_data['comment']
host = request.META["SERVER_NAME"]
print(host)
match host:
case "localhost":
newsigner["hosting"] = "Local"
case r".*\.fai.st":
newsigner["hosting"] = "fai"
case _:
newsigner["hosting"] = "???"
signer_list = Booksigner.objects.all()
if newsigner:
Booksigner.objects.create(
name=newsigner["name"],
email=newsigner["email"],
website=newsigner["website"],
comment=newsigner["comment"],
hosting=newsigner["hosting"],
)
context = {
"title": "THE GUESTBOOK",
"signer_list": signer_list
}
return render(request, "signbook.html", context)
context = {
"title": "THE GUESTBOOK", "title": "THE GUESTBOOK",
"signer_list": signer_list "signer_list": signer_list,
"error_message": "You didn't input a required input.",
} }
return render(request, "signbook.html", context) return render(
request,
"signbook.html",
context
)
else:
context = {
"title": "THE GUESTBOOK",
"signer_list": signer_list,
"form": SignbookForm()
}
return render(request, "signbook.html", context)