new model fields & migrations for apps.epic & apps.lyric; new FTs, ITs & UTs passing
; some styling changes effected primarily to _gatekeetper.html modal
This commit is contained in:
@@ -5,8 +5,7 @@ from django.http import HttpResponse
|
||||
from django.shortcuts import redirect, render
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.epic.models import GateSlot, Room, RoomInvite, debit_token
|
||||
from apps.lyric.models import Token
|
||||
from apps.epic.models import GateSlot, Room, RoomInvite, debit_token, select_token
|
||||
|
||||
|
||||
RESERVE_TIMEOUT = timedelta(seconds=60)
|
||||
@@ -29,12 +28,14 @@ def _gate_context(room, user):
|
||||
if user.is_authenticated:
|
||||
user_reserved_slot = slots.filter(gamer=user, status=GateSlot.RESERVED).first()
|
||||
user_filled_slot = slots.filter(gamer=user, status=GateSlot.FILLED).first()
|
||||
can_drop = (
|
||||
eligible = (
|
||||
user.is_authenticated
|
||||
and pending_slot is None
|
||||
and user_reserved_slot is None
|
||||
and user_filled_slot is None
|
||||
)
|
||||
token_depleted = eligible and select_token(user) is None
|
||||
can_drop = eligible and not token_depleted
|
||||
is_last_slot = (
|
||||
user_reserved_slot is not None
|
||||
and slots.filter(status=GateSlot.EMPTY).count() == 0
|
||||
@@ -46,6 +47,7 @@ def _gate_context(room, user):
|
||||
"user_reserved_slot": user_reserved_slot,
|
||||
"user_filled_slot": user_filled_slot,
|
||||
"can_drop": can_drop,
|
||||
"token_depleted": token_depleted,
|
||||
"is_last_slot": is_last_slot,
|
||||
"user_can_reject": user_can_reject,
|
||||
}
|
||||
@@ -76,6 +78,8 @@ def drop_token(request, room_id):
|
||||
return redirect("epic:gatekeeper", room_id=room_id)
|
||||
if room.gate_slots.filter(gamer=request.user, status=GateSlot.FILLED).exists():
|
||||
return redirect("epic:gatekeeper", room_id=room_id)
|
||||
if select_token(request.user) is None:
|
||||
return HttpResponse(status=402)
|
||||
slot = room.gate_slots.filter(
|
||||
status=GateSlot.EMPTY
|
||||
).order_by("slot_number").first()
|
||||
@@ -95,11 +99,7 @@ def confirm_token(request, room_id):
|
||||
gamer=request.user, status=GateSlot.RESERVED
|
||||
).first()
|
||||
if slot:
|
||||
token = (
|
||||
request.user.tokens.filter(token_type=Token.COIN).first()
|
||||
or request.user.tokens.filter(token_type=Token.FREE).first()
|
||||
or request.user.tokens.filter(token_type=Token.TITHE).first()
|
||||
)
|
||||
token = select_token(request.user)
|
||||
if token:
|
||||
debit_token(request.user, slot, token)
|
||||
return redirect("epic:gatekeeper", room_id=room_id)
|
||||
|
||||
Reference in New Issue
Block a user