2 from manifold.core.query import Query
3 from manifoldapi.manifoldapi import execute_query
5 from unfold.page import Page
7 from plugins.lists.testbedlist import TestbedList
8 from plugins.lists.slicelist import SliceList
10 from unfold.loginrequired import LoginRequiredAutoLogoutView
12 from ui.topmenu import topmenu_items_live, the_user
14 from myslice.theme import ThemeView
15 from myslice.settings import logger
18 #This view requires login
19 class DashboardView (LoginRequiredAutoLogoutView, ThemeView):
21 template_name = "dashboard.html"
23 def get_context_data(self, **kwargs):
24 # We might have slices on different registries with different user accounts
25 # We note that this portal could be specific to a given registry, to which we register users, but i'm not sure that simplifies things
26 # Different registries mean different identities, unless we identify via SFA HRN or have associated the user email to a single hrn
27 #messages.info(self.request, 'You have logged in')
28 page = Page(self.request)
30 logger.info("Dashboard page")
32 #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
33 testbed_query = Query().get('network').select('network_hrn','platform','version')
34 # DEMO GEC18 Query only PLE
35 # user_query = Query().get('local:user').select('config','email')
36 # user_details = execute_query(self.request, user_query)
38 # not always found in user_details...
40 # for user_detail in user_details:
41 # #email = user_detail['email']
42 # if user_detail['config']:
43 # config = json.loads(user_detail['config'])
44 # user_detail['authority'] = config.get('authority',"Unknown Authority")
47 # if user_detail['authority'] is not None:
48 # sub_authority = user_detail['authority'].split('.')
49 # root_authority = sub_authority[0]
50 # slice_query = Query().get(root_authority+':user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
52 logger.debug("SLICE QUERY")
53 logger.debug("-" * 80)
54 slice_query = Query().get('myslice:user').filter_by('user_hrn', '==', '$user_hrn').select('slices.slice_hrn')
55 page.enqueue_query(slice_query)
56 page.enqueue_query(testbed_query)
58 slicelist = SliceList(
61 warning_msg = "<a href='../slice_request'>Request Slice</a>",
64 testbedlist = TestbedList(
67 query = testbed_query,
70 context = super(DashboardView, self).get_context_data(**kwargs)
71 context['person'] = self.request.user
72 context['testbeds'] = testbedlist.render(self.request)
73 context['slices'] = slicelist.render(self.request)
75 # XXX This is repeated in all pages
76 # more general variables expected in the template
77 context['title'] = 'Dashboard'
78 # the menu items on the top
79 context['topmenu_items'] = topmenu_items_live('Dashboard', page)
80 # so we can sho who is logged
81 context['username'] = the_user(self.request)
83 context['theme'] = self.theme
85 page.expose_js_metadata()
87 # the page header and other stuff
88 context.update(page.prelude_env())