website/webpage/views.py

111 lines
4.0 KiB
Python
Executable File

from django.forms import ValidationError
from django.http import HttpResponseNotFound, HttpResponseRedirect
from django.shortcuts import render
import os, random
from .models import Booksigner
from .forms import SignbookForm
def image_dict_from_name_list(name_list: list[str]):
dict_list = []
for name in name_list:
url = name.split(".")
url.pop()
url = ".".join(url)
dict_list.append({
"name": name,
"url": url
}
)
return dict_list
def index(request):
# Get random ad from ad dir
ad_list = os.listdir(os.path.join(os.path.dirname(os.path.dirname(__file__)), "webpage", "static/ads/hor/"))
ad = random.choice(ad_list)
# Get list of 81x33 icons
banner_list = image_dict_from_name_list(os.listdir(os.path.join(os.path.dirname(os.path.dirname(__file__)), "webpage", "static/icons/88x31/")))
# Get list of funni gifs
gif_list = image_dict_from_name_list(os.listdir(os.path.join(os.path.dirname(os.path.dirname(__file__)), "webpage", "static/icons/gif/")))
# Get list of banners
banger_list = image_dict_from_name_list(os.listdir(os.path.join(os.path.dirname(os.path.dirname(__file__)), "webpage", "static/icons/banner/")))
if not ad or not banner_list or not gif_list:
return HttpResponseNotFound()
else:
context = {
"title": "THE INDEX",
"ad": ad,
"banner_list": banner_list,
"gif_list": gif_list,
"banger_list": banger_list,
}
return render(request,"index.html", context)
def about(request):
return render(request, "about.html", {"title": "About Me"})
def signbook(request):
signer_list = Booksigner.objects.all()
if request.method == 'POST':
form = SignbookForm(request.POST)
try:
if form.is_valid() and form.validate_capcha():
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",
"signer_list": signer_list,
"error_message": "You didn't input a required input.",
}
return render(
request,
"signbook.html",
context
)
except ValidationError as e:
print("Error: ", e)
context = {
"title": "THE GUESTBOOK",
"signer_list": signer_list,
"error_message": "Invalid captcha.",
}
return render(
request,
"signbook.html",
context
)
else:
context = {
"title": "THE GUESTBOOK",
"signer_list": signer_list,
"form": SignbookForm()
}
return render(request, "signbook.html", context)