def _get_trusts(obj): if not Content.is_content(obj): return [] trusts = Trust.objects.filter_by_content(obj) if trusts is None: return [] if not hasattr(trusts, '__iter__'): trusts = [trusts] return trusts
def get_group_permissions(self, user_obj, obj=None): """ Returns a set of permission strings that this user has through his/her groups. """ if user_obj.is_anonymous() or obj is None: return super(TrustModelBackendMixin, self).get_group_permissions(user_obj, obj) if Content.is_content(obj): filter = self.perm_model.objects.filter return filter(group__trusts__in=self._get_trusts(obj), group__user=user_obj) return []
def has_perm(self, user_obj, permext, obj=None): applabel, modelname, action, cond = utils.parse_perm_code(permext) if len(cond) != 0: func = Content.get_permission_condition_func(self._get_class(obj), cond) if func is None: raise AttributeError('Permission condition code "%s" is not associate with model "%s_%s"' % (cond, applabel, modelname)) perm = '%s.%s_%s' % (applabel, action, modelname) positive = super(TrustModelBackendMixin, self).has_perm(user_obj=user_obj, perm=perm, obj=obj) if positive: if len(cond) == 0: return True if self.permission_condition_met(func, user_obj, perm, obj): return True return False