+ user = osmutils.get_user(request)
+ client = Client()
+ payload = {
+ 'name': request.POST['name'],
+ 'permissions': {}
+ }
+ try:
+ if 'permissions' in request.POST and request.POST.get('permissions') != '':
+ role_permissions = yaml.load(request.POST.get('permissions'))
+
+ if not isinstance(role_permissions, dict):
+ raise ValueError('Role permissions should be provided in a key-value fashion')
+ for key, value in role_permissions.items():
+ if not isinstance(value, bool):
+ raise ValueError('Value in a role permissions should be boolean')
+ payload['permissions'][key] = value
+ except Exception as e:
+ return __response_handler(request, {'status': 400, 'code': 'BAD_REQUEST', 'detail': e.message}, url=None, status=400)
+ result = client.role_update(user.get_token(), role_id, payload)
+ if result['error']:
+ return __response_handler(request, result['data'], url=None,
+ status=result['data']['status'] if 'status' in result['data'] else 500)
+ else:
+ return __response_handler(request, {}, url=None, status=200)
+
+
+@login_required
+def get(request, role_id=None):