Skip to content

Instantly share code, notes, and snippets.

@rg3915
Last active June 5, 2020 01:29
Show Gist options
  • Select an option

  • Save rg3915/afb3d988b09a2ad6f95d98392d6ff4ac to your computer and use it in GitHub Desktop.

Select an option

Save rg3915/afb3d988b09a2ad6f95d98392d6ff4ac to your computer and use it in GitHub Desktop.
Permissão django permission - criando permissões Django
'''
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')
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)
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)
@rg3915
Copy link
Author

rg3915 commented Jul 10, 2019

Leia mais em create_data.py.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment