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) 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 ) else: context = { "title": "THE GUESTBOOK", "signer_list": signer_list, "form": SignbookForm() } return render(request, "signbook.html", context)