mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-09 19:40:19 +00:00
fix user groups update view
Le formulaire remplaçait la totalité des groupes de l'utilisateur, c'est-à-dire également les groupes pas affichés dans le formulaire. Ça fait que la soumission du formulaire retirait l'utilisateur de tous ses groupes de groupes et des autres groupes non-gérables manuellement (comme Publique et Anciens Cotisants). Jusqu'ici, les groupes non-manuels étaient gérés bizarrement, en regardant dynamiquement à chaque fois si l'utilisateur est dans le groupe, donc le bug ne se voyait pas. Maintenant que tous les groupes sont gérés presque de la même manière, ça se voit.
This commit is contained in:
@ -323,6 +323,19 @@ class UserGroupsForm(forms.ModelForm):
|
||||
model = User
|
||||
fields = ["groups"]
|
||||
|
||||
def save(self, *args, **kwargs) -> User:
|
||||
# make the super method manage error without persisting in db
|
||||
super().save(commit=False)
|
||||
# Don't forget to add the non-manageable groups when setting groups,
|
||||
# or the user would lose all of those when the form is submitted
|
||||
self.instance.groups.set(
|
||||
[
|
||||
*self.cleaned_data["groups"],
|
||||
*self.instance.groups.filter(is_manually_manageable=False),
|
||||
]
|
||||
)
|
||||
return self.instance
|
||||
|
||||
|
||||
class UserGodfathersForm(forms.Form):
|
||||
type = forms.ChoiceField(
|
||||
|
Reference in New Issue
Block a user