def inner_decorator(self, *args, **kwargs): from ralph.account.views import HTTP403 from ralph.util import api # class-based views if args and isinstance(args[0], WSGIRequest): request = args[0] # function-based views elif self and isinstance(self, WSGIRequest): request = self # check for request in kwargs as well, just in case elif 'request' in kwargs: request = kwargs['request'] else: return HttpResponseBadRequest() user = request.user # for API views not handled by Tastypie (e.g. puppet_classifier) if user.is_anonymous(): user = api.get_user(request) if not api.is_authenticated(user, request): return HTTP403(request) profile = user.get_profile() has_perm = profile.has_perm for perm in perms: if not has_perm(perm['perm']): return HTTP403(request, perm['msg']) return func(self, *args, **kwargs)
def test_get_user_by_name(self): user = User.objects.create_superuser('test', '*****@*****.**', 'test') results = api.get_user( utils.AttributeDict({ 'REQUEST': {'username': user.username}, 'META': {} }) ) self.assertEquals(user, results)
def test_get_user_by_api_key(self): user = User.objects.create_superuser('test', '*****@*****.**', 'test') user.api_key.key = 'test' user.api_key.save() results = api.get_user( utils.AttributeDict({ 'REQUEST': {}, 'META': {} }) ) self.assertEquals(user, results)