Skip to content

Commit

Permalink
Uncrispify (External)AccountForm in useradmin
Browse files Browse the repository at this point in the history
The information box about externally managed accounts is moved into HTML templates
  • Loading branch information
johannaengland committed Nov 13, 2024
1 parent 25b77fe commit 4d8eea0
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 41 deletions.
2 changes: 1 addition & 1 deletion python/nav/web/templates/useradmin/account_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ <h4>
{% comment %} ACCOUNT FORM {% endcomment %}
{% if account_form %}
<div class="column medium-6 large-3">
{% crispy account_form %}
{% include 'custom_crispy_templates/flat_form.html' with form=account_form %}
</div>
{% endif %}

Expand Down
79 changes: 39 additions & 40 deletions python/nav/web/useradmin/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
Row,
Column,
Field,
HTML,
)
from nav.web.crispyforms import (
set_flat_form_attributes,
Expand Down Expand Up @@ -97,31 +96,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):
Expand Down Expand Up @@ -153,29 +154,27 @@ 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 = (
"<p class='alert-box'>External authenticator: %s</p>"
% 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",
)
],
)


Expand Down

0 comments on commit 4d8eea0

Please sign in to comment.