def formfield_for_dbfield(self, db_field, **kwargs): """ Filter permissions according context permissions available """ if db_field.name == "permission": already = [c[0] for c in db_field.choices] choices = [(k, _(k)) for k in permissions.keys()] new = [item for item in choices if item[0] in self.permission_filters and item[0] not in already] db_field.choices.extend(new) return super(RuleInline, self).formfield_for_dbfield(db_field, **kwargs)
def __init__(self, *args, **kwargs): user = kwargs.pop('user', None) super(RuleForm, self).__init__(*args, **kwargs) journals_with_manage_permissions = user.journals.all() self.fields['journal'].queryset = journals_with_manage_permissions us = [j.members.all() for j in journals_with_manage_permissions] chain = itertools.chain(*us) users = [u.id for u in list(chain)] self.fields['user'].queryset = User.objects.filter(id__in=users) declared_rules = [(perm, _(perm)) for perm in permissions.keys() if perm in self.get_permission_filters()] self.fields['permission'].choices = declared_rules
def __init__(self, *args, **kwargs): super(RuleForm, self).__init__(*args, **kwargs) permission_rules = [(perm, _(perm)) for perm in permissions.keys()] self.fields['permission'].choices = permission_rules