From e03e4734b2089c96fdfabea15a48d6f3f90eaba4 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Thu, 16 Aug 2018 15:00:31 +0100 Subject: [PATCH] Make the users sortable in the become form --- opentech/apply/users/forms.py | 11 ++++++++++ .../apply/users/templates/users/account.html | 22 +++++-------------- opentech/apply/users/views.py | 12 +++++----- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/opentech/apply/users/forms.py b/opentech/apply/users/forms.py index 8338010a6..d89f45a9c 100644 --- a/opentech/apply/users/forms.py +++ b/opentech/apply/users/forms.py @@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _ from wagtail.users.forms import UserEditForm, UserCreationForm +from django_select2.forms import Select2Widget User = get_user_model() @@ -53,3 +54,13 @@ class ProfileForm(forms.ModelForm): slack = '@' + slack return slack + + +class BecomeUserForm(forms.Form): + user = forms.ModelChoiceField( + widget=Select2Widget, + help_text="Only includes active, non-superusers", + queryset=User.objects.filter(is_active=True, is_superuser=False), + label='', + required=False, + ) diff --git a/opentech/apply/users/templates/users/account.html b/opentech/apply/users/templates/users/account.html index 6d27ddddd..0f9c73f4b 100644 --- a/opentech/apply/users/templates/users/account.html +++ b/opentech/apply/users/templates/users/account.html @@ -30,25 +30,15 @@ {% endif %} <div class="profile__column"> - {% if swappable %} + {% if swappable_form %} + <h3>Become:</h3> <form action="{% url 'users:become' %}" method="post" class="form"> + {{ swappable_form.media }} {% csrf_token %} - {% for user in swappable %} - {% if forloop.first %} - <h3>Become:</h3> - <p class="form__help">Only includes active, non-superusers</p> - <div class="form__item"> - <div class="form__select"> - <select name="user" id="user"> - {% endif %} - <option value="{{ user.id }}">{{ user }}</option> - {% if forloop.last %} - </select> - </div> - </div> - {% endif %} + {% for field in swappable_form %} + {% include "funds/includes/field.html" %} {% endfor %} - <button class="button button--primary button--top-space" type="submit">Become</button> + <button class="button button--primary" type="submit">Become</button> </form> {% endif %} diff --git a/opentech/apply/users/views.py b/opentech/apply/users/views.py index 7dadd850d..02e1c8f15 100644 --- a/opentech/apply/users/views.py +++ b/opentech/apply/users/views.py @@ -17,7 +17,7 @@ from hijack.views import login_with_id from wagtail.admin.views.account import password_management_enabled from .decorators import require_oauth_whitelist -from .forms import ProfileForm +from .forms import BecomeUserForm, ProfileForm User = get_user_model() @@ -36,14 +36,14 @@ class AccountView(UpdateView): def get_context_data(self, **kwargs): if self.request.user.is_superuser: - swappable = User.objects.filter(is_active=True, is_superuser=False) + swappable_form = BecomeUserForm() else: - swappable = [] + swappable_form = None show_change_password = password_management_enabled() and self.request.user.has_usable_password(), return super().get_context_data( - swappable=swappable, + swappable_form=swappable_form, show_change_password=show_change_password, **kwargs, ) @@ -51,8 +51,8 @@ class AccountView(UpdateView): @login_required() def become(request): - if request.POST: - id = request.POST['user'] + id = request.POST['user'] + if request.POST and id: return login_with_id(request, id) return redirect('users:account') -- GitLab