def _get_permissible_items(request, permext, fieldlookups): if fieldlookups is None: return None applabel, modelname, action, cond = utils.parse_perm_code(permext) try: ctype = ContentType.objects.get_by_natural_key(applabel, modelname) return ctype.model_class().objects.filter(**fieldlookups) except ObjectDoesNotExist: raise ValueError('Permission code must be of the form "app_label.action_modelname". Actual: %s' % permext)
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