from functools import wraps from django.core.exceptions import PermissionDenied from django.shortcuts import get_object_or_404 from events.models import Event from .models import Game def require_game_enabled(steam_app_id: int): def decorator(view_func): @wraps(view_func) def wrapper(request, *args, **kwargs): event = get_object_or_404(Event, path=kwargs.get("event_path")) if ( not Game.objects.enabled_for_event(event) .filter(steam_app_id=steam_app_id) .exists() ): raise PermissionDenied return view_func(request, *args, **kwargs) return wrapper return decorator