1
0
clubhaus-schornbach/clubhaus/homepage/views.py

47 lines
1.8 KiB
Python

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"))