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 15, 2024
1 parent 76fde97 commit add0dff
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 48 deletions.
3 changes: 1 addition & 2 deletions python/nav/web/templates/useradmin/account_detail.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
{% extends "useradmin/base.html" %}
{% load crispy_forms_tags %}

{% block content %}

Expand Down Expand Up @@ -63,7 +62,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
85 changes: 39 additions & 46 deletions python/nav/web/useradmin/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,6 @@
from django import forms
from django.utils.encoding import force_str

from crispy_forms.helper import FormHelper
from crispy_forms_foundation.layout import (
Layout,
Fieldset,
Submit,
HTML,
)
from nav.web.crispyforms import (
set_flat_form_attributes,
FlatFieldset,
Expand Down Expand Up @@ -94,31 +87,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 @@ -150,29 +145,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 add0dff

Please sign in to comment.