28 lines
721 B
Python
28 lines
721 B
Python
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
|