diff --git a/netbox/secrets/forms.py b/netbox/secrets/forms.py index bcc79e2a5..8f8107805 100644 --- a/netbox/secrets/forms.py +++ b/netbox/secrets/forms.py @@ -58,17 +58,34 @@ class SecretRoleCSVForm(forms.ModelForm): # class SecretForm(BootstrapMixin, forms.ModelForm): - plaintext = forms.CharField(max_length=65535, required=False, label='Plaintext', - widget=forms.PasswordInput(attrs={'class': 'requires-session-key'})) - plaintext2 = forms.CharField(max_length=65535, required=False, label='Plaintext (verify)', - widget=forms.PasswordInput()) + plaintext = forms.CharField( + max_length=65535, + required=False, + label='Plaintext', + widget=forms.PasswordInput(attrs={'class': 'requires-session-key'}) + ) + plaintext2 = forms.CharField( + max_length=65535, + required=False, + label='Plaintext (verify)', + widget=forms.PasswordInput() + ) class Meta: model = Secret fields = ['role', 'name', 'plaintext', 'plaintext2'] + def __init__(self, *args, **kwargs): + + super(SecretForm, self).__init__(*args, **kwargs) + + # A plaintext value is required when creating a new Secret + if not self.instance.pk: + self.fields['plaintext'].required = True + def clean(self): + # Verify that the provided plaintext values match if self.cleaned_data['plaintext'] != self.cleaned_data['plaintext2']: raise forms.ValidationError({ 'plaintext2': "The two given plaintext values do not match. Please check your input."