def _group_graphs_api(request, group_id, graph_id=None): """ Handles any request (GET/POST) sent to groups/<group_id>/graphs or groups/<group_id>/graphs/<graph_id>. Parameters ---------- request - HTTP Request group_id : string Unique ID of the group. Returns ------- """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if request.method == "GET" and graph_id is None: return HttpResponse(json.dumps(_get_group_graphs(request, group_id)), content_type="application/json") elif request.method == "POST" and graph_id is None: return HttpResponse(json.dumps(_add_group_graph(request, group_id)), content_type="application/json", status=201) elif request.method == "DELETE" and graph_id is not None: _delete_group_graph(request, group_id, graph_id) return HttpResponse(json.dumps({ "message": "Successfully deleted graph with id=%s from group with id=%s" % (graph_id, group_id) }), content_type="application/json", status=200) else: raise MethodNotAllowed(request) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def graphs_page(request): """ Wrapper view function for the following pages: /graphs/ Parameters ---------- request : HTTP Request Returns ------- response : HTML Page Response Rendered graphs list page in HTML. Raises ------ MethodNotAllowed: If a user tries to send requests other than GET i.e., POST, PUT or UPDATE. Notes ------ """ if 'GET' == request.method: context = RequestContext(request, {"tags": request.GET.get('tags', '')}) return render(request, 'graphs/index.html', context) else: raise MethodNotAllowed( request ) # Handle other type of request methods like POST, PUT, UPDATE.
def _group_members_api(request, group_id, member_id=None): """ Handles any request (GET/POST) sent to groups/<group_id>/members or groups/<group_id>/members/<member_id>. Parameters ---------- request - HTTP Request Returns ------- """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if group_id is None: raise Exception("Group ID is required.") if request.method == "GET" and member_id is None: return HttpResponse(json.dumps(_get_group_members(request, group_id)), content_type="application/json") elif request.method == "POST" and member_id is None: return HttpResponse(json.dumps(_add_group_member(request, group_id)), content_type="application/json", status=201) elif request.method == "DELETE" and member_id is not None: _delete_group_member(request, group_id, member_id) return HttpResponse(json.dumps({ "message": "Successfully deleted member with id=%s from group with id=%s" % (member_id, group_id) }), content_type="application/json", status=200) else: raise MethodNotAllowed(request) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def _groups_api(request, group_id=None): """ Handles any request (GET/POST) sent to /groups or groups/<group_id> Parameters ---------- request - HTTP Request Returns ------- """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if request.method == "GET" and group_id is None: return HttpResponse(json.dumps(_get_groups(request, query=request.GET)), content_type="application/json") elif request.method == "GET" and group_id is not None: return HttpResponse(json.dumps(_get_group(request, group_id)), content_type="application/json", status=200) elif request.method == "POST" and group_id is None: return HttpResponse(json.dumps(_add_group(request, group=request.POST)), content_type="application/json", status=201) elif request.method == "PUT" and group_id is not None: return HttpResponse(json.dumps(_update_group(request, group_id, group=QueryDict(request.body))), content_type="application/json", status=200) elif request.method == "DELETE" and group_id is not None: _delete_group(request, group_id) return HttpResponse(json.dumps({ "message": "Successfully deleted group with id=%s" % group_id }), content_type="application/json", status=200) else: raise MethodNotAllowed(request) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def _graphs_api(request, graph_id=None): """ Handles any request sent to following urls: /graphs /graphs/<graph_id> Parameters ---------- request - HTTP Request Returns ------- response : JSON Response Raises ------ MethodNotAllowed: If a user tries to send requests other than GET, POST, PUT or UPDATE. BadRequest: If HTTP_ACCEPT header is not set to application/json. """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if request.method == "GET" and graph_id is None: return HttpResponse(json.dumps( _get_graphs(request, query=request.GET)), content_type="application/json") elif request.method == "GET" and graph_id is not None: return HttpResponse(json.dumps(_get_graph(request, graph_id)), content_type="application/json", status=200) elif request.method == "POST" and graph_id is None: return HttpResponse(json.dumps( _add_graph(request, graph=json.loads(request.body))), content_type="application/json", status=201) elif request.method == "PUT" and graph_id is not None: return HttpResponse(json.dumps( _update_graph(request, graph_id, graph=json.loads(request.body))), content_type="application/json", status=200) elif request.method == "DELETE" and graph_id is not None: _delete_graph(request, graph_id) return HttpResponse(json.dumps({ "message": "Successfully deleted graph with id=%s" % graph_id }), content_type="application/json", status=200) else: raise MethodNotAllowed( request ) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def join_group_page(request, group_id): """ Wrapper view for the join_group_page by invitation. /groups/<group_id>/invite/ :param request: HTTP GET Request. Parameters ---------- group_id : string Unique ID of the group. Required """ context = RequestContext(request, {}) if 'GET' == request.method: group = users.get_group_by_id(request, group_id) if group is not None and group.invite_code == request.GET.get('code', None): if request.session['uid'] is None: context.push({ "group": group, "invite_code": request.GET.get('code', None) }) return render(request, 'join_group/index.html', context) else: try: users.add_group_member(request, group_id, member_email=request.session['uid']) finally: return redirect('/groups/'+group_id) else: return redirect('/') # TODO: change it to signup page. Currently we dont have a signup link. elif 'POST' == request.method: group = users.get_group_by_id(request, group_id) if group is not None and group.invite_code == request.POST.get('code', None): try: if request.session['uid'] is None: user = users.register(request, username=request.POST.get('user_id', None), password=request.POST.get('password', None)) if user is not None: request.session['uid'] = user.email request.session['admin'] = user.is_admin users.add_group_member(request, group_id, member_id=user.id) return redirect('/groups/'+group_id) except GraphSpaceError as e: context.push({ "error_message": e.get_message(), "group": group, "invite_code": request.POST.get('code', None) }) return render(request, 'join_group/index.html', context) else: return redirect('/') # TODO: change it to signup page. Currently we dont have a signup link. else: raise MethodNotAllowed(request) # Handle other type of request methods like POST, PUT, UPDATE.
def groups_page(request): """ Wrapper view for the groups page. :param request: HTTP GET Request. """ if 'GET' == request.method: context = RequestContext(request, {}) return render(request, 'groups/index.html', context) else: raise MethodNotAllowed(request) # Handle other type of request methods like POST, PUT, UPDATE.
def _graph_layouts_api(request, graph_id, layout_id=None): """ Handles any request (GET/POST) sent to /layouts or /layouts/<layout_id>. Parameters ---------- request - HTTP Request graph_id : string Unique ID of the graph. layout_id: string Unique ID of the layout. Returns ------- """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if request.method == "GET" and layout_id is None: return HttpResponse(json.dumps( _get_layouts(request, graph_id, query=request.GET)), content_type="application/json") elif request.method == "GET" and layout_id is not None: return HttpResponse(json.dumps( _get_layout(request, graph_id, layout_id)), content_type="application/json") elif request.method == "POST" and layout_id is None: return HttpResponse(json.dumps( _add_layout(request, graph_id, layout=json.loads(request.body))), content_type="application/json", status=201) elif request.method == "PUT" and layout_id is not None: return HttpResponse(json.dumps( _update_layout(request, graph_id, layout_id, layout=json.loads(request.body))), content_type="application/json", status=200) elif request.method == "DELETE" and layout_id is not None: _delete_layout(request, graph_id, layout_id) return HttpResponse(json.dumps({ "message": "Successfully deleted layout with id=%s" % (layout_id) }), content_type="application/json", status=200) else: raise MethodNotAllowed( request ) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def _graph_groups_api(request, graph_id, group_id=None): """ Handles any request (GET/POST) sent to graphs/<graph_id>/groups or graphs/<graph_id>/groups/<group_id>. Parameters ---------- request - HTTP Request graph_id : string Unique ID of the graph. Returns ------- Raises ------ MethodNotAllowed: If a user tries to send requests other than GET, POST, PUT or UPDATE. BadRequest: If HTTP_ACCEPT header is not set to application/json. BadRequest: If graph_id is missing. """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if graph_id is None: raise BadRequest(request, error_code=ErrorCodes.Validation.GraphIDMissing) if request.method == "GET" and group_id is None: return HttpResponse(json.dumps( _get_graph_groups(request, graph_id, query=request.GET)), content_type="application/json") elif request.method == "POST" and group_id is None: return HttpResponse(json.dumps( _add_graph_group(request, graph_id, group=json.loads(request.body))), content_type="application/json", status=201) elif request.method == "DELETE" and group_id is not None: _delete_graph_group(request, graph_id, group_id) return HttpResponse(json.dumps({ "message": "Successfully deleted graph with id=%s from group with id=%s" % (graph_id, group_id) }), content_type="application/json", status=200) else: raise MethodNotAllowed( request ) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def group_page(request, group_id): """ Wrapper view for the group page. /groups/<group_id> :param request: HTTP GET Request. Parameters ---------- group_id : string Unique ID of the group. Required """ if 'GET' == request.method: context = RequestContext(request, {}) context.push({ "group": _get_group(request, int(group_id)), }) return render(request, 'group/index.html', context) else: raise MethodNotAllowed(request) # Handle other type of request methods like POST, PUT, UPDATE.
def _users_api(request): """ Handles any request (GET/POST) sent to /users. Parameters ---------- request - HTTP Request Returns ------- """ if 'application/json' in request.META.get('HTTP_ACCEPT', None): if request.method == "GET": return HttpResponse(json.dumps(_get_users(request, query=request.GET)), content_type="application/json") else: raise MethodNotAllowed(request) # Handle other type of request methods like OPTIONS etc. else: raise BadRequest(request)
def user_page(request): """ Wrapper view for the user profile page. :param request: HTTP GET Request. """ if 'GET' == request.method: context = RequestContext(request, {}) user_email = get_request_user(request) user_object, auth_token = users.get_user_profile(request, user_email) if user_email is not None else None context.push({ "user": { "id": user_object.id, "email": user_object.email, "auth_token": auth_token } }) return render(request, 'user_profile/index.html', context) else: raise MethodNotAllowed(request) # Handle other type of request methods like POST, PUT, UPDATE.
def graphs_advanced_search_ajax_api(request): """ Handles any request sent to following urls: /ajax/graphs Parameters ---------- request - HTTP Request Returns ------- response : JSON Response """ if request.META.get('HTTP_ACCEPT', None) == 'application/json': if request.method == "POST": querydict = QueryDict('', mutable=True) querydict.update(request.GET) queryparams = querydict # Validate search graphs API request user_role = authorization.user_role(request) if user_role == authorization.UserRole.LOGGED_IN: if queryparams.get('owner_email', None) is None \ and queryparams.get('member_email', None) is None \ and queryparams.get('is_public', None) != '1': raise BadRequest( request, error_code=ErrorCodes.Validation.IsPublicNotSet) if queryparams.get('is_public', None) != '1': if get_request_user(request) != queryparams.get('member_email', None) \ and get_request_user(request) != queryparams.get('owner_email', None): raise BadRequest(request, error_code=ErrorCodes.Validation. NotAllowedGraphAccess, args=queryparams.get( 'owner_email', None)) total, graphs_list = graphs.search_graphs1( request, owner_email=queryparams.get('owner_email', None), member_email=queryparams.get('member_email', None), names=list(filter(None, queryparams.getlist('names[]', []))), is_public=queryparams.get('is_public', None), nodes=list(filter(None, queryparams.getlist('nodes[]', []))), edges=list(filter(None, queryparams.getlist('edges[]', []))), tags=list(filter(None, queryparams.getlist('tags[]', []))), limit=queryparams.get('limit', 20), offset=queryparams.get('offset', 0), order=queryparams.get('order', 'desc'), sort=queryparams.get('sort', 'name'), query=json.loads(request.body)) return HttpResponse(json.dumps({ 'total': total, 'graphs': [ utils.serializer(graph, summary=True) for graph in graphs_list ] }), content_type="application/json", status=200) else: raise MethodNotAllowed( request ) # Handle other type of request methods like GET, OPTIONS etc. else: raise BadRequest(request)