44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from django import forms
|
|
from django.contrib.auth.models import Group, User
|
|
|
|
from .fields import KFetPermissionsField
|
|
|
|
|
|
class GroupForm(forms.ModelForm):
|
|
permissions = KFetPermissionsField()
|
|
|
|
def clean_name(self):
|
|
name = self.cleaned_data['name']
|
|
return 'K-Fêt %s' % name
|
|
|
|
def clean_permissions(self):
|
|
kfet_perms = self.cleaned_data['permissions']
|
|
# TODO: With Django >=1.11, the QuerySet method 'difference' can be
|
|
# used.
|
|
# other_groups = self.instance.permissions.difference(
|
|
# self.fields['permissions'].queryset
|
|
# )
|
|
other_perms = self.instance.permissions.exclude(
|
|
pk__in=[p.pk for p in self.fields['permissions'].queryset],
|
|
)
|
|
return list(kfet_perms) + list(other_perms)
|
|
|
|
class Meta:
|
|
model = Group
|
|
fields = ['name', 'permissions']
|
|
|
|
|
|
class UserGroupForm(forms.ModelForm):
|
|
groups = forms.ModelMultipleChoiceField(
|
|
Group.objects.filter(name__icontains='K-Fêt'),
|
|
label='Statut équipe',
|
|
required=False)
|
|
|
|
def clean_groups(self):
|
|
kfet_groups = self.cleaned_data.get('groups')
|
|
other_groups = self.instance.groups.exclude(name__icontains='K-Fêt')
|
|
return list(kfet_groups) + list(other_groups)
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = ['groups']
|