class TestTemplateTags(TestCase): def setUp(self): self.registry = PermissionsRegistry() self.registry.register(can_do) self.registry.register(can_do_with_model, model=Model) self.template = Template( '{% load permissions %}' '{% if user|can_do %}can_do{% endif %}' '{% if user|can_do_with_model:instance %}can_do_with_model{% endif %}' ) def test_can_do(self): context = Context({'user': object(), 'instance': None}) result = self.template.render(context) self.assertIn('can_do', result) def test_cannot_do(self): context = Context({'user': None, 'instance': None}) result = self.template.render(context) self.assertNotIn('can_do', result) def test_can_do_with_model(self): context = Context({'user': object(), 'instance': object()}) result = self.template.render(context) self.assertIn('can_do_with_model', result) def test_cannot_do_with_model(self): context = Context({'user': None, 'instance': object()}) result = self.template.render(context) self.assertNotIn('can_do_with_model', result)
def setUp(self): self.registry = PermissionsRegistry() self.registry.register(can_do) self.registry.register(can_do_with_model, model=Model) self.template = Template( '{% load permissions %}' '{% if user|can_do %}can_do{% endif %}' '{% if user|can_do_with_model:instance %}can_do_with_model{% endif %}' )
def test_perm_func_is_not_called_when_user_is_staff_and_allow_staff_is_set(self): registry = PermissionsRegistry(allow_staff=True) @registry.register def perm(user): raise PermissionsError('Should not be raised') @registry.perm def view(request): pass request = self.request_factory.get('/things/1') request.user = User(is_staff=True) view(request)
def test_ensure_custom_unauthenticated_handler_is_called(self): def handler(request): handler.called = True handler.called = False registry = PermissionsRegistry(unauthenticated_handler=handler) @registry.register def perm(user): return False @registry.require('perm') def view(request): pass request = self.request_factory.get('/things/1') request.user = AnonymousUser() self.assertFalse(handler.called) view(request, 1) self.assertTrue(handler.called)
from permissions import PermissionsRegistry # just create a permissions object we can tack permissions onto in app/perms.py permissions = PermissionsRegistry() # you can put "project level" permissions in here. For app specific # permissions, put them in app_dir/perms.py @permissions.register def is_active(user): return user.is_active @permissions.register def is_staff(user): return user.is_staff