Clean up TokenForm

This commit is contained in:
Jeremy Stretch
2025-10-03 10:45:54 -04:00
parent ac335c3d87
commit 6388705e57
2 changed files with 7 additions and 14 deletions

View File

@@ -8,6 +8,7 @@ from users.models import Group, ObjectPermission, Token, User
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm
from utilities.forms.fields import DynamicModelMultipleChoiceField from utilities.forms.fields import DynamicModelMultipleChoiceField
from utilities.forms.rendering import FieldSet from utilities.forms.rendering import FieldSet
from utilities.forms.utils import add_blank_choice
from utilities.forms.widgets import DateTimePicker from utilities.forms.widgets import DateTimePicker
__all__ = ( __all__ = (
@@ -114,7 +115,7 @@ class TokenFilterForm(SavedFiltersMixin, FilterForm):
FieldSet('version', 'user_id', 'write_enabled', 'expires', 'last_used', name=_('Token')), FieldSet('version', 'user_id', 'write_enabled', 'expires', 'last_used', name=_('Token')),
) )
version = forms.ChoiceField( version = forms.ChoiceField(
choices=TokenVersionChoices, choices=add_blank_choice(TokenVersionChoices),
required=False, required=False,
) )
user_id = DynamicModelMultipleChoiceField( user_id = DynamicModelMultipleChoiceField(

View File

@@ -16,11 +16,7 @@ from users.choices import TokenVersionChoices
from users.constants import * from users.constants import *
from users.models import * from users.models import *
from utilities.data import flatten_dict from utilities.data import flatten_dict
from utilities.forms.fields import ( from utilities.forms.fields import ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, JSONField
ContentTypeMultipleChoiceField,
DynamicModelMultipleChoiceField,
JSONField,
)
from utilities.forms.rendering import FieldSet from utilities.forms.rendering import FieldSet
from utilities.forms.widgets import DateTimePicker, SplitMultiSelectWidget from utilities.forms.widgets import DateTimePicker, SplitMultiSelectWidget
from utilities.permissions import qs_filter_from_constraints from utilities.permissions import qs_filter_from_constraints
@@ -155,17 +151,17 @@ class UserTokenForm(forms.ModelForm):
# Omit the key field when editing an existing token if token retrieval is not permitted # Omit the key field when editing an existing token if token retrieval is not permitted
if self.instance.v1 and settings.ALLOW_TOKEN_RETRIEVAL: if self.instance.v1 and settings.ALLOW_TOKEN_RETRIEVAL:
self.fields['token'].initial = self.instance.key self.initial['token'] = self.instance.plaintext
else: else:
del self.fields['token'] del self.fields['token']
# Generate an initial random key if none has been specified # Generate an initial random key if none has been specified
if self.instance._state.adding and not self.initial.get('token'): elif self.instance._state.adding and not self.initial.get('token'):
self.initial['version'] = TokenVersionChoices.V2 self.initial['version'] = TokenVersionChoices.V2
self.initial['token'] = Token.generate() self.initial['token'] = Token.generate()
def save(self, commit=True): def save(self, commit=True):
if self.cleaned_data.get('token'): if self.instance._state.adding and self.cleaned_data.get('token'):
self.instance.token = self.cleaned_data['token'] self.instance.token = self.cleaned_data['token']
return super().save(commit=commit) return super().save(commit=commit)
@@ -177,14 +173,10 @@ class TokenForm(UserTokenForm):
label=_('User') label=_('User')
) )
class Meta: class Meta(UserTokenForm.Meta):
model = Token
fields = [ fields = [
'version', 'token', 'user', 'write_enabled', 'expires', 'description', 'allowed_ips', 'version', 'token', 'user', 'write_enabled', 'expires', 'description', 'allowed_ips',
] ]
widgets = {
'expires': DateTimePicker(),
}
class UserForm(forms.ModelForm): class UserForm(forms.ModelForm):