new migrations in apps.epic app; new models, urls, views handle the founder of a New Game inviting a friend via email to a game gatekeeper; ea. may drop coin in any of up to 6 avail. slots; FTs & ITs passing

This commit is contained in:
Disco DeDisco
2026-03-13 18:37:19 -04:00
parent 6a42b91420
commit e0d1f51bf1
8 changed files with 159 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect, render
from apps.epic.models import Room, debit_token
from apps.epic.models import Room, RoomInvite, debit_token
from apps.lyric.models import Token
@@ -17,9 +17,14 @@ def create_room(request):
def gatekeeper(request, room_id):
room = Room.objects.get(id=room_id)
slots = room.gate_slots.order_by("slot_number")
user_has_slot = (
request.user.is_authenticated
and room.gate_slots.filter(gamer=request.user).exists()
)
return render(request, "apps/gameboard/room.html", {
'room': room,
'slots': slots,
"room": room,
"slots": slots,
"user_has_slot": user_has_slot,
})
@login_required
@@ -35,3 +40,17 @@ def drop_token(request, room_id, slot_number):
if token:
debit_token(request.user, slot, token)
return redirect("epic:gatekeeper", room_id=room_id)
@login_required
def invite_gamer(request, room_id):
if request.method == "POST":
room = Room.objects.get(id=room_id)
email = request.POST.get("invitee_email", "").strip()
if email:
RoomInvite.objects.get_or_create(
room=room,
inviter=request.user,
invitee_email=email,
defaults={"status": RoomInvite.PENDING}
)
return redirect("epic:gatekeeper", room_id=room_id)