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():
            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)
