Base net-virt CLI files on top of which ONOS specific changes will be done
diff --git a/cli/sdncon/coreui/views.py b/cli/sdncon/coreui/views.py
new file mode 100755
index 0000000..b7fbdd9
--- /dev/null
+++ b/cli/sdncon/coreui/views.py
@@ -0,0 +1,153 @@
+#
+# Copyright (c) 2013 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.0 (the
+# "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at
+#
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# permissions and limitations under the License.
+#
+
+# Views for the core controller UI
+#
+
+from django.shortcuts import render_to_response
+from django.utils import simplejson
+from django.http import HttpResponse
+from django.contrib.auth.decorators import login_required
+from django.contrib.auth.models import User
+from django.template import RequestContext
+from sdncon.apploader import AppLoader, AppLister
+from sdncon.clusterAdmin.utils import conditionally, isCloudBuild
+from sdncon.clusterAdmin.models import Customer, Cluster, CustomerUser
+import os
+
+JSON_CONTENT_TYPE = 'application/json'
+
+# --- View for the root page of any application
+@conditionally(login_required, isCloudBuild())
+def show_application_tabs(request, app):
+ clusterlist = []
+ cus = CustomerUser.objects.all()
+ for cu in cus:
+ if cu.user.username == request.user.username:
+ for cluster in cu.customer.cluster_set.all():
+ clusterlist.append({'customer': cluster.customer.customername,
+ 'clustername': cluster.clustername,
+ 'clusterid': unicode(cluster)})
+
+ return render_to_response('coreui/templates/showapp.html',
+ {'apps':[x for x in AppLoader.getApps() if not hasattr(x,'invisible')],'currentapp':app,'tabs':AppLoader.getApp(app).tabs,'clusterlist':clusterlist, 'isCloudBuild': isCloudBuild()},
+ context_instance=RequestContext(request))
+
+# --- Generic Views
+def embedded_datatable(request, model, options=None, skip_columns=[]):
+
+ model_name = model.__name__
+ title = model_name + " Table"
+ tablename = model_name+"-embed"
+ table_data = Switch.objects.all()
+
+ # Find headers
+ table_headers = []
+ for field in model._meta.local_fields:
+ table_headers.append(field.name)
+ print table_headers
+
+ # Skip unwanted columns
+ for c in skip_columns:
+ if c in table_headers:
+ table_headers.remove(c)
+
+ # Populate data
+ table_data = []
+ for instance in model.objects.all():
+ table_row = []
+ for field in table_headers:
+ value = instance.__dict__.get(field)
+ table_row.append(value)
+ table_data.append(table_row)
+
+ # Beautify Headers
+ ##TODO ALEX query model info directly, don't use model info list then remove import and delete file
+ #print model_name
+ #if model_name.lower() in model_info_list.model_info_dict:
+ # print "yes"
+ # table_headers_c = []
+ # field_dict = model_info_list.model_info_dict[model_name.lower()]["fields"]
+ # for h in table_headers:
+ # h = h.replace("_","-")
+ # print h, field_dict
+ # if h in field_dict:
+ # table_headers_c.append(field_dict[h]['verbose_name'])
+ # else:
+ # table_headers_c.append(h)
+ # table_headers = table_headers_c
+
+ return render_to_response('coreui/templates/datatable-embed.html', {
+ 'tabletitle': title,
+ 'tablename' : tablename,
+ 'tableheaders' : table_headers,
+ 'tabledata' : table_data,
+ 'dataTableOptions': options
+ })
+
+def embedded_datatable_from_model(request, model, options=None, skip_columns=[]):
+
+ model_name = model.__name__
+ title = model_name + " Table"
+ tablename = model_name+"-embed"
+ table_data = Switch.objects.all()
+
+ # Find headers
+ table_headers = []
+ for field in model._meta.local_fields:
+ table_headers.append(field.name)
+ print table_headers
+
+ # Skip unwanted columns
+ for c in skip_columns:
+ if c in table_headers:
+ table_headers.remove(c)
+
+ # Populate data
+ table_data = []
+ for instance in model.objects.all():
+ table_row = []
+ for field in table_headers:
+ value = instance.__dict__.get(field)
+ table_row.append(value)
+ table_data.append(table_row)
+
+ # Beautify Headers
+ print model_name
+ if model_name.lower() in model_info_list.model_info_dict:
+ print "yes"
+ table_headers_c = []
+ field_dict = model_info_list.model_info_dict[model_name.lower()]["fields"]
+ for h in table_headers:
+ h = h.replace("_","-")
+ print h, field_dict
+ if h in field_dict:
+ if 'verbose_name' in field_dict[h]:
+ table_headers_c.append(field_dict[h]['verbose_name'])
+ else:
+ table_headers_c.append(h)
+ else:
+ table_headers_c.append(h)
+ table_headers = table_headers_c
+
+ return render_to_response('coreui/templates/datatable-embed.html', {
+ 'tabletitle': title,
+ 'tablename' : tablename,
+ 'tableheaders' : table_headers,
+ 'tabledata' : table_data,
+ 'dataTableOptions': options
+ })
+