ded824bddd
KFetGroup model - Provides a distinction from non-kfet Groups. - Convert code appropriately. - Initially filled from Groups containing K-Fêt (this was the previous distinction) in the kfetauth.0002 migration. Permission proxy model (kfetauth app) - Proxy of the django.contrib.auth Permission model. - Adds the 'kfet' manager which returns only kfet-related permissions. KeepUnselectableModelFormMixin - Helps to keep the unselectable items of many-to-many field for ModelForm. - 'kfetauth' forms (related to KFetGroup) use this mixin. Using KFetGroup allows to simplify the 'kfet/account_group_form.html' template. A bug is also fixed in 'kfet/form_field_snippet.html', which could lead to prevent field displays if they used CheckboxSelectMultiple widget.
26 lines
796 B
Python
26 lines
796 B
Python
from django import forms
|
|
from django.forms import widgets
|
|
|
|
from .models import Group, Permission
|
|
|
|
|
|
class GroupsField(forms.ModelMultipleChoiceField):
|
|
def __init__(self, **kwargs):
|
|
kwargs.setdefault('queryset', Group.objects.all())
|
|
kwargs.setdefault('widget', widgets.CheckboxSelectMultiple)
|
|
super().__init__(**kwargs)
|
|
|
|
|
|
class BasePermissionsField(forms.ModelMultipleChoiceField):
|
|
def __init__(self, **kwargs):
|
|
kwargs.setdefault('widget', widgets.CheckboxSelectMultiple)
|
|
super().__init__(**kwargs)
|
|
|
|
def label_from_instance(self, obj):
|
|
return obj.name
|
|
|
|
|
|
class CorePermissionsField(BasePermissionsField):
|
|
def __init__(self, **kwargs):
|
|
kwargs.setdefault('queryset', Permission.kfetcore.all())
|
|
super().__init__(**kwargs)
|