new migrations in apps.epic & apps.lyric apps; new Token fields of latter articulate upon Room model helper fns of former; new FTs, ITs & UTs capture new behavior accordingly; new template partial content in templates/apps/gameboard
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
import uuid
|
||||
|
||||
from datetime import timedelta
|
||||
from django.db import models
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from django.conf import settings
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.lyric.models import Token
|
||||
|
||||
|
||||
class Room(models.Model):
|
||||
@@ -32,7 +36,7 @@ class Room(models.Model):
|
||||
)
|
||||
visibility = models.CharField(max_length=20, choices=VISIBILITY_CHOICES, default=PRIVATE)
|
||||
gate_status = models.CharField(max_length=20, choices=GATE_STATUS_CHOICES, default=GATHERING)
|
||||
renewal_period = models.DurationField(null=True, blank=True)
|
||||
renewal_period = models.DurationField(null=True, blank=True, default=timedelta(days=7))
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
board_state = models.JSONField(default=dict)
|
||||
seed_count = models.IntegerField(default=12)
|
||||
@@ -67,3 +71,16 @@ def create_gate_slots(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
for i in range(1, 7):
|
||||
GateSlot.objects.create(room=instance, slot_number=i)
|
||||
|
||||
|
||||
def debit_token(user, slot, token):
|
||||
if token.token_type == Token.COIN:
|
||||
token.current_room = slot.room
|
||||
token.next_ready_at = timezone.now() + slot.room.renewal_period
|
||||
token.save()
|
||||
else:
|
||||
token.delete()
|
||||
slot.gamer = user
|
||||
slot.status = GateSlot.FILLED
|
||||
slot.filled_at = timezone.now()
|
||||
slot.save()
|
||||
|
||||
Reference in New Issue
Block a user