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

45 lines
1.7 KiB
Python
Raw Normal View History

import datetime
import django.utils.timezone
2022-07-30 18:02:05 +02:00
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', {})
2022-07-30 18:02:05 +02:00
def tobacco(request: HttpRequest) -> django.http.HttpResponse:
context = {'tobaccos': Tobacco.objects.all().order_by('in_stock').reverse()}
return render(request, 'homepage/tobacco.html', context)
2022-07-30 18:02:05 +02:00
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})
2022-07-30 18:02:05 +02:00
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"))