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