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:
@@ -1,3 +1,4 @@
|
||||
from django import forms
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import LoginToken, Token, User
|
||||
@@ -7,6 +8,23 @@ class UserAdmin(admin.ModelAdmin):
|
||||
list_display = ["email"]
|
||||
search_fields = ["email"]
|
||||
|
||||
|
||||
class TokenAdminForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Token
|
||||
fields = "__all__"
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
if cleaned_data.get("token_type") == Token.FREE and not cleaned_data.get("expires_at"):
|
||||
raise forms.ValidationError("Free Tokens must have an expiration date.")
|
||||
return cleaned_data
|
||||
|
||||
|
||||
class TokenAdmin(admin.ModelAdmin):
|
||||
form = TokenAdminForm
|
||||
|
||||
|
||||
admin.site.register(User, UserAdmin)
|
||||
admin.site.register(LoginToken)
|
||||
admin.site.register(Token)
|
||||
admin.site.register(Token, TokenAdmin)
|
||||
|
||||
Reference in New Issue
Block a user