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