feat(market): enable/disable like any other games
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
from typing import List
|
||||
from ninja import Router
|
||||
from ninja.decorators import decorate_view
|
||||
from ninja.errors import HttpError
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.db.models import Sum, Prefetch
|
||||
from django.db.models.functions import Coalesce
|
||||
from django.db import transaction
|
||||
|
||||
from games.decorators import require_game_enabled
|
||||
from market.models import (
|
||||
Market,
|
||||
MarketOption,
|
||||
@@ -29,6 +31,7 @@ PREFIX = "/events/{event_path}/market"
|
||||
|
||||
|
||||
@router.get(f"{PREFIX}/", response=List[MarketListSchema])
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def list_markets(request, event_path: str):
|
||||
"""List all markets (excludes draft markets)."""
|
||||
markets = Market.for_event.exclude(status=Market.Status.DRAFT)
|
||||
@@ -41,6 +44,7 @@ def list_markets(request, event_path: str):
|
||||
|
||||
|
||||
@router.get(f"{PREFIX}/user/bets", response=List[UserBetSchema])
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def list_user_bets(request, event_path: str):
|
||||
"""List all bets placed by the current user."""
|
||||
if not request.user.is_authenticated:
|
||||
@@ -54,6 +58,7 @@ def list_user_bets(request, event_path: str):
|
||||
|
||||
|
||||
@router.get(f"{PREFIX}/user/points", response=UserPointsSchema)
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def get_user_points(request, event_path: str):
|
||||
"""Get the current user's points balance for this event."""
|
||||
if not request.user.is_authenticated:
|
||||
@@ -63,6 +68,7 @@ def get_user_points(request, event_path: str):
|
||||
|
||||
|
||||
@router.get(f"{PREFIX}/{{market_uuid}}/history", response=List[BetHistoryPointSchema])
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def bet_history(request, event_path: str, market_uuid: str):
|
||||
"""Points added to each option over time (anonymous, one entry per bet placed/increased)."""
|
||||
market = get_object_or_404(
|
||||
@@ -93,6 +99,7 @@ def bet_history(request, event_path: str, market_uuid: str):
|
||||
|
||||
|
||||
@router.post(f"{PREFIX}/{{market_uuid}}/actions/close")
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def close_market(request, event_path: str, market_uuid: str):
|
||||
"""Close a market. Admin only."""
|
||||
if not request.user.is_staff:
|
||||
@@ -105,6 +112,7 @@ def close_market(request, event_path: str, market_uuid: str):
|
||||
|
||||
|
||||
@router.post(f"{PREFIX}/{{market_uuid}}/actions/resolve", response=MarketListSchema)
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def resolve_market(
|
||||
request, event_path: str, market_uuid: str, payload: ResolveMarketSchema
|
||||
):
|
||||
@@ -172,6 +180,7 @@ def resolve_market(
|
||||
|
||||
|
||||
@router.post(f"{PREFIX}/{{market_uuid}}/bets", response=UserBetSchema)
|
||||
@decorate_view(require_game_enabled(path="market"))
|
||||
def create_bet(
|
||||
request, event_path: str, market_uuid: str, payload: UserBetCreateSchema
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user