game kit page: four 6×3 applets (trinkets, tokens, card decks, dice sets) with applet grid; tarot fan modal with coverflow, sessionStorage position memory, and 403 guard on locked decks; unlocked_decks M2M on User with backfill migration; game kit icon wrap fix; tarot_deck.html moved to gameboard/ per template dir convention (now documented in CLAUDE.md); FTs 6–13, 2 new ITs; 360 passing [log Co-Authored-By: Claude Sonnet 4.6]
This commit is contained in:
@@ -100,3 +100,36 @@ def equip_deck(request, deck_id):
|
||||
request.user.save(update_fields=["equipped_deck"])
|
||||
return HttpResponse(status=204)
|
||||
return HttpResponse(status=405)
|
||||
|
||||
|
||||
@login_required(login_url="/")
|
||||
def game_kit(request):
|
||||
coin = request.user.tokens.filter(token_type=Token.COIN).first()
|
||||
pass_token = request.user.tokens.filter(token_type=Token.PASS).first() if request.user.is_staff else None
|
||||
carte = request.user.tokens.filter(token_type=Token.CARTE).first()
|
||||
free_tokens = list(request.user.tokens.filter(
|
||||
token_type=Token.FREE, expires_at__gt=timezone.now()
|
||||
).order_by("expires_at"))
|
||||
tithe_tokens = list(request.user.tokens.filter(token_type=Token.TITHE))
|
||||
return render(request, "apps/gameboard/game_kit.html", {
|
||||
"coin": coin,
|
||||
"pass_token": pass_token,
|
||||
"carte": carte,
|
||||
"free_tokens": free_tokens,
|
||||
"tithe_tokens": tithe_tokens,
|
||||
"unlocked_decks": list(request.user.unlocked_decks.all()),
|
||||
"page_class": "page-gameboard",
|
||||
})
|
||||
|
||||
|
||||
@login_required(login_url="/")
|
||||
def tarot_fan(request, deck_id):
|
||||
from apps.epic.models import TarotCard
|
||||
deck = get_object_or_404(DeckVariant, pk=deck_id)
|
||||
if not request.user.unlocked_decks.filter(pk=deck_id).exists():
|
||||
return HttpResponse(status=403)
|
||||
cards = list(TarotCard.objects.filter(deck_variant=deck).order_by("arcana", "number"))
|
||||
return render(request, "apps/gameboard/_partials/_tarot_fan.html", {
|
||||
"deck": deck,
|
||||
"cards": cards,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user