grant access by access permission groups
This commit is contained in:
parent
385aebe445
commit
76e970347a
1 changed files with 25 additions and 0 deletions
|
@ -8,6 +8,7 @@ from itertools import chain
|
|||
|
||||
import pytz
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import Prefetch
|
||||
from django.forms import ChoiceField, Form, ModelForm
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
@ -47,18 +48,42 @@ class AccessPermissionForm(Form):
|
|||
access_restriction.pk: access_restriction
|
||||
for access_restriction in access_restrictions
|
||||
}
|
||||
access_restrictions_ids = set(self.access_restrictions.keys())
|
||||
|
||||
self.access_restriction_choices = {
|
||||
'all': self.access_restrictions.values(),
|
||||
**{str(pk): (access_restriction, ) for pk, access_restriction in self.access_restrictions.items()}
|
||||
}
|
||||
|
||||
# get access permission groups
|
||||
groups = AccessRestrictionGroup.qs_for_request(request).prefetch_related(
|
||||
Prefetch('accessrestrictions', AccessRestriction.objects.only('pk'))
|
||||
)
|
||||
group_contents = {
|
||||
group.pk: set(r.pk for r in group.accessrestrictions.all())
|
||||
for group in groups
|
||||
}
|
||||
group_contents = {
|
||||
pk: restrictions for pk, restrictions in group_contents.items()
|
||||
if not (restrictions - access_restrictions_ids)
|
||||
}
|
||||
|
||||
self.access_restriction_choices.update({
|
||||
('g%d' % pk): tuple(
|
||||
self.access_restrictions[restriction] for restriction in restrictions
|
||||
) for pk, restrictions in group_contents.items()
|
||||
})
|
||||
|
||||
# construct choice field for access permissions
|
||||
choices = [('', _('choose permissions…')),
|
||||
('all', ungettext_lazy('everything possible (%d permission)',
|
||||
'everything possible (%d permissions)',
|
||||
len(access_restrictions)) % len(access_restrictions))]
|
||||
|
||||
choices.append((_('Access Permission Groups'), tuple(
|
||||
('g%d' % group.pk, group.title)
|
||||
for group in groups
|
||||
)))
|
||||
choices.append((_('Access Permissions'), tuple(
|
||||
(str(pk), access_restriction.title)
|
||||
for pk, access_restriction in self.access_restrictions.items()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue