Bläddra i källkod

Clean up TokenForm

Jeremy Stretch 4 månader sedan
förälder
incheckning
6388705e57
2 ändrade filer med 7 tillägg och 14 borttagningar
  1. 2 1
      netbox/users/forms/filtersets.py
  2. 5 13
      netbox/users/forms/model_forms.py

+ 2 - 1
netbox/users/forms/filtersets.py

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

+ 5 - 13
netbox/users/forms/model_forms.py

@@ -16,11 +16,7 @@ from users.choices import TokenVersionChoices
 from users.constants import *
 from users.models import *
 from utilities.data import flatten_dict
-from utilities.forms.fields import (
-    ContentTypeMultipleChoiceField,
-    DynamicModelMultipleChoiceField,
-    JSONField,
-)
+from utilities.forms.fields import ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, JSONField
 from utilities.forms.rendering import FieldSet
 from utilities.forms.widgets import DateTimePicker, SplitMultiSelectWidget
 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
             if self.instance.v1 and settings.ALLOW_TOKEN_RETRIEVAL:
-                self.fields['token'].initial = self.instance.key
+                self.initial['token'] = self.instance.plaintext
             else:
                 del self.fields['token']
 
         # 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['token'] = Token.generate()
 
     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']
 
         return super().save(commit=commit)
@@ -177,14 +173,10 @@ class TokenForm(UserTokenForm):
         label=_('User')
     )
 
-    class Meta:
-        model = Token
+    class Meta(UserTokenForm.Meta):
         fields = [
             'version', 'token', 'user', 'write_enabled', 'expires', 'description', 'allowed_ips',
         ]
-        widgets = {
-            'expires': DateTimePicker(),
-        }
 
 
 class UserForm(forms.ModelForm):