diff --git a/CHANGELOG.md b/CHANGELOG.md index 170f92a5..d637e5de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,10 @@ adhérents ni des cotisations. ### BDS -- Le buro peut exporter la liste de membres avec email au format CSV depuis la page d'acceuil. +- Le burô peut maintenant accorder ou révoquer le statut de membre du Burô + en modifiant le profil d'un membre du BDS. +- Le burô peut exporter la liste de ses membres avec email au format CSV depuis + la page d'accueil. ### K-Fêt diff --git a/bds/forms.py b/bds/forms.py index 557f7c83..4f626926 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 !"))