from django.contrib.auth.decorators import login_required from django.shortcuts import redirect, render from apps.epic.models import Room, debit_token from apps.lyric.models import Token @login_required def create_room(request): if request.method == "POST": name = request.POST.get("name", "").strip() if name: room = Room.objects.create(name=name, owner=request.user) return redirect("epic:gatekeeper", room_id=room.id) return redirect("gameboard:index") def gatekeeper(request, room_id): room = Room.objects.get(id=room_id) slots = room.gate_slots.order_by("slot_number") return render(request, "apps/gameboard/room.html", { 'room': room, 'slots': slots, }) @login_required def drop_token(request, room_id, slot_number): if request.method == "POST": room = Room.objects.get(id=room_id) slot = room.gate_slots.get(slot_number=slot_number) 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() ) if token: debit_token(request.user, slot, token) return redirect("epic:gatekeeper", room_id=room_id)