[rhmessaging-commits] rhmessaging commits: r1504 - mgmt/cumin/python/cumin.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Mon Dec 17 14:18:02 EST 2007


Author: justi9
Date: 2007-12-17 14:18:02 -0500 (Mon, 17 Dec 2007)
New Revision: 1504

Modified:
   mgmt/cumin/python/cumin/queue.py
   mgmt/cumin/python/cumin/widgets.py
Log:
More table sorting improvements.



Modified: mgmt/cumin/python/cumin/queue.py
===================================================================
--- mgmt/cumin/python/cumin/queue.py	2007-12-17 18:49:24 UTC (rev 1503)
+++ mgmt/cumin/python/cumin/queue.py	2007-12-17 19:18:02 UTC (rev 1504)
@@ -23,18 +23,35 @@
         self.add_child(self.unit)
 
         self.header = TableHeader(app, "header")
-        self.header.add_column(TableColumn())
-        self.header.add_column(TableColumn("Name", "name"))
-        self.header.add_column \
-            (TableColumn("Exchange Bindings", None, "ralign"))
-        self.header.add_column(TableColumn("Consumers", None, "ralign"))
-        self.header.add_column(self.EnqueuedColumn(html_class="ralign"))
-        self.header.add_column(self.DequeuedColumn(html_class="ralign"))
-        self.header.add_column(self.DepthColumn(html_class="ralign"))
-        self.header.add_column(TableColumn("Depth Accel.", None, "ralign"))
-        self.header.add_column(TableColumn("Status", None))
         self.add_child(self.header)
 
+        col = TableColumn(None)
+        self.header.add_column(col)
+
+        col = TableColumn("name", "name", "Name")
+        self.header.add_column(col)
+
+        col = TableColumn("bindings", None, "Exchange Bindings", "ralign")
+        self.header.add_column(col)
+        
+        col = TableColumn("consumers", None, "Consumers", "ralign")
+        self.header.add_column(col)
+
+        col = self.EnqueuedColumn("enqueued", None, None, "ralign")
+        self.header.add_column(col)
+
+        col = self.DequeuedColumn("dequeued", None, None, "ralign")
+        self.header.add_column(col)
+
+        col = self.DepthColumn("depth", None, None, "ralign")
+        self.header.add_column(col)
+
+        col = TableColumn("accel", None, "Depth Accel.", "ralign")
+        self.header.add_column(col)
+
+        col = TableColumn("status", None, "Status")
+        self.header.add_column(col)
+
     def get_title(self, session, vhost):
         return "Queues %s" % fmt_count(self.get_item_count(session, vhost))
 
@@ -49,23 +66,28 @@
             return "%s Enqueued" % self.header.parent().get_unit_plural \
                 (session)
 
-        def get_sort_key(self, session):
-            return None
+        def get_column(self, session, items):
+            unit = self.header.parent().unit.get(session)
+            return "queue_stats.%sTotalEnqueues" % \
+                (unit == "b" and "byte" or "msg")
 
     class DequeuedColumn(TableColumn):
         def get_title(self, session):
             return "%s Dequeued" % self.header.parent().get_unit_plural \
                 (session)
 
-        def get_sort_key(self, session):
-            return None
+        def get_column(self, session, items):
+            unit = self.header.parent().unit.get(session)
+            return "queue_stats.%sTotalDequeues" % \
+                (unit == "b" and "byte" or "msg")
 
     class DepthColumn(TableColumn):
         def get_title(self, session):
             return "%s Depth" % self.header.parent().get_unit_singular(session)
 
-        def get_sort_key(self, session):
-            return None
+        def get_column(self, session, items):
+            unit = self.header.parent().unit.get(session)
+            return "queue_stats.%sDepth" % (unit == "b" and "byte" or "msg")
 
     def get_item_count(self, session, vhost):
         return vhost.queues.count()
@@ -76,8 +98,8 @@
             queues = queues.filter(Queue.q.vhostID == vhost.id)
             queues = queues.filter(Queue.q.statsCurrID == QueueStats.q.id)
 
-            sort_key = self.header.get_sort_key(session) or "name"
-            queues = queues.orderBy(sort_key)
+            column = self.header.get_selected_column(session)
+            queues = column.get_sorted_items(session, queues)
 
             start, end = self.get_bounds(session)
             queues = queues[start:end]

Modified: mgmt/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/cumin/python/cumin/widgets.py	2007-12-17 18:49:24 UTC (rev 1503)
+++ mgmt/cumin/python/cumin/widgets.py	2007-12-17 19:18:02 UTC (rev 1504)
@@ -330,15 +330,18 @@
 
         self.columns = list() # of TableColumns
 
-        self.sort = Parameter(app, "sort")
-        self.add_parameter(self.sort)
+        self.column = Parameter(app, "col")
+        self.add_parameter(self.column)
 
     def add_column(self, column):
         self.columns.append(column)
         column.header = self
 
-    def get_sort_key(self, session):
-        return self.sort.get(session)
+    def get_selected_column(self, session):
+        name = self.column.get(session)
+        for column in self.columns:
+            if column.name == name:
+                return column
 
     def get_items(self, session, object):
         return self.columns
@@ -350,35 +353,33 @@
         return column.get_title(session)
 
     def render_item_href(self, session, column):
-        sort_key = column.get_sort_key(session)
+        branch = session.branch()
+        self.column.set(branch, column.name)
+        return branch.marshal()
 
-        if sort_key:
-            branch = session.branch()
-            self.sort.set(branch, sort_key)
-            href = branch.marshal()
-        else:
-            href = session.marshal()
-
-        return href
-
 # XXX for now, not a Widget
 class TableColumn(object):
-    def __init__(self, title=None, sort_key=None, html_class=None):
+    def __init__(self, name, column_name=None, title=None, class_=None):
+        self.name = name
+        self.column_name = column_name
         self.title = title
-        self.sort_key = sort_key
-        self.html_class = html_class
+        self.class_ = class_
 
         self.header = None
 
+    def get_column_name(self, session):
+        return self.column_name
+
     def get_title(self, session):
         return self.title
 
-    def get_sort_key(self, session):
-        return self.sort_key
-
     def get_class(self, session):
-        return self.html_class
+        return self.class_
 
+    def get_sorted_items(self, session, items):
+        # XXX sqlobject specific
+        return items.orderBy(self.get_column_name(session))
+
 class PaginatedItemSet(ItemSet):
     def __init__(self, app, name):
         super(PaginatedItemSet, self).__init__(app, name)




More information about the rhmessaging-commits mailing list