From bf6d6d6430fb40addc6337ac2517f15f89cadba5 Mon Sep 17 00:00:00 2001 From: Alseidon Date: Wed, 27 Jan 2021 22:25:58 +0100 Subject: [PATCH] Added basic buro right handling while updating member --- bds/forms.py | 3 +++ bds/views.py | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/bds/forms.py b/bds/forms.py index 557f7c83..3869d1d7 100644 --- a/bds/forms.py +++ b/bds/forms.py @@ -1,6 +1,7 @@ from django import forms from django.contrib.auth import get_user_model from django.contrib.auth.forms import UserCreationForm +from django.utils.translation import gettext_lazy as _ from bds.models import BDSProfile @@ -8,6 +9,8 @@ User = get_user_model() class UserForm(forms.ModelForm): + is_buro = forms.BooleanField(label=_("membre du Burô"), required=False) + class Meta: model = User fields = ["email", "first_name", "last_name"] diff --git a/bds/views.py b/bds/views.py index 540865b1..4b279836 100644 --- a/bds/views.py +++ b/bds/views.py @@ -3,6 +3,7 @@ import csv from django.contrib import messages from django.contrib.auth import get_user_model from django.contrib.auth.decorators import permission_required +from django.contrib.auth.models import Permission from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.urls import reverse, reverse_lazy @@ -40,6 +41,9 @@ class UserUpdateView(StaffRequiredMixin, MultipleFormView): "profile": ProfileForm, } + def get_user_initial(self): + return {"is_buro": self.get_user_instance().has_perm("bds.is_team")} + def dispatch(self, request, *args, **kwargs): self.user = get_object_or_404(User, pk=self.kwargs["pk"]) return super().dispatch(request, *args, **kwargs) @@ -56,6 +60,11 @@ class UserUpdateView(StaffRequiredMixin, MultipleFormView): def form_valid(self, forms): user = forms["user"].save() profile = forms["profile"].save(commit=False) + perm = Permission.objects.get(content_type__app_label="bds", codename="is_team") + if forms["user"].cleaned_data["is_buro"]: + user.user_permissions.add(perm) + else: + user.user_permissions.remove(perm) profile.user = user profile.save() messages.success(self.request, _("Profil mis à jour avec succès !"))