import datetime import django.utils.timezone from django.core.cache import cache from django.http import HttpRequest from django.shortcuts import render from .models import Tobacco, ClubhausEvent def index(request: HttpRequest) -> django.http.HttpResponse: return render(request, 'homepage/index.html', {}) def tobacco(request: HttpRequest) -> django.http.HttpResponse: context = {'tobaccos': Tobacco.objects.all().order_by('-in_stock')} return render(request, 'homepage/tobacco.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 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"))