def setUp(self): self.handler = create_mock_handler() self.request = create_mock_request(self.handler) self.model = create_mock_model() self.model_instance = self.model() self.queryset = create_mock_queryset(self.model_instance) self.view_func = create_mock_view_func() self.view_class = permission_required('permission.add_article')( create_mock_view_class(self.view_func)) self.view_class_exc = permission_required( 'permission.add_article', raise_exception=True)(create_mock_view_class(self.view_func)) # store original registry self._original_registry = registry._registry # clear registry and register mock handler registry._registry = {} registry.register( self.model, self.handler, ) # clear call history self.handler.has_perm.return_value = False
def setUp(self): self.handler = create_mock_handler() self.request = create_mock_request(self.handler) self.model = create_mock_model() self.model_instance = self.model() self.queryset = create_mock_queryset(self.model_instance) self.view_func = create_mock_view_func() self.view_class = permission_required( 'permission.add_article')( create_mock_view_class(self.view_func) ) self.view_class_exc = permission_required( 'permission.add_article', raise_exception=True)( create_mock_view_class(self.view_func) ) # store original registry self._original_registry = registry._registry # clear registry and register mock handler registry._registry = {} registry.register( self.model, self.handler, ) # clear call history self.handler.has_perm.return_value = False
def add_permission_logic(model, permission_logic): """ Add permission logic to the model Parameters ---------- model : django model class A django model class which will be treated by the specified permission logic permission_logic : permission logic instance A permission logic instance which will be used to determine permission of the model Examples -------- >>> from django.db import models >>> from permission.logics import PermissionLogic >>> class Mock(models.Model): ... name = models.CharField('name', max_length=120) >>> add_permission_logic(Mock, PermissionLogic()) """ if not isinstance(permission_logic, PermissionLogic): raise AttributeError( '`permission_logic` must be an instance of PermissionLogic') if not hasattr(model, '_permission_logics'): model._permission_logics = set() if not hasattr(model, '_permission_handler'): from permission.utils.handlers import registry # register default permission handler registry.register(model, handler=None) model._permission_logics.add(permission_logic) # store target model to the permission_logic instance permission_logic.model = model
def add_permission_logic(model, permission_logic): """ Add permission logic to the model Parameters ---------- model : django model class A django model class which will be treated by the specified permission logic permission_logic : permission logic class A permission logic class with will be used to determine permission of the model Examples -------- >>> from django.db import models >>> from permission.logics import PermissionLogic >>> class Mock(models.Model): ... name = models.CharField('name', max_length=120) >>> add_permission_logic(Mock, PermissionLogic()) """ if not isinstance(permission_logic, PermissionLogic): raise AttributeError( '`permission_logic` must be an instance of PermissionLogic') if not hasattr(model, '_permission_logics'): model._permission_logics = set() if not hasattr(model, '_permission_handler'): from permission.utils.handlers import registry # register default permission handler registry.register(model, handler=None) model._permission_logics.add(permission_logic)
def test_permissionif_tag_with_obj(self): from permission.tests.models import Article from permission.handlers import PermissionHandler user = create_user('permission_templatetag_test_user1') art1 = create_article('permission_templatetag_test_article1') art2 = create_article('permission_templatetag_test_article2') create_permission('permission_templatetag_test_perm1') class ArticlePermissionHandler(PermissionHandler): def has_perm(self, user_obj, perm, obj=None): if perm == 'permission.permission_templatetag_test_perm1': if (obj and obj.title == 'permission_templatetag_test_article2'): return True return False registry.register(Article, ArticlePermissionHandler) self.assertFalse( user.has_perm('permission.permission_templatetag_test_perm1')) self.assertFalse( user.has_perm('permission.permission_templatetag_test_perm1', art1)) self.assertTrue( user.has_perm('permission.permission_templatetag_test_perm1', art2)) context = Context({ 'user': user, 'art1': art1, 'art2': art2, }) out = Template( "{% load permissionif %}" "{% permission user has " "'permission.permission_templatetag_test_perm1' %}" "Fail" "{% elpermission user has " "'permission.permission_templatetag_test_perm1' of art1 %}" "Fail" "{% elpermission user has " "'permission.permission_templatetag_test_perm1' of art2 %}" "Success" "{% else %}" "Fail" "{% endpermission %}" ).render(context) self.assertEqual(out, "Success")
def setUp(self): self.handler = create_mock_handler() self.request = create_mock_request(self.handler) self.queryset = create_mock_queryset(instance) # store original registry self._original_registry = registry._registry # clear registry and register mock handler registry._registry = {} registry.register( model, self.handler, )
def test_permissionif_tag_with_obj(self): from permission.tests.models import Article from permission.handlers import PermissionHandler user = create_user('permission_templatetag_test_user1') art1 = create_article('permission_templatetag_test_article1') art2 = create_article('permission_templatetag_test_article2') create_permission('permission_templatetag_test_perm1') class ArticlePermissionHandler(PermissionHandler): def has_perm(self, user_obj, perm, obj=None): if perm == 'permission.permission_templatetag_test_perm1': if (obj and obj.title == 'permission_templatetag_test_article2'): return True return False registry.register(Article, ArticlePermissionHandler) self.assertFalse( user.has_perm('permission.permission_templatetag_test_perm1')) self.assertFalse( user.has_perm('permission.permission_templatetag_test_perm1', art1)) self.assertTrue( user.has_perm('permission.permission_templatetag_test_perm1', art2)) context = Context({ 'user': user, 'art1': art1, 'art2': art2, }) out = Template( "{% load permissionif %}" "{% permission user has " "'permission.permission_templatetag_test_perm1' %}" "Fail" "{% elpermission user has " "'permission.permission_templatetag_test_perm1' of art1 %}" "Fail" "{% elpermission user has " "'permission.permission_templatetag_test_perm1' of art2 %}" "Success" "{% else %}" "Fail" "{% endpermission %}").render(context) self.assertEqual(out, "Success")
def setUp(self): self.handler = create_mock_handler() self.request = create_mock_request(self.handler) self.model = create_mock_model() self.model_instance = self.model() self.queryset = create_mock_queryset(self.model_instance) self.view_func = create_mock_view_func() self.decorated = permission_required( 'permission.add_article')(self.view_func) self.decorated_exc = permission_required( 'permission.add_article', raise_exception=True)(self.view_func) # store original registry self._original_registry = registry._registry # clear registry and register mock handler registry._registry = {} registry.register( self.model, self.handler, )