+# View for platforms
+class PlatformsView(TemplateView):
+ template_name = "platforms.html"
+
+ def get_context_data(self, **kwargs):
+ page = Page(self.request)
+
+ #network_query = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type')
+ network_query = Query().get('local:platform').select('platform','platform_longname','gateway_type')
+ page.enqueue_query(network_query)
+
+ page.expose_js_metadata()
+ page.expose_queries()
+ networklist = Hazelnut(
+ page = page,
+ title = 'List',
+ domid = 'checkboxes',
+ # this is the query at the core of the slice list
+ query = network_query,
+ query_all = network_query,
+ checkboxes = False,
+ datatables_options = {
+ # for now we turn off sorting on the checkboxes columns this way
+ # this of course should be automatic in hazelnut
+ 'aoColumns' : [None, None, None, None, {'bSortable': False}],
+ 'iDisplayLength' : 25,
+ 'bLengthChange' : True,
+ },
+ )
+#
+# networklist = SimpleList(
+# title = None,
+# page = page,
+# key = 'platform',
+# query = network_query,
+# )
+
+ context = super(PlatformsView, self).get_context_data(**kwargs)
+ context['person'] = self.request.user
+ context['networks'] = networklist.render(self.request)
+
+ # XXX This is repeated in all pages
+ # more general variables expected in the template
+ context['title'] = 'Platforms connected to MySlice'
+ # the menu items on the top
+ context['topmenu_items'] = topmenu_items('Platforms', self.request)
+ # so we can sho who is logged
+ context['username'] = the_user(self.request)
+
+ context.update(page.prelude_env())
+
+ return context
+
+
+
+# View for 1 platform and its details
+class PlatformView(TemplateView):
+ template_name = "platform.html"
+
+ def get_context_data(self, **kwargs):
+ page = Page(self.request)
+
+ for key, value in kwargs.iteritems():
+ print "%s = %s" % (key, value)
+ if key == "platformname":
+ platformname=value
+
+ network_query = Query().get('local:platform').filter_by('platform', '==', platformname).select('platform','platform_longname','gateway_type')
+ page.enqueue_query(network_query)
+
+ page.expose_js_metadata()
+ page.expose_queries()
+ networklist = Hazelnut(
+ page = page,
+ title = 'List',
+ domid = 'checkboxes',
+ # this is the query at the core of the slice list
+ query = network_query,
+ query_all = network_query,
+ checkboxes = False,
+ datatables_options = {
+ # for now we turn off sorting on the checkboxes columns this way
+ # this of course should be automatic in hazelnut
+ 'aoColumns' : [None, None, None, None, {'bSortable': False}],
+ 'iDisplayLength' : 25,
+ 'bLengthChange' : True,
+ },
+ )
+#
+# networklist = SimpleList(
+# title = None,
+# page = page,
+# key = 'platform',
+# query = network_query,
+# )
+
+ context = super(PlatformView, self).get_context_data(**kwargs)
+ context['person'] = self.request.user
+ context['networks'] = networklist.render(self.request)
+
+ # XXX This is repeated in all pages
+ # more general variables expected in the template
+ context['title'] = 'Platforms connected to MySlice'
+ # the menu items on the top
+ context['topmenu_items'] = topmenu_items('Platforms', self.request)
+ # so we can sho who is logged
+ context['username'] = the_user(self.request)
+
+ context.update(page.prelude_env())
+
+ return context
+
+
+
+#class for my_account
+class AccountView(TemplateView):
+ template_name = "my_account.html"
+
+ #This view requires login
+ @method_decorator(login_required)
+ def dispatch(self, *args, **kwargs):
+ return super(AccountView, self).dispatch(*args, **kwargs)
+
+
+ def get_context_data(self, **kwargs):
+ #page = Page(self.request)
+
+ user_query = Query().get('local:user').select('config','email')
+ user_details = execute_query(self.request, user_query)
+
+ # not always found in user_details...
+ config={}
+ for user_detail in user_details:
+ #email = user_detail['email']
+ if user_detail['config']:
+ config = json.loads(user_detail['config'])
+
+ platform_query = Query().get('local:platform').select('platform_id','platform')
+ account_query = Query().get('local:account').select('user_id','platform_id','auth_type','config')
+ platform_details = execute_query(self.request, platform_query)
+ account_details = execute_query(self.request, account_query)
+
+ # initial assignment needed for users having no account
+ platform_name = ''
+ account_type = ''
+ account_usr_hrn = ''
+ account_pub_key = ''
+ for account_detail in account_details:
+ for platform_detail in platform_details:
+ if platform_detail['platform_id'] == account_detail['platform_id']:
+ platform_name = platform_detail['platform']
+ account_type = account_detail['auth_type']
+ account_config = json.loads(account_detail['config'])
+
+ # a bit more pythonic
+ account_usr_hrn = account_config.get('user_hrn','N/A')
+ account_pub_key = account_config.get('user_public_key','N/A')
+
+ #page.enqueue_query(network_query)
+
+ #page.expose_js_metadata()
+ #page.expose_queries()
+
+ #userlist = SimpleList(
+ # title = None,
+ # page = page,
+ # key = 'user_id',
+ # query = network_query,
+ #)
+
+ context = super(AccountView, self).get_context_data(**kwargs)
+ context['platform_name'] = platform_name
+ context['account_type'] = account_type
+ context['account_usr_hrn'] = account_usr_hrn
+ context['account_pub_key'] = account_pub_key
+ context['person'] = self.request.user
+ context ['firstname'] = config.get('firstname',"?")
+ context ['lastname'] = config.get('lastname',"?")
+ context ['fullname'] = context['firstname'] +' '+ context['lastname']
+ context ['affiliation'] = config.get('affiliation',"Unknown Affiliation")
+ #context['users'] = userlist.render(self.request)
+
+ # XXX This is repeated in all pages
+ # more general variables expected in the template
+ context['title'] = 'Platforms connected to MySlice'
+ # the menu items on the top
+ context['topmenu_items'] = topmenu_items('My Account', self.request)
+ # so we can sho who is logged
+ context['username'] = the_user(self.request)
+# context ['firstname'] = config['firstname']
+ #context.update(page.prelude_env())
+ return context
+