Revised version of the resource page + related plugins
[myslice.git] / plugins / scheduler2 / __init__.py
1 from unfold.plugin import Plugin\r
2 import datetime\r
3 from datetime import timedelta\r
4 \r
5 class Scheduler2 (Plugin):\r
6 \r
7 \r
8     def __init__ (self, query, query_lease, query_all_resources, query_all_leases, **settings):\r
9         Plugin.__init__ (self, **settings)\r
10         \r
11         self.query=query\r
12         self.query_all_resources = query_all_resources\r
13         self.query_all_resources_uuid = query_all_resources.query_uuid\r
14 \r
15         self.query_all_leases = query_all_leases\r
16         self.query_all_leases_uuid = query_all_leases.query_uuid\r
17 \r
18         self.query_lease = query_lease\r
19         self.query_lease_uuid = query_lease.query_uuid\r
20 \r
21         #query_lease.query_uuid if query_lease else None\r
22 \r
23         #granularity in minutes\r
24         granularity = 10\r
25         #self.time_slots = []\r
26         self.time_slots = self.createTimeSlots(granularity)\r
27         self.nodes = [\r
28                         ['Grid Nodes' , ['node016', 'node017', 'node018', 'node019', 'node020', 'node021',  'node029', 'node030', 'node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031',]],\r
29                         ['Other Nodes' , ['node022', 'node023', 'node024','node025', 'node026', 'node027', 'node028',]]\r
30                     ]\r
31 \r
32     def template_file (self):\r
33         return "scheduler.html"\r
34 \r
35     def requirements (self):\r
36         reqs = {\r
37             'js_files' : [\r
38                 'js/angular/angular.min.js',\r
39                 'js/scheduler2.js',\r
40                 'js/scheduler-SchedulerCtrl.js',\r
41                 #'js/slider/jquery-ui-1.10.3.slider.min.js',\r
42                 'js/scheduler-helpers.js',\r
43                 'js/scheduler-table-selector.js',\r
44             ],\r
45             'css_files': [\r
46                 'css/scheduler2.css', \r
47                 #'css/slider/jquery-ui-1.10.3.slider.min.css', \r
48             ]\r
49         }\r
50         return reqs\r
51 \r
52     # the list of things passed to the js plugin\r
53     def json_settings_list (self):\r
54         # query_uuid will pass self.query results to the javascript\r
55         # and will be available as "record" in :\r
56         # on_new_record: function(record)\r
57         return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid', 'query_all_leases_uuid']\r
58     \r
59 \r
60     def export_json_settings (self):\r
61         return True\r
62     \r
63     #Creates an Array with the timespans depending on granularity\r
64     def createTimeSlots (this, granularity):\r
65         #return type\r
66         time_slots = []\r
67         #init times\r
68         time_s = datetime.time(0,00)\r
69         time_f = datetime.time(23,59)\r
70         now = datetime.datetime.now()\r
71         #calc diffs\r
72         dt_s = datetime.datetime.combine(now,time_s)\r
73         dt_f = datetime.datetime.combine(now,time_f)\r
74         #loop\r
75         while (dt_s < dt_f):\r
76             tmp = dt_s\r
77             dt_s =  dt_s + datetime.timedelta(minutes=granularity)\r
78             ts = str(tmp.hour).zfill(2) + ':' + str(tmp.minute).zfill(2) + '<span>-</span>' + str(dt_s.hour).zfill(2) + ':' + str(dt_s.minute).zfill(2)\r
79             time_slots.append(ts)\r
80         #return\r
81         return time_slots\r
82     \r