+ user = osmutils.get_user(request)
+ client = Client()
+ payload = {
+ '_id': role_id,
+ 'name': request.POST['name'],
+ 'root': True if request.POST.get('root') else False
+ }
+ try:
+ if 'definition' in request.POST and request.POST.get('definition') != '':
+ role_definition = yaml.load(request.POST.get('definition'))
+
+ if not isinstance(role_definition, dict):
+ raise ValueError('Role definition should be provided in a key-value fashion')
+ for key, value in role_definition.items():
+ if not isinstance(value, bool):
+ raise ValueError('Value in a role definition should be boolean')
+ payload[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):