Chrysostomos for scheduler
[myslice.git] / plugins / scheduler2 / __init__.py
diff --git a/plugins/scheduler2/__init__.py b/plugins/scheduler2/__init__.py
new file mode 100755 (executable)
index 0000000..a1057a4
--- /dev/null
@@ -0,0 +1,74 @@
+from unfold.plugin import Plugin\r
+import datetime\r
+from datetime import timedelta\r
+\r
+class Scheduler2 (Plugin):\r
+\r
+\r
+    def __init__ (self, query, query_all_resources, query_lease = None, **settings):\r
+        Plugin.__init__ (self, **settings)\r
+        \r
+        self.query=query\r
+        self.query_all_resources = query_all_resources\r
+        self.query_all_resources_uuid = query_all_resources.query_uuid\r
+        self.query_lease = query_lease\r
+        query_lease.query_uuid if query_lease else None\r
+\r
+        #granularity in minutes\r
+        granularity = 10\r
+        #self.time_slots = []\r
+        self.time_slots = self.createTimeSlots(granularity)\r
+        self.nodes = [\r
+                        ['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
+                        ['Other Nodes' , ['node022', 'node023', 'node024','node025', 'node026', 'node027', 'node028',]]\r
+                    ]\r
+\r
+    def template_file (self):\r
+        return "scheduler.html"\r
+\r
+    def requirements (self):\r
+        reqs = {\r
+            'js_files' : [\r
+                'js/scheduler2.js',\r
+                'js/slider/jquery-ui-1.10.3.slider.min.js',\r
+                'js/scheduler-helpers.js',\r
+                'js/table-selector.js',\r
+            ],\r
+            'css_files': [\r
+                'css/scheduler2.css', \r
+                'css/slider/jquery-ui-1.10.3.slider.min.css', \r
+            ]\r
+        }\r
+        return reqs\r
+\r
+    # the list of things passed to the js plugin\r
+    def json_settings_list (self):\r
+        # query_uuid will pass self.query results to the javascript\r
+        # and will be available as "record" in :\r
+        # on_new_record: function(record)\r
+        return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid']\r
+    \r
+\r
+    def export_json_settings (self):\r
+        return True\r
+    \r
+    #Creates an Array with the timespans depending on granularity\r
+    def createTimeSlots (this, granularity):\r
+        #return type\r
+        time_slots = []\r
+        #init times\r
+        time_s = datetime.time(0,00)\r
+        time_f = datetime.time(23,59)\r
+        now = datetime.datetime.now()\r
+        #calc diffs\r
+        dt_s = datetime.datetime.combine(now,time_s)\r
+        dt_f = datetime.datetime.combine(now,time_f)\r
+        #loop\r
+        while (dt_s < dt_f):\r
+            tmp = dt_s\r
+            dt_s =  dt_s + datetime.timedelta(minutes=granularity)\r
+            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
+            time_slots.append(ts)\r
+        #return\r
+        return time_slots\r
+    \r