diff --git a/apps/acls/forms.py b/apps/acls/forms.py new file mode 100644 index 0000000000..49a995c4e0 --- /dev/null +++ b/apps/acls/forms.py @@ -0,0 +1,30 @@ +from django import forms +from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth.models import User, Group + +from permissions.models import Permission, Role +from common.utils import generate_choices_w_labels, encapsulate, get_object_name + +from acls.models import AccessHolder + + +class HolderSelectionForm(forms.Form): + holder_gid = forms.ChoiceField( + label=_(u'Holder') + ) + + def __init__(self, *args, **kwargs): + staff_users = User.objects.filter(is_staff=True) + super_users = User.objects.filter(is_superuser=True) + #users = set(User.objects.exclude(pk__in=[member.pk for member in get_role_members(role)])) - set(staff_users) - set(super_users) + users = set(User.objects.filter(is_active=True)) - set(staff_users) - set(super_users) + roles = set(Role.objects.all()) + #groups = set(Group.objects.exclude(pk__in=[member.pk for member in get_role_members(role)])) + groups = set(Group.objects.all()) + holder_list = list(users | groups | roles) + + #holder_list = kwargs.pop('holder_list', None) + super(HolderSelectionForm, self).__init__(*args, **kwargs) + #if holder_list: + self.fields['holder_gid'].choices = [(AccessHolder.encapsulate(holder).gid, get_object_name(holder)) for holder in holder_list] +