11fd34f32847c3d5bf0fd8d4e84e641feb1285b4
[myslice.git] / portal / resourceview.py
1 from __future__ import print_function
2
3 from manifold.core.query        import Query
4 from unfold.page                import Page
5
6 from unfold.loginrequired       import FreeAccessView
7 from ui.topmenu                 import topmenu_items_live, the_user
8
9 from plugins.googlemap          import GoogleMap
10 from plugins.querytable         import QueryTable
11 from plugins.lists.simplelist   import SimpleList
12 from plugins.slicestat          import SliceStat
13
14 from myslice.configengine       import ConfigEngine
15 from myslice.theme import ThemeView
16
17 # View for 1 platform and its details
18 class ResourceView(FreeAccessView, ThemeView):
19     template_name = "resource.html"
20
21     def get_context_data(self, **kwargs):
22         page = Page(self.request)
23         
24         page.add_js_files  ( [ "js/common.functions.js" ] )
25
26         for key, value in kwargs.iteritems():
27             print("%s = %s" % (key, value))       
28             if key == "urn":
29                 resource_urn=value
30                 
31         resource_query  = Query().get('resource')\
32             .filter_by('urn', '==', resource_urn)\
33             .select('hostname','type','hrn','urn', 'latitude', 'longitude', 'country')
34         page.enqueue_query(resource_query)
35
36         page.expose_js_metadata()
37
38         resourcelist = QueryTable(
39             page  = page,
40             title = 'List',
41             domid = 'checkboxes',
42             # this is the query at the core of the slice list
43             query = resource_query,
44             query_all = resource_query,
45             checkboxes = False,
46             datatables_options = {
47             'iDisplayLength' : 25,
48             'bLengthChange'  : True,
49             },
50         )
51         resource_as_map = GoogleMap(
52             page       = page,
53             title      = 'Geographic view',
54             domid      = 'resources-map',
55             # tab's sons preferably turn this off
56             togglable  = True,
57             query      = resource_query,
58             query_all  = resource_query,
59             googlemap_api_key = ConfigEngine().googlemap_api_key(),
60             checkboxes = False,
61             # center on Paris
62             #latitude   = 49.,
63             #longitude  = 9,
64             #zoom       = 4,
65         )
66 #        resourcelist = SimpleList(
67 #            title = None,
68 #            page  = page,
69 #            key   = 'hrn',
70 #            query = resource_query,
71 #        )
72
73         resource_stats = SliceStat(
74             title = None,
75             page  = page,
76             stats = 'node',
77             key   = 'hrn',
78             query = resource_query
79         )
80
81         context = super(ResourceView, self).get_context_data(**kwargs)
82         context['person']   = self.request.user
83         context['resource'] = resourcelist.render(self.request)
84         context['resource_as_map'] = resource_as_map.render(self.request)
85         context['resource_stats'] = resource_stats.render(self.request)
86
87         # XXX This is repeated in all pages
88         # more general variables expected in the template
89         context['title'] = 'Information about a resource'
90         # the menu items on the top
91         context['topmenu_items'] = topmenu_items_live(None, page)
92         # so we can sho who is logged
93         context['username'] = the_user(self.request)
94         context['theme'] = self.theme
95         context.update(page.prelude_env())
96
97         return context
98
99
100