66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
from uuid import UUID
|
|
from django.http import HttpRequest, Http404
|
|
from django.shortcuts import redirect, render, get_object_or_404
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from events.models import Event
|
|
from games.models import Game
|
|
from .models import Scope
|
|
|
|
|
|
@login_required
|
|
def submission_home(request: HttpRequest, event_path: str, game_path: str):
|
|
event = get_object_or_404(Event, path=event_path)
|
|
game = get_object_or_404(Game, path=game_path)
|
|
|
|
scopes = (
|
|
Scope.objects.filter(
|
|
event_game__event=event,
|
|
event_game__game=game,
|
|
is_active=True,
|
|
)
|
|
if request.user.is_superuser
|
|
else Scope.objects.filter(
|
|
event_game__event=event,
|
|
event_game__game=game,
|
|
assigned_users=request.user,
|
|
is_active=True,
|
|
)
|
|
)
|
|
|
|
if scopes.count() == 1:
|
|
return redirect(
|
|
"submissions.view",
|
|
event_path=event.path,
|
|
game_path=game.path,
|
|
scope_id=scopes[0].id,
|
|
)
|
|
|
|
if not scopes:
|
|
raise Http404
|
|
|
|
return render(request, "app.html")
|
|
|
|
|
|
@login_required
|
|
def submission_view(
|
|
request: HttpRequest, event_path: str, game_path: str, scope_id: UUID
|
|
):
|
|
event = get_object_or_404(Event, path=event_path)
|
|
scope = get_object_or_404(
|
|
Scope.objects.select_related("event_game__game").prefetch_related(
|
|
"assigned_users"
|
|
),
|
|
id=scope_id,
|
|
event_game__game__path=game_path,
|
|
event_game__event=event,
|
|
)
|
|
|
|
if (
|
|
not request.user.is_superuser
|
|
and not scope.assigned_users.filter(pk=request.user.pk).exists()
|
|
):
|
|
raise Http404
|
|
|
|
return render(request, "app.html")
|