Last active
June 5, 2020 01:29
-
-
Save rg3915/afb3d988b09a2ad6f95d98392d6ff4ac to your computer and use it in GitHub Desktop.
Permissão django permission - criando permissões Django
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ''' | |
| Add permissions to group. | |
| ''' | |
| def create_permissions(self, obj, codename): | |
| # Criando permissão view_manage_career_pages | |
| content_type = ContentType.objects.get_for_model(obj) | |
| permission = Permission.objects.get( | |
| content_type=content_type, | |
| codename=codename | |
| ) | |
| # Habilitando permissão para simpleuser | |
| g = Group.objects.get(name='simpleuser') | |
| g.permissions.add(permission) | |
| create_permissions(User, 'view_manage_career_pages') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| def employee_update_permissions(request, pk): | |
| data = json.loads(request.body) | |
| user = User.objects.get(pk=pk) | |
| _old_permissions = Permission.objects.filter(user=user) | |
| old_permissions = [item.codename for item in _old_permissions] | |
| new_permissions = data.get('permission_codes') | |
| # Remove permissions. | |
| remove_permissions = set(old_permissions) - set(new_permissions) | |
| remove_user_permissions(user, remove_permissions) | |
| # Create permissions. | |
| create_user_permissions(user, new_permissions) | |
| permissions_pk = user.employee.to_dict()['permissions_pk'] | |
| permission_codes = user.employee.to_dict()['permission_codes'] | |
| response = { | |
| 'permissions_pk': permissions_pk, | |
| 'permission_codes': permission_codes, | |
| } | |
| return JsonResponse(response) | |
| def _user_permissions(user, permission_codes, to_remove=False): | |
| ''' | |
| Add or Remove permissions to user. | |
| Args: | |
| permission_codes (List): List of permissions. | |
| user (instance): User. | |
| to_remove (bool): Add or Remove? Default Add. | |
| ''' | |
| permissions = Permission.objects.filter(codename__in=permission_codes) | |
| for permission in permissions: | |
| if to_remove: | |
| user.user_permissions.remove(permission) | |
| else: | |
| user.user_permissions.add(permission) | |
| def create_user_permissions(user, permission_codes): | |
| ''' | |
| Add permissions to user. | |
| ''' | |
| _user_permissions(user, permission_codes) | |
| def remove_user_permissions(user, permission_codes): | |
| ''' | |
| Remove permissions from user. | |
| ''' | |
| _user_permissions(user, permission_codes, to_remove=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| def create_user_permissions(user, permission_codes): | |
| ''' | |
| Add permissions to user. | |
| Args: | |
| permission_codes (List): List of permissions. | |
| user (instance): User. | |
| ''' | |
| permissions = Permission.objects.filter(codename__in=permission_codes) | |
| for permission in permissions: | |
| user.user_permissions.add(permission) | |
| user = User.objects.last() | |
| permission_codes = ['add_timesheet', 'view_timesheet', 'change_timesheet'] | |
| create_user_permissions(user, permission_codes) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Leia mais em create_data.py.