# the manifold proxy
(r'^manifold/proxy/(?P<format>\w+)/?$', 'manifold.manifoldproxy.proxy'),
#
+ #
+ # RESTful interface
+ (r'^rest/(?P<object_type>[^/]+)/(?P<object_name>[^/]+)?/?$', 'rest.dispatch'),
+ (r'^datatable/(?P<object_type>[^/]+)/(?P<object_name>[^/]+)?/?$', 'rest.dispatch'),
+ #
+ #
+ #(r'^view/?', include('view.urls')),
+ #(r'^list/slices', 'view.list.slices'),
+ #(r'^list/(?P<object_type>[^/]+)', 'view.list.default'),
+ #
+ #
# Portal
url(r'^portal/', include('portal.urls')),
]
display:none;
}
+div#home-dashboard div#home-slice-list {
+ margin:25px 0;
+ padding:0 25px;
+ text-align:left;
+}
+div#home-dashboard div#home-slice-list ul {
+ list-style: none;
+ padding:0;
+ margin:0;
+}
+div#home-dashboard div#home-slice-list li {
+
+}
+
.login-submit {
vertical-align:middle;
padding:0;
}
+/* INSTITUTION */
+div#institution {
+ color:black;
+ margin:25px auto;
+}
+.form-hint {
+ font-size:11pt;
+ font-style:italic;
+ color:gray;
+}
+
/* SLICE REQUEST */
div#slice-request {
color:black;
<td>
{% if person %}
<button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Request a Slice</button>
+ <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
{% else %}
{% endif %}
</td>
});
$('button#ticketbtn').click(function() {
window.location="/portal/contact/";
- })
- ;$('button#slicerequestbtn').click(function() {
+ });
+ $('button#slicerequestbtn').click(function() {
window.location="/portal/slice_request/";
});
+
+ {% if person %}
+ $.getJSON("rest/user", function( data ) {
+ var items = [];
+ $.each( data[0].slices, function( key, val ) {
+ items.push( "<li><a href=\"portal/slice/"+val+"\">" + val + "</a></li>" );
+ });
+
+ $("div#home-slice-list").html($( "<ul/>", { html: items.join( "" ) }));
+
+ });
+ {% endif %}
});
</script>
{% endblock unfold_main %}
--- /dev/null
+from manifold.core.query import Query
+
+from django.views.generic.base import TemplateView
+
+from unfold.loginrequired import LoginRequiredView
+from django.http import HttpResponse
+
+from manifold.core.query import Query, AnalyzedQuery
+from manifold.manifoldapi import execute_query
+
+from string import join
+import json
+
+
+def dispatch(request, object_type, object_name):
+
+ switch = {
+ 'platform' : platform,
+ 'slice' : slice,
+ 'user' : user
+ }
+
+ # platform is local
+ if (object_type == 'platform') :
+ object_type = 'local:platform'
+ object_properties = ['platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type'];
+ else :
+ query = Query.get('local:object').filter_by('table', '==', object_type).select('column.name')
+ results = execute_query(request, query)
+ if results :
+ object_properties = []
+ for r in results[0]['column'] :
+ object_properties.append(r['name'])
+ else :
+ return error()
+
+ return switch.get(object_type, error)(request, object_type, object_name, object_properties)
+
+# if request.method == 'GET':
+# return switch.get(request, object_type, object_name, object_properties)
+# elif request.method == 'POST':
+# return post(request, object_type, object_name)
+
+def platform():
+ return HttpResponse(json.dumps({'user' : 'error message'}), content_type="application/json")
+
+def slice():
+ return HttpResponse(json.dumps({'user' : 'error message'}), content_type="application/json")
+
+def user(request, object_type, object_name, object_properties):
+ query = Query().get('user').filter_by('user_hrn', '==', '$user_hrn').select(object_properties)
+ #.select('slice.slice_hrn')
+
+ return send(request, execute_query(request, query), object_properties)
+
+def send(request, response, object_properties):
+ if request.path.split('/')[1] == 'rest' :
+ response_data = response
+ else :
+ response_data = {}
+ response_data['columns'] = object_properties
+ response_data['labels'] = object_properties
+ #response_data['labels'] = [ 'Platform', 'Name', 'Url', 'Description','Gateway Type' ]
+ response_data['data'] = []
+ response_data['total'] = len(response)
+ for r in response :
+ d = []
+ for p in object_properties :
+ d.append(r[p])
+ print d
+
+ response_data['data'].append(d)
+ #response_data['data'].append([ r['platform'], r['platform_longname'], r['platform_url'], r['platform_description'], r['gateway_type'] ])
+
+ return HttpResponse(json.dumps(response_data), content_type="application/json")
+
+
+
+
+
+def get(request, object_type, object_name, object_properties):
+
+ query = Query().get(object_type).select(object_properties).filter_by('user_hrn', '=', '$user_hrn')
+ if (object_name) :
+ query = query.filter_by(object_type + '_hrn', '=', object_name)
+
+ response = execute_query(request, query)
+
+ response_data = {}
+ response_data['columns'] = object_properties
+ response_data['labels'] = object_properties
+ #response_data['labels'] = [ 'Platform', 'Name', 'Url', 'Description','Gateway Type' ]
+ response_data['data'] = []
+ response_data['total'] = len(response)
+ for r in response :
+ d = []
+ for p in object_properties :
+ d.append(r[p])
+ print d
+
+ response_data['data'].append(d)
+ #response_data['data'].append([ r['platform'], r['platform_longname'], r['platform_url'], r['platform_description'], r['gateway_type'] ])
+
+ return HttpResponse(json.dumps(response_data), content_type="application/json")
+
+def post(request, object_type, object_name):
+ pass
+
+def error():
+ return HttpResponse(json.dumps({'error' : 'error message'}), content_type="application/json")
\ No newline at end of file
--- /dev/null
+from manifold.core.query import Query, AnalyzedQuery
+
+from django.views.generic.base import TemplateView
+
+from unfold.loginrequired import LoginRequiredView
+from django.http import HttpResponse
+
+from manifold.core.query import Query, AnalyzedQuery
+from manifold.manifoldapi import execute_query
+
+import json
+
+def platform(request, platform_name):
+
+ platform_query = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type')
+ response = execute_query(request,platform_query)
+
+ response_data = {}
+ response_data['columns'] = [ 'platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type' ]
+ response_data['labels'] = [ 'Platform', 'Name', 'Url', 'Description','Gateway Type' ]
+ response_data['data'] = []
+ for r in response :
+ response_data['data'].append([ r['platform'], r['platform_longname'], r['platform_url'], r['platform_description'], r['gateway_type'] ])
+
+ return HttpResponse(json.dumps(response_data), content_type="application/json")
+
+def slice(request, slice_name):
+
+ platform_query = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type')
+ response = execute_query(request,platform_query)
+
+
+
+ response_data = {}
+ response_data['columns'] = [ 'platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type' ]
+ response_data['labels'] = [ 'Platform', 'Name', 'Url', 'Description','Gateway Type' ]
+ response_data['data'] = []
+ for r in response :
+ response_data['data'].append([ r['platform'], r['platform_longname'], r['platform_url'], r['platform_description'], r['gateway_type'] ])
+
+ return HttpResponse(json.dumps(response_data), content_type="application/json")
+
+# slicename = 'ple.upmc.myslicedemo'
+# main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
+# main_query.select(
+# 'slice_hrn',
+# 'resource.hrn', 'resource.urn',
+# 'resource.hostname', 'resource.type',
+# 'resource.network_hrn',
+# 'lease.urn',
+# 'user.user_hrn',
+# #'application.measurement_point.counter'
+# )
+#
+# res = execute_query(self.request,main_query)
+#
+# print res
+#
+# return render(request, self.template_name, {"resources": res[0]['resource']})
+
+
+# def get (self, request, name='default'):
+# return HttpResponse()
\ No newline at end of file
--- /dev/null
+from manifold.core.query import Query, AnalyzedQuery
+
+from django.views.generic.base import TemplateView
+
+from unfold.loginrequired import LoginRequiredView
+from django.http import HttpResponse
+
+from manifold.core.query import Query, AnalyzedQuery
+from manifold.manifoldapi import execute_query
+
+import json
+
+
+def dispatch(request, platform_name):
+ return get(request, platform_name)
+
+def get(request, platform_name):
+
+ platform_query = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type')
+ response = execute_query(request,platform_query)
+
+ q = Query.get('slice').select('slice_hrn')
+ result = execute_query(request,q)
+ print result
+# #
+# query = Query.get('local:object').select('table')
+# results = execute_query(request, query)
+# print results
+#
+ query = Query.get('local:object').filter_by('table', '==', 'slice').select('column.name')
+ results = execute_query(request, query)
+ print results
+
+ response_data = {}
+ response_data['columns'] = [ 'platform', 'platform_longname', 'platform_url', 'platform_description','gateway_type' ]
+ response_data['labels'] = [ 'Platform', 'Name', 'Url', 'Description','Gateway Type' ]
+ response_data['data'] = []
+ #response_data['resources'] = { 'total' : len(r) }
+ for r in response :
+ response_data['data'].append([ r['platform'], r['platform_longname'], r['platform_url'], r['platform_description'], r['gateway_type'] ])
+
+ return HttpResponse(json.dumps(response_data), content_type="application/json")
\ No newline at end of file
--- /dev/null
+
+from django.conf.urls import patterns, include, url
+from django.conf import settings
+
+
+urlpatterns = patterns('',
+ url(r'^rest/get/slice/(?P<slice_name>[^/]+)/?$', 'rest.get.slice')
+)