''' Created on Jun 9, 2010 @author: jnaous ''' from django.db import models from ..decorators import require_obj_permissions_for_method from expedient.common.middleware import threadlocals def user_parse_func(request): return request.user threadlocals.add_parser("user_kw", user_parse_func) def test_parse_func(request): try: return PermissionTestClass.objects.all()[0] except: return None threadlocals.add_parser("test_kw", test_parse_func) class PermissionTestClass(models.Model): """ Dummy class used for tests. """
''' Created on Jul 27, 2010 @author: jnaous ''' from django.core.urlresolvers import resolve from expedient.common.middleware.threadlocals import add_parser from expedient.clearinghouse.project.models import Project from expedient.clearinghouse.slice.models import Slice def get_user(request): return request.user add_parser("user", get_user) def get_project(request): _, _, kwargs = resolve(request.path) if "proj_id" in kwargs: return Project.objects.get(id=kwargs["proj_id"]) elif "slice_id" in kwargs: return Project.objects.get(slice__id=kwargs["slice_id"]) elif "role_id" in kwargs: return Project.objects.get(projectrole__id=kwargs["role_id"]) else: return None add_parser("project", get_project) def get_slice(request): _, _, kwargs = resolve(request.path) if "slice_id" in kwargs: return Slice.objects.get(id=kwargs["slice_id"]) else:
''' Created on Jun 9, 2010 @author: jnaous ''' from django.db import models from ..decorators import require_obj_permissions_for_method from expedient.common.middleware import threadlocals def user_parse_func(request): return request.user threadlocals.add_parser("user_kw", user_parse_func) def test_parse_func(request): try: return PermissionTestClass.objects.all()[0] except: return None threadlocals.add_parser("test_kw", test_parse_func) class PermissionTestClass(models.Model): """ Dummy class used for tests. """ val = models.IntegerField() @require_obj_permissions_for_method( "user_kw", ["can_get_x2", "can_read_val"]) def get_val_x2(self): return self.val * 2
''' Created on Jul 27, 2010 @author: jnaous ''' from django.core.urlresolvers import resolve from expedient.common.middleware.threadlocals import add_parser from expedient.clearinghouse.project.models import Project from expedient.clearinghouse.slice.models import Slice def get_user(request): return request.user add_parser("user", get_user) def get_project(request): _, _, kwargs = resolve(request.path) if "proj_id" in kwargs: return Project.objects.get(id=kwargs["proj_id"]) elif "slice_id" in kwargs: return Project.objects.get(slice__id=kwargs["slice_id"]) elif "role_id" in kwargs: return Project.objects.get(projectrole__id=kwargs["role_id"]) else: return None add_parser("project", get_project)