refine closed-page and configure test window
This commit is contained in:
+32
-17
@@ -19,9 +19,11 @@ from gaehsnitz.models import Consumption, Donation, Drink, Payment, UserPayment,
|
||||
User = get_user_model()
|
||||
|
||||
BERLIN = ZoneInfo("Europe/Berlin")
|
||||
BOOKING_START = datetime(2026, 6, 11, 0, 0, 0, tzinfo=BERLIN)
|
||||
BOOKING_END = datetime(2026, 6, 14, 23, 59, 59, tzinfo=BERLIN)
|
||||
READONLY_END = datetime(2026, 6, 21, 23, 59, 59, tzinfo=BERLIN)
|
||||
# TEST WINDOW (2026-05-15 – 2026-05-31): enabled early for pre-festival testing.
|
||||
# Original festival phase: BOOKING_START = 2026-06-11, BOOKING_END = 2026-06-14.
|
||||
# Switch back to original dates before the festival.
|
||||
BOOKING_START = datetime(2026, 5, 15, 0, 0, 0, tzinfo=BERLIN)
|
||||
BOOKING_END = datetime(2026, 5, 31, 23, 59, 59, tzinfo=BERLIN)
|
||||
|
||||
DAY_BY_WEEKDAY = {3: 1, 4: 2, 5: 3, 6: 4}
|
||||
|
||||
@@ -38,17 +40,15 @@ def _phase():
|
||||
return "before"
|
||||
if now <= BOOKING_END:
|
||||
return "booking"
|
||||
if now <= READONLY_END:
|
||||
return "readonly"
|
||||
return "closed"
|
||||
|
||||
|
||||
def _require_open(request):
|
||||
"""Raise 404 once tool is fully closed. Return current phase otherwise."""
|
||||
"""Redirect to closed page when tool is not in booking phase."""
|
||||
phase = _phase()
|
||||
if phase == "closed":
|
||||
raise Http404
|
||||
return phase
|
||||
if phase in ("before", "closed"):
|
||||
return HttpResponseRedirect(reverse("suff:closed")), None
|
||||
return None, phase
|
||||
|
||||
|
||||
def _current_festival_day():
|
||||
@@ -84,7 +84,9 @@ def _tab_context(user):
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def name_view(request):
|
||||
phase = _require_open(request)
|
||||
redirect, phase = _require_open(request)
|
||||
if redirect:
|
||||
return redirect
|
||||
if request.user.is_authenticated:
|
||||
return HttpResponseRedirect(reverse("suff:me"))
|
||||
|
||||
@@ -121,7 +123,9 @@ def name_view(request):
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def pin_view(request):
|
||||
phase = _require_open(request)
|
||||
redirect, phase = _require_open(request)
|
||||
if redirect:
|
||||
return redirect
|
||||
username = request.session.get("pending_username")
|
||||
mode = request.session.get("pending_mode")
|
||||
if not username or mode not in ("create", "login"):
|
||||
@@ -172,7 +176,9 @@ def pin_view(request):
|
||||
@login_required
|
||||
@require_http_methods(["GET"])
|
||||
def me_view(request):
|
||||
phase = _require_open(request)
|
||||
redirect, phase = _require_open(request)
|
||||
if redirect:
|
||||
return redirect
|
||||
drinks = (
|
||||
Drink.objects.filter(year=current_year())
|
||||
.annotate(
|
||||
@@ -214,7 +220,9 @@ def me_view(request):
|
||||
@login_required
|
||||
@require_http_methods(["POST"])
|
||||
def book_view(request):
|
||||
phase = _require_open(request)
|
||||
redirect, phase = _require_open(request)
|
||||
if redirect:
|
||||
return redirect
|
||||
if phase != "booking":
|
||||
raise Http404
|
||||
|
||||
@@ -237,9 +245,9 @@ def book_view(request):
|
||||
@login_required
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def pay_view(request):
|
||||
phase = _require_open(request)
|
||||
if phase == "before":
|
||||
raise Http404
|
||||
redirect, phase = _require_open(request)
|
||||
if redirect:
|
||||
return redirect
|
||||
|
||||
error = None
|
||||
if request.method == "POST":
|
||||
@@ -379,6 +387,13 @@ def dashboard_view(request):
|
||||
|
||||
@require_http_methods(["POST"])
|
||||
def logout_view(request):
|
||||
_require_open(request)
|
||||
logout(request)
|
||||
return HttpResponseRedirect(reverse("suff:name"))
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
def closed_view(request):
|
||||
phase = _phase()
|
||||
if phase == "booking":
|
||||
return HttpResponseRedirect(reverse("suff:name"))
|
||||
return render(request, "suff/closed.html", {"phase": phase, "booking_start": BOOKING_START})
|
||||
|
||||
Reference in New Issue
Block a user