def test_constructor(self): permission_logic = AuthorPermissionLogic() self.assertTrue(isinstance(permission_logic, AuthorPermissionLogic)) self.assertEqual(permission_logic.field_name, 'author') self.assertEqual(permission_logic.any_permission, True) self.assertEqual(permission_logic.change_permission, True) self.assertEqual(permission_logic.delete_permission, True)
def test_has_perm_add_with_obj_author_non_any(self): permission_logic = AuthorPermissionLogic(any_permission=False) self.assertFalse( permission_logic.has_perm(self.user2, self.perm1, self.article))
from permission.logics import AuthorPermissionLogic from permission.logics import CollaboratorsPermissionLogic PERMISSION_LOGICS = ( ('projetisamm.Etudiant', AuthorPermissionLogic()), ('projetisamm.Etudiant', CollaboratorsPermissionLogic()), )
from permission.logics import AuthorPermissionLogic from permission.logics import CollaboratorsPermissionLogic PERMISSION_LOGICS = ( ('buzzer.Article', AuthorPermissionLogic()), ('buzzer.Article', CollaboratorsPermissionLogic()), )
def test_has_perm_delete_without_obj_with_anonymous(self): permission_logic = AuthorPermissionLogic() add_permission_logic(self.article.__class__, permission_logic) self.assertFalse(permission_logic.has_perm(self.anonymous, self.perm3))
def test_has_perm_delete_with_obj_non_any_no_delete(self): permission_logic = AuthorPermissionLogic(any_permission=False, delete_permission=False) add_permission_logic(self.article.__class__, permission_logic) self.assertFalse( permission_logic.has_perm(self.user2, self.perm3, self.article))
def test_has_perm_delete_with_obj_author_diff_field_name(self): permission_logic = AuthorPermissionLogic(field_name='editor') add_permission_logic(self.article.__class__, permission_logic) self.assertFalse( permission_logic.has_perm(self.user2, self.perm3, self.article))
def test_has_perm_change_with_obj(self): permission_logic = AuthorPermissionLogic() add_permission_logic(self.article.__class__, permission_logic) self.assertFalse( permission_logic.has_perm(self.user1, self.perm2, self.article))
def test_has_perm_delete_with_obj_author(self): permission_logic = AuthorPermissionLogic() self.assertTrue( permission_logic.has_perm(self.user2, self.perm3, self.article))
def test_has_perm_delete_with_obj(self): permission_logic = AuthorPermissionLogic() self.assertFalse( permission_logic.has_perm(self.user1, self.perm3, self.article))
def test_has_perm_change_without_obj(self): permission_logic = AuthorPermissionLogic() self.assertFalse(permission_logic.has_perm(self.user1, self.perm2))
def test_constructor_with_specifing_change_permission(self): permission_logic = AuthorPermissionLogic(change_permission=False) self.assertTrue(isinstance(permission_logic, AuthorPermissionLogic)) self.assertEqual(permission_logic.change_permission, False)
def test_has_perm_change_with_obj_author_non_any_no_delete(self): permission_logic = AuthorPermissionLogic(any_permission=False, delete_permission=False) self.assertTrue( permission_logic.has_perm(self.user2, self.perm2, self.article))
def test_has_perm_delete_with_obj_non_any(self): permission_logic = AuthorPermissionLogic(any_permission=False) self.assertTrue( permission_logic.has_perm(self.user2, self.perm3, self.article))
def test_has_perm_delete_without_obj(self): permission_logic = AuthorPermissionLogic() add_permission_logic(self.article.__class__, permission_logic) self.assertTrue(permission_logic.has_perm(self.user1, self.perm3))
def test_has_perm_add_with_obj_author_diff_field_name(self): permission_logic = AuthorPermissionLogic(field_name='editor') self.assertFalse( permission_logic.has_perm(self.user2, self.perm1, self.article))
def test_has_perm_add_with_obj_author(self): permission_logic = AuthorPermissionLogic() add_permission_logic(self.article.__class__, permission_logic) self.assertTrue( permission_logic.has_perm(self.user2, self.perm1, self.article))
def test_has_perm_add_with_obj_author_non_any_no_change(self): permission_logic = AuthorPermissionLogic(any_permission=False, change_permission=False) add_permission_logic(self.article.__class__, permission_logic) self.assertFalse( permission_logic.has_perm(self.user2, self.perm1, self.article))
def test_constructor_with_specifing_field_name(self): permission_logic = AuthorPermissionLogic(field_name='specified') add_permission_logic(self.article.__class__, permission_logic) self.assertTrue(isinstance(permission_logic, AuthorPermissionLogic)) self.assertEqual(permission_logic.field_name, 'specified')
self.name = self.name.lower() def __str__(self): return self.name #### PERMISSIONS # apply AuthorPermissionLogic and CollaboratorsPermissionLogic from permission import add_permission_logic from permission.logics import PermissionLogic, AuthorPermissionLogic # from permission.logics import CollaboratorsPermissionLogic # Authors have full permission (edit, delete etc.) to their own skills and training bits gcl_authorpermissionlogic = AuthorPermissionLogic(field_name='author', change_permission=True, delete_permission=True) add_permission_logic(Skill, gcl_authorpermissionlogic) add_permission_logic(TrainingBit, gcl_authorpermissionlogic) add_permission_logic(Project, gcl_authorpermissionlogic) add_permission_logic(Comment, gcl_authorpermissionlogic) # See: https://github.com/lambdalisue/django-permission/blob/bdd0ebefbb6638b38886a0d35d9d379cfb067bfd/src/permission/logics/author.py class AdminPermissionLogic(PermissionLogic): def has_perm(self, user, permission_str, obj): if user.is_authenticated() and user.is_admin: return True else: return False
def test_constructor_with_specifing_delete_permission(self): permission_logic = AuthorPermissionLogic(delete_permission=False) add_permission_logic(self.article.__class__, permission_logic) self.assertTrue(isinstance(permission_logic, AuthorPermissionLogic)) self.assertEqual(permission_logic.delete_permission, False)
from permission.logics import AuthorPermissionLogic, StaffPermissionLogic PERMISSION_LOGICS = (('forums.Post', AuthorPermissionLogic( field_name='author', any_permission=False, change_permission=True, delete_permission=True, )), ('forums.Post', StaffPermissionLogic( any_permission=False, change_permission=True, delete_permission=True, )))
from django.conf import settings from django.db.models import get_models, get_app ''' EXAMPLE PERMISSION_LOGICS = ( ('example.Person', AuthorPermissionLogic(field_name='owner',)), ('example.Person', CollaboratorsPermissionLogic()), ) ''' # Loop the registered apps from settings for app_name in settings.REST_EASY_APPS: # Get the models, then loop PERMISSION_LOGICS = () app_models = get_app(app_name) for app_model in get_models(app_models): PERMISSION_LOGICS = PERMISSION_LOGICS + (( app_name + '.' + app_model.__name__, AuthorPermissionLogic(field_name='owner'), ), ) PERMISSION_LOGICS = PERMISSION_LOGICS + (( app_name + '.' + app_model.__name__, CollaboratorsPermissionLogic(), ), ) #PERMISSION_LOGICS = PERMISSION_LOGICS + (( app_name+'.'+app_model.__name__,GroupInPermissionLogic(),),) PERMISSION_LOGICS = PERMISSION_LOGICS + (( app_name + '.' + app_model.__name__, StaffPermissionLogic(), ), )