new _kit_bag_panel.html partial in core to allow user to manage equipped kit items from anywhere on site; #id_kit_btn moved from _footer.html partial directly into a base.html include; new trinket for superusers now incl. in apps.lyric.models; apps.gameboard.views handles this new type of PASS token; apps.epic.views allows payment with several different token types based on rarity & expiration hierarchy; kit bag and PASS functionality now handled in apps.dashboard.views; /kit-bag/ now pathed in .urls; styles abound; fully passing test suite (tho much work to be done, chiefly with stacking like coins in FEFO order)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Disco DeDisco
2026-03-15 01:17:09 -04:00
parent 4baaa63430
commit 2d453dbc78
16 changed files with 521 additions and 23 deletions

View File

@@ -78,7 +78,12 @@ 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:
token_id = request.POST.get("token_id")
if token_id:
token = request.user.tokens.filter(id=token_id).first()
else:
token = select_token(request.user)
if token is None:
return HttpResponse(status=402)
slot = room.gate_slots.filter(
status=GateSlot.EMPTY
@@ -88,6 +93,7 @@ def drop_token(request, room_id):
slot.status = GateSlot.RESERVED
slot.reserved_at = timezone.now()
slot.save()
request.session["kit_token_id"] = str(token.id)
return redirect("epic:gatekeeper", room_id=room_id)
@@ -99,7 +105,12 @@ def confirm_token(request, room_id):
gamer=request.user, status=GateSlot.RESERVED
).first()
if slot:
token = select_token(request.user)
token_id = request.session.pop("kit_token_id", None)
token = None
if token_id:
token = request.user.tokens.filter(id=token_id).first()
if not token:
token = select_token(request.user)
if token:
debit_token(request.user, slot, token)
return redirect("epic:gatekeeper", room_id=room_id)