diff --git a/python/nav/web/templates/useradmin/account_detail.html b/python/nav/web/templates/useradmin/account_detail.html
index 718efaa2e4..d22fdcd8f1 100644
--- a/python/nav/web/templates/useradmin/account_detail.html
+++ b/python/nav/web/templates/useradmin/account_detail.html
@@ -63,7 +63,7 @@
{% comment %} ACCOUNT FORM {% endcomment %}
{% if account_form %}
- {% crispy account_form %}
+ {% include 'custom_crispy_templates/flat_form.html' with form=account_form %}
{% endif %}
diff --git a/python/nav/web/useradmin/forms.py b/python/nav/web/useradmin/forms.py
index 225ac3aa70..854ec4ec00 100644
--- a/python/nav/web/useradmin/forms.py
+++ b/python/nav/web/useradmin/forms.py
@@ -29,10 +29,10 @@
Row,
Column,
Field,
- HTML,
)
from nav.web.crispyforms import (
set_flat_form_attributes,
+ FlatFieldset,
FormColumn,
FormRow,
SubmitField,
@@ -90,31 +90,33 @@ class AccountForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AccountForm, self).__init__(*args, **kwargs)
account = kwargs.get('instance', False)
- self.helper = FormHelper()
- self.helper.form_action = ''
- self.helper.form_method = 'POST'
if account:
self.fields['password1'].required = False
- submit_value = 'Save changes'
if kwargs["instance"].id == Account.DEFAULT_ACCOUNT:
# We don't want to enable significant changes to the anonymous account
self.fields["password1"].widget.attrs["readonly"] = True
self.fields["password2"].widget.attrs["readonly"] = True
self.fields["login"].widget.attrs["readonly"] = True
- else:
- submit_value = 'Create account'
- self.helper.layout = Layout(
- Fieldset(
- 'Account',
- 'login',
- 'name',
- 'password1',
- 'password2',
- Submit('submit_account', submit_value, css_class='small'),
- )
+ submit_value = "Save changes" if account else "Create account"
+
+ self.attrs = set_flat_form_attributes(
+ form_fields=[
+ FlatFieldset(
+ legend="Account",
+ fields=[
+ self["login"],
+ self["name"],
+ self["password1"],
+ self["password2"],
+ SubmitField(
+ "submit_account", submit_value, css_classes="small"
+ ),
+ ],
+ )
+ ],
)
def clean_password1(self):
@@ -144,29 +146,27 @@ class Meta(object):
class ExternalAccountForm(AccountForm):
def __init__(self, *args, **kwargs):
super(AccountForm, self).__init__(*args, **kwargs)
- self.helper = FormHelper()
- self.helper.form_action = ''
- self.helper.form_method = 'POST'
-
- if kwargs['instance'].ext_sync:
- # We don't want to enable local password editing for accounts that are
- # managed externally.
- authenticator = (
- "External authenticator: %s
"
- % kwargs["instance"].ext_sync
- )
- del self.fields['password1']
- del self.fields['password2']
- self.fields['login'].widget.attrs['readonly'] = True
- self.helper.layout = Layout(
- Fieldset(
- 'Account',
- 'login',
- 'name',
- HTML(authenticator),
- Submit('submit_account', 'Save changes', css_class='small'),
- )
+ # We don't want to enable local password editing for accounts that are
+ # managed externally.
+ del self.fields['password1']
+ del self.fields['password2']
+ self.fields['login'].widget.attrs['readonly'] = True
+
+ self.attrs = set_flat_form_attributes(
+ form_fields=[
+ FlatFieldset(
+ legend="Account",
+ fields=[
+ self["login"],
+ self["name"],
+ SubmitField(
+ "submit_account", "Save changes", css_classes="small"
+ ),
+ ],
+ template="useradmin/frag-external-account-fieldset.html",
+ )
+ ],
)