113 lines
4.0 KiB
Python
Executable File
113 lines
4.0 KiB
Python
Executable File
import os
|
|
import random
|
|
|
|
from django.forms import ValidationError
|
|
from django.http import HttpResponseNotFound
|
|
from django.shortcuts import render
|
|
|
|
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)
|