add sorting tables to the pcu view.
[monitor.git] / web / MonitorWeb / monitorweb / controllers.py
index d2978da..2d7f23e 100644 (file)
@@ -5,13 +5,18 @@ from turbogears import controllers, expose, flash
 # log = logging.getLogger("monitorweb.controllers")
 from monitor.database.info.model import *
 from pcucontrol import reboot
+from monitor.wrapper.plccache import plcdb_id2lb as site_id2lb
 
 def format_ports(pcu):
        retval = []
        if pcu.port_status and len(pcu.port_status.keys()) > 0 :
                obj = reboot.model_to_object(pcu.plc_pcu_stats['model'])
                for port in obj.supported_ports:
-                       state = pcu.port_status[str(port)]
+                       try:
+                               state = pcu.port_status[str(port)]
+                       except:
+                               state = "unknown"
+                               
                        retval.append( (port, state) )
 
        if retval == []: 
@@ -51,14 +56,18 @@ class Root(controllers.RootController):
                                        node.pcu_status = pcu.reboot_trial_status
                                else:
                                        node.pcu_status = "nodata"
+                               node.pcu_short_status = format_pcu_shortstatus(pcu)
+
                        else:
                                node.pcu_status = "nopcu"
+                               node.pcu_short_status = "none"
 
                        if node.kernel_version:
                                node.kernel = node.kernel_version.split()[2]
                        else:
                                node.kernel = ""
 
+
                        # NOTE: count filters
                        if node.observed_status != 'DOWN':
                                filtercount[node.observed_status] += 1
@@ -102,7 +111,11 @@ class Root(controllers.RootController):
                        else:
                                filtercount['pending'] += 1
                                
-                       print reboot.pcu_name(node.plc_pcu_stats)
+                       try:
+                               node.loginbase = site_id2lb[node.plc_pcu_stats['site_id']]
+                       except:
+                               node.loginbase = "unknown"
+
                        node.ports = format_ports(node)
                        node.status = format_pcu_shortstatus(node)
 
@@ -123,10 +136,32 @@ class Root(controllers.RootController):
                                
                return dict(query=query, fc=filtercount)
 
-       @expose(template="monitorweb.templates.pculist")
+       @expose(template="monitorweb.templates.sitelist")
        def site(self, filter='all'):
-               filtercount = {'ok' : 0, 'NetDown': 0, 'Not_Run' : 0, 'pending' : 0, 'all' : 0}
-               return dict(query=[], fc=filtercount)
+               filtercount = {'good' : 0, 'down': 0, 'new' : 0, 'pending' : 0, 'all' : 0}
+               fbquery = HistorySiteRecord.query.all()
+               query = []
+               for site in fbquery:
+                       # count filter
+                       filtercount['all'] += 1
+                       if site.new and site.slices_used == 0 and not site.enabled:
+                               filtercount['new'] += 1
+                       elif not site.enabled:
+                               filtercount['pending'] += 1
+                       else:
+                               filtercount[site.status] += 1
+
+                       # apply filter
+                       if filter == "all":
+                               query.append(site)
+                       elif filter == 'new' and site.new and site.slices_used == 0 and not site.enabled:
+                               query.append(site)
+                       elif filter == "pending" and not site.enabled:
+                               query.append(site)
+                       elif filter == site.status:
+                               query.append(site)
+                               
+               return dict(query=query, fc=filtercount)
 
        @expose(template="monitorweb.templates.pculist")
        def action(self, filter='all'):