new apps.epic app migrations for token expiration & cooldown; reject token renamed to return token everywhere; new mapps.epic.models & .views for expiration & cooldown; new apps.dash.views to manage stacking of like Token types not just in the kit bag but in the Gameboard's Game Kit applet & in the Dashwallet's Tokens applet; Free Tokens now display correctly in kit bag; apps.lyric.admin now ensures superuser cannot grant Free Tokens without an expiration date; corresponding tests in .tests.integrated.test_admin.TokenAdminFormTest; screendumps occurring for every test, regardless of passfail status, after one fail fixed in FTs.base; FTs.test_gatekeeper.GameKitInsertTest.test_free_token_insert_via_kit_consumed_on_confirm, for test purposes only, ensures starting Free Token deleted before fresh one assigned w. full 7d expiration battery
This commit is contained in:
@@ -65,6 +65,8 @@ class GateSlot(models.Model):
|
||||
status = models.CharField(max_length=10, choices=STATUS_CHOICES, default=EMPTY)
|
||||
reserved_at = models.DateTimeField(null=True, blank=True)
|
||||
filled_at = models.DateTimeField(null=True, blank=True)
|
||||
debited_token_type = models.CharField(max_length=8, null=True, blank=True)
|
||||
debited_token_expires_at = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
|
||||
class RoomInvite(models.Model):
|
||||
@@ -111,12 +113,14 @@ def select_token(user):
|
||||
|
||||
|
||||
def debit_token(user, slot, token):
|
||||
slot.debited_token_type = token.token_type
|
||||
if token.token_type == Token.COIN:
|
||||
token.current_room = slot.room
|
||||
period = slot.room.renewal_period or timedelta(days=7)
|
||||
token.next_ready_at = timezone.now() + period
|
||||
token.save()
|
||||
elif token.token_type != Token.PASS:
|
||||
slot.debited_token_expires_at = token.expires_at
|
||||
token.delete()
|
||||
slot.gamer = user
|
||||
slot.status = GateSlot.FILLED
|
||||
|
||||
Reference in New Issue
Block a user