From 813cbe7b13d19ac578fcbc60784f42e5bad449e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Fri, 26 Aug 2016 22:18:22 +0200 Subject: [PATCH] Meilleure gestion des permissions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il n'est plus possible de modifier l'attribut `is_superuser` dans l'interface admin. les membres du burô ne doivent plus être super- utilisateurs en prévision de l'arrivée de l'appli K-Fêt. Pour donner les permissions adéquates au burô, il faut créer un groupe COF avec tous les droits sur les applis `gestioncof` et `bda` ainsi que les droits sur les d'utilisateurs et ajouter les membres du burô à ce groupe. --- gestioncof/admin.py | 13 +++++++++++++ gestioncof/shared.py | 3 +-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gestioncof/admin.py b/gestioncof/admin.py index 342317f3..db70946b 100644 --- a/gestioncof/admin.py +++ b/gestioncof/admin.py @@ -5,6 +5,7 @@ from __future__ import print_function from __future__ import unicode_literals from django.contrib import admin +from django.utils.translation import ugettext_lazy as _ from gestioncof.models import SurveyQuestionAnswer, SurveyQuestion, \ CofProfile, EventOption, EventOptionChoice, Event, Club, CustomMail, \ Survey, EventCommentField, EventRegistration @@ -162,6 +163,13 @@ class UserProfileAdmin(UserAdmin): return False is_cof.short_description = 'Membre du COF' is_cof.boolean = True + + fieldsets = [ + (None, {'fields': ['username', 'password']}), + (_('Personal info'), {'fields': ['first_name', 'last_name', 'email']}), + (_('Groups'), {'fields': ['groups']}) + ] + list_display = ('profile_num',) + UserAdmin.list_display \ + ('profile_login_clipper', 'profile_phone', 'profile_occupation', 'profile_mailing_cof', 'profile_mailing_bda', @@ -175,6 +183,11 @@ class UserProfileAdmin(UserAdmin): CofProfileInline, ] + def save_model(self, request, user, form, change): + if user.profile.is_buro: + user.is_staff = True + user.save() + # FIXME: This is absolutely horrible. def user_unicode(self): diff --git a/gestioncof/shared.py b/gestioncof/shared.py index fc901d50..87021a00 100644 --- a/gestioncof/shared.py +++ b/gestioncof/shared.py @@ -58,8 +58,7 @@ class COFCASBackend(CASBackend): if not user.email: user.email = settings.CAS_EMAIL_FORMAT % profile.login_clipper user.save() - if profile.is_buro and not user.is_superuser: - user.is_superuser = True + if profile.is_buro and not user.is_staff: user.is_staff = True user.save() return user