import datetime import django.utils.timezone from django.http import HttpRequest, HttpResponseRedirect from django.shortcuts import render from django.urls import reverse from django.core.cache import cache from .models import Tobacco, TobaccoCategory, ClubhausEvent def tobacco(request: HttpRequest) -> django.http.HttpResponse: test_image = Tobacco.objects.first().picture context = {'tobaccos': Tobacco.objects.all(), 'categories': TobaccoCategory.objects.all(), 'pic': test_image} return render(request, 'homepage/index.html', context) def events(request: HttpRequest) -> django.http.HttpResponse: yesterday = django.utils.timezone.now() - datetime.timedelta(days=1) next_events = ClubhausEvent.objects.filter(date__gte=yesterday).order_by('-date') next_event = next_events[0] if next_events else None return render(request, 'homepage/events.html', {'next_event': next_event}) def landing(request: HttpRequest) -> django.http.HttpResponse: return render(request, 'homepage/landingpage.html', {}) def voting(request: HttpRequest) -> django.http.HttpResponse: request.session.clear_expired() ip = request.META.get("REMOTE_ADDR") rate_cache: django.core.cache.BaseCache = cache if ip not in rate_cache: rate_cache.add(f"voting_block_{ip}", 0, 15) rate_cache.incr(f"voting_block_{ip}") if request.method == "GET": return render(request, 'homepage/voting.html', {"ip": ip, "request_count": rate_cache.get(f"voting_block_{ip}"), "session": request.session}) elif request.method == "POST": key = request.POST["key"] value = request.POST["value"] request.session[key] = value return render(request, 'homepage/voting.html', {"ip": ip, "session": request.session}) # return HttpResponseRedirect(reverse("index"))