Merge branch 'master' of ssh://git.onelab.eu/git/myslice
[myslice.git] / portal / dashboardview.py
1 from manifold.core.query         import Query
2 from unfold.page                 import Page
3
4 from plugins.lists.testbedlist   import TestbedList
5 from plugins.lists.slicelist     import SliceList
6
7 from unfold.loginrequired        import LoginRequiredAutoLogoutView
8
9 from ui.topmenu                  import topmenu_items, the_user
10
11 #This view requires login 
12 class DashboardView (LoginRequiredAutoLogoutView):
13
14     template_name = "dashboard.html"
15     
16     def get_context_data(self, **kwargs):
17         # We might have slices on different registries with different user accounts 
18         # 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
19         # Different registries mean different identities, unless we identify via SFA HRN or have associated the user email to a single hrn
20
21         #messages.info(self.request, 'You have logged in')
22         page = Page(self.request)
23
24         # Slow...
25         #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
26         testbed_query  = Query().get('network').select('network_hrn','platform')
27         # DEMO GEC18 Query only PLE
28         slice_query = Query().get('user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
29         page.enqueue_query(slice_query)
30         page.enqueue_query(testbed_query)
31
32         page.expose_js_metadata()
33         page.expose_queries()
34
35         slicelist = SliceList(
36             page  = page,
37             title = "slices",
38             query = slice_query,
39         )
40         testbedlist = TestbedList(
41             page  = page,
42             title = "testbeds",
43             query = testbed_query,
44         )
45  
46         context = super(DashboardView, self).get_context_data(**kwargs)
47         context['person']   = self.request.user
48         context['testbeds'] = testbedlist.render(self.request) 
49         context['slices']   = slicelist.render(self.request)
50
51         # XXX This is repeated in all pages
52         # more general variables expected in the template
53         context['title'] = 'Dashboard'
54         # the menu items on the top
55         context['topmenu_items'] = topmenu_items('Dashboard', self.request) 
56         # so we can sho who is logged
57         context['username'] = the_user(self.request) 
58
59         context.update(page.prelude_env())
60
61         return context
62