bizcochito.onion/webpage/views.py

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)