From f16b970f8418543987dd54ae52e1d879d6c1669c Mon Sep 17 00:00:00 2001 From: Eyap53 Date: Mon, 5 Mar 2018 12:26:42 +0100 Subject: [PATCH 1/3] UserSearch : Add state field. Minor modifications in template --- users/forms.py | 22 ++++++++++---------- users/templates/users/user_list.html | 8 ++++---- users/views.py | 30 +++++++++++----------------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/users/forms.py b/users/forms.py index 7def5324..461f28a3 100644 --- a/users/forms.py +++ b/users/forms.py @@ -136,27 +136,25 @@ class UserSearchForm(forms.Form): label="Utilisateur(s)", max_length=255, required=False, - widget=forms.TextInput(attrs={'class': 'form-control autocomplete_username', + widget=forms.TextInput(attrs={'class': 'form-control', 'autocomplete': 'off', 'autofocus': 'true', - 'placeholder': "Nom d'utilisateur"})) - unactive = forms.BooleanField( - label='Désactivés seulement', - required=False - ) + 'placeholder': "Nom / Prénom / Surnom"})) + year = forms.ChoiceField(label='Année', required=False) + state = forms.ChoiceField(label='Etat', choices=(('all', 'Tous les utilisateurs'), + ('True', 'Uniquement les activés'), + ('False', 'Uniquement les desactivés')), + required=False) def __init__(self, **kwargs): + super(UserSearchForm, self).__init__(**kwargs) + YEAR_CHOICES = [('all', 'Toutes')] for year in list_year(): YEAR_CHOICES.append( (year, year) ) - super(UserSearchForm, self).__init__(**kwargs) - self.fields['year'] = forms.ChoiceField( - label='Année', - choices=YEAR_CHOICES, - required=False - ) + self.fields['year'].choices = YEAR_CHOICES class UserQuickSearchForm(forms.Form): diff --git a/users/templates/users/user_list.html b/users/templates/users/user_list.html index 959880c6..9b3ee832 100644 --- a/users/templates/users/user_list.html +++ b/users/templates/users/user_list.html @@ -29,8 +29,8 @@ - - + + @@ -43,8 +43,8 @@ {% for user in user_list %} - - + + diff --git a/users/views.py b/users/views.py index f525ec12..86ad1647 100644 --- a/users/views.py +++ b/users/views.py @@ -332,29 +332,24 @@ class UserListView(GroupPermissionMixin, FormView, GroupLateralMenuFormMixin): form_class = UserSearchForm search = None - unactive = None year = None - headers = {'first_name':'asc', + state = None + headers = {'username':'asc', 'last_name':'asc', 'surname':'asc', 'family':'asc', 'campus':'asc', 'year':'asc', - 'balance':'asc',} + 'balance':'asc'} sort = None - def get(self, request, *args, **kwargs): - """ - Used to pass search through workboard. - """ + def get_context_data(self, **kwargs): + try: - self.sort = request.GET['sort'] - self.search = request.GET['search'] + self.sort = self.request.GET['sort'] except KeyError: pass - return super(UserListView, self).get(request, *args, **kwargs) - def get_context_data(self, **kwargs): context = super(UserListView, self).get_context_data(**kwargs) context['group'] = self.group if self.sort is not None: @@ -372,7 +367,6 @@ def get_context_data(self, **kwargs): return context def form_query(self, query): - if self.search: query = query.filter( Q(last_name__icontains=self.search) @@ -381,22 +375,22 @@ def form_query(self, query): | Q(username__icontains=self.search) ) - if self.unactive: - query = query.filter( - is_active=False) - if self.year and self.year != 'all': query = query.filter( year=self.year) + if self.state and self.state != 'all': + query = query.filter( + is_active=self.state) + return query def form_valid(self, form): if form.cleaned_data['search']: self.search = form.cleaned_data['search'] - if form.cleaned_data['unactive']: - self.unactive = form.cleaned_data['unactive'] + if form.cleaned_data['state']: + self.state = form.cleaned_data['state'] if form.cleaned_data['year']: self.year = form.cleaned_data['year'] From e16fd8dd7308e22e5f28d2c248262140f5c08608 Mon Sep 17 00:00:00 2001 From: Eyap53 Date: Mon, 5 Mar 2018 13:38:11 +0100 Subject: [PATCH 2/3] UserList : Add fa icons to order the list of users --- users/templates/users/user_list.html | 22 +++++++++++++++------- users/views.py | 13 +++++++++++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/users/templates/users/user_list.html b/users/templates/users/user_list.html index 9b3ee832..17a48535 100644 --- a/users/templates/users/user_list.html +++ b/users/templates/users/user_list.html @@ -28,14 +28,22 @@ {% if user_list %}
NomPrénomUsernameNom Prénom Bucque Num's Tabagn's
{{ user.last_name }}{{ user.first_name }}{{ user.username }}{{ user.last_name }} {{ user.first_name }} {{ user.surname }} {{ user.family }} {{ user.campus }}
+ + - - - - - - - + {% for name, description in list_header %} + + {% endfor %} diff --git a/users/views.py b/users/views.py index 86ad1647..f68a2f4f 100644 --- a/users/views.py +++ b/users/views.py @@ -344,16 +344,22 @@ class UserListView(GroupPermissionMixin, FormView, GroupLateralMenuFormMixin): sort = None def get_context_data(self, **kwargs): + context = super(UserListView, self).get_context_data(**kwargs) + + ## Header List + context['list_header'] = [["username", "Username"], ["last_name", "Nom Prénom"], ["surname", "Bucque"], ["family", "Fam's"], ["campus", "Tabagn's"], ["year", "Prom's"], ["balance", "Solde"]] + try: self.sort = self.request.GET['sort'] except KeyError: pass - context = super(UserListView, self).get_context_data(**kwargs) context['group'] = self.group if self.sort is not None: + context['sort'] = self.sort if self.headers[self.sort] == "des": + context['reverse'] = True context['user_list'] = self.form_query( User.objects.all().exclude(groups=1).order_by(self.sort).reverse()) self.headers[self.sort] = "asc" @@ -364,6 +370,9 @@ def get_context_data(self, **kwargs): else: context['user_list'] = self.form_query( User.objects.all().exclude(groups=1)) + + + return context def form_query(self, query): @@ -382,7 +391,7 @@ def form_query(self, query): if self.state and self.state != 'all': query = query.filter( is_active=self.state) - + return query def form_valid(self, form): From 8ce546ec196051da12c785dfdccc07c999129be4 Mon Sep 17 00:00:00 2001 From: Eyap53 Date: Mon, 5 Mar 2018 13:44:07 +0100 Subject: [PATCH 3/3] =?UTF-8?q?ListUser:=20Remove=20"D=C3=A9tails"=20colum?= =?UTF-8?q?n=20if=20the=20doesn't=20have=20retrieve=20permission?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/templates/users/user_list.html | 12 ++++++++---- users/views.py | 4 +++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/users/templates/users/user_list.html b/users/templates/users/user_list.html index 17a48535..93959381 100644 --- a/users/templates/users/user_list.html +++ b/users/templates/users/user_list.html @@ -45,7 +45,9 @@ {% endfor %} - + {% if has_perm_retrieve_user %} + + {% endif %} @@ -59,9 +61,11 @@ - + {% if has_perm_retrieve_user %} + + {% endif %} {% endfor %} diff --git a/users/views.py b/users/views.py index f68a2f4f..160938c5 100644 --- a/users/views.py +++ b/users/views.py @@ -371,7 +371,9 @@ def get_context_data(self, **kwargs): context['user_list'] = self.form_query( User.objects.all().exclude(groups=1)) - + # Permission Retrieveuser + if Permission.objects.get(codename='retrieve_user') in self.group.permissions.all(): + context['has_perm_retrieve_user'] = True return context
UsernameNom PrénomBucqueNum'sTabagn'sProm'sSolde{{ description }} + {% if sort and sort == name %} + {% if reverse %} + + {% else %} + + {% endif %} + {% else %} + + {% endif %} + Etat Détail
EtatDétailDétail
{{ user.year }} {{ user.balance }}€ {% if user.is_active %}Activé{% else %}Désactivé{% endif %} - Détail - + Détail +