[rhmessaging-commits] rhmessaging commits: r1502 - in mgmt: notes and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Mon Dec 17 11:45:58 EST 2007


Author: justi9
Date: 2007-12-17 11:45:58 -0500 (Mon, 17 Dec 2007)
New Revision: 1502

Modified:
   mgmt/cumin/python/cumin/__init__.py
   mgmt/cumin/python/cumin/client.py
   mgmt/cumin/python/cumin/exchange.py
   mgmt/cumin/python/cumin/queue.py
   mgmt/cumin/python/cumin/queue.strings
   mgmt/cumin/python/cumin/widgets.py
   mgmt/cumin/python/cumin/widgets.strings
   mgmt/notes/justin-todo.txt
Log:
Adds classes TableHeader and TableColumn.  Uses them to provide the
first cut of table sort for QueueSet.

Converts all sqlobject collection accesses to the simpler
attr-oriented method now that we reconfigured sqlobject to make them
SelectResults objects.



Modified: mgmt/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/cumin/python/cumin/__init__.py	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/__init__.py	2007-12-17 16:45:58 UTC (rev 1502)
@@ -32,7 +32,7 @@
         self.model = CuminModel()
 
         self.broker_connect_thread = BrokerConnectThread(self.model)
-        self.broker_connect_thread.start()
+        #self.broker_connect_thread.start()
 
         self.cumin_page = CuminPage(self, "cumin.html")
         self.set_default_page(self.cumin_page)

Modified: mgmt/cumin/python/cumin/client.py
===================================================================
--- mgmt/cumin/python/cumin/client.py	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/client.py	2007-12-17 16:45:58 UTC (rev 1502)
@@ -25,13 +25,12 @@
         return self.unit.get(session) == "b" and "Bytes" or "Frames"
 
     def get_item_count(self, session, vhost):
-        return Client.select(Client.q.vhostID == vhost.id).count()
+        return vhost.clients.count()
 
     def do_get_items(self, session, vhost):
         if vhost:
             start, end = self.get_bounds(session)
-            return Client.select(Client.q.vhostID == vhost.id,
-                                 orderBy="address")[start:end]
+            return vhost.clients.orderBy("address")[start:end]
 
     def render_item_link(self, session, client):
         branch = session.branch()
@@ -202,10 +201,10 @@
         return "Sessions %s" % fmt_count(self.get_item_count(session, client))
 
     def get_item_count(self, session, client):
-        return Session.select(Session.q.clientID == client.id).count()
+        return client.sessions.count()
 
     def do_get_items(self, session, client):
-        return Session.select(Session.q.clientID == client.id)
+        return client.sessions
 
     def render_item_name(self, session, session_):
         return session_.name

Modified: mgmt/cumin/python/cumin/exchange.py
===================================================================
--- mgmt/cumin/python/cumin/exchange.py	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/exchange.py	2007-12-17 16:45:58 UTC (rev 1502)
@@ -52,13 +52,12 @@
         return self.unit.get(session) == "b" and "Bytes" or "Msgs."
 
     def get_item_count(self, session, vhost):
-        return Exchange.select(Exchange.q.vhostID == vhost.id).count()
+        return vhost.exchanges.count()
 
     def do_get_items(self, session, vhost):
         if vhost:
             start, end = self.paginator.get_bounds(session)
-            return Exchange.select(Exchange.q.vhostID == vhost.id,
-                                   orderBy="name")[start:end]
+            return vhost.exchanges.orderBy("name")[start:end]
 
     def render_item_link(self, session, exchange):
         branch = session.branch()
@@ -214,11 +213,11 @@
             fmt_count(self.get_item_count(session, exchange))
 
     def get_item_count(self, session, exchange):
-        return Binding.select(Binding.q.exchangeID == exchange.id).count()
+        return exchange.bindings.count()
 
     def do_get_items(self, session, exchange):
         start, end = self.get_bounds(session)
-        return Binding.select(Binding.q.exchangeID == exchange.id)[start:end]
+        return exchange.bindings[start:end]
 
     def render_item_href(self, session, binding):
         branch = session.branch()

Modified: mgmt/cumin/python/cumin/queue.py
===================================================================
--- mgmt/cumin/python/cumin/queue.py	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/queue.py	2007-12-17 16:45:58 UTC (rev 1502)
@@ -22,26 +22,68 @@
         self.unit = UnitSwitch(app, "unit")
         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)
+
     def get_title(self, session, vhost):
         return "Queues %s" % fmt_count(self.get_item_count(session, vhost))
 
-    def render_unit_singular(self, session, vhost):
+    def get_unit_singular(self, session):
         return self.unit.get(session) == "b" and "Byte" or "Msg."
 
-    def render_unit_plural(self, session, vhost):
+    def get_unit_plural(self, session):
         return self.unit.get(session) == "b" and "Bytes" or "Msgs."
 
+    class EnqueuedColumn(TableColumn):
+        def get_title(self, session):
+            return "%s Enqueued" % self.header.parent().get_unit_plural \
+                (session)
+
+        def get_sort_key(self, session):
+            return None
+
+    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
+
+    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_item_count(self, session, vhost):
-        return Queue.select(Queue.q.vhostID == vhost.id).count()
+        return vhost.queues.count()
 
     def do_get_items(self, session, vhost):
         if vhost:
+            queues = Queue.select()
+            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)
+
             start, end = self.get_bounds(session)
-            return Queue.select(Queue.q.vhostID == vhost.id,
-                                join=LEFTJOINOn(None, QueueStats,
-                                                Queue.q.statsCurrID == QueueStats.q.id),
-                                orderBy="name")[start:end]
+            queues = queues[start:end]
 
+            return queues
+
     def render_item_link(self, session, queue):
         branch = session.branch()
         self.page().show_queue(branch, queue).show_view(branch)
@@ -216,11 +258,11 @@
             fmt_count(self.get_item_count(session, queue))
 
     def get_item_count(self, session, queue):
-        return Binding.select(Binding.q.queueID == queue.id).count()
+        return queue.bindings.count()
 
     def do_get_items(self, session, queue):
         start, end = self.get_bounds(session)
-        return Binding.select(Binding.q.queueID == queue.id)[start:end]
+        return queue.bindings[start:end]
 
     def render_item_href(self, session, binding):
         branch = session.branch()
@@ -483,11 +525,11 @@
         return "Consumers %s" % fmt_count(self.get_item_count(session, queue))
 
     def get_item_count(self, session, queue):
-        return Consumer.select(Consumer.q.queueID == queue.id).count()
+        return queue.consumers.count()
 
     def do_get_items(self, session, queue):
         start, end = self.get_bounds(session)
-        return Consumer.select(Consumer.q.queueID == queue.id)[start:end]
+        return queue.consumers[start:end]
 
     def render_item_name(self, session, consumer):
         return consumer.name

Modified: mgmt/cumin/python/cumin/queue.strings
===================================================================
--- mgmt/cumin/python/cumin/queue.strings	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/queue.strings	2007-12-17 16:45:58 UTC (rev 1502)
@@ -16,18 +16,7 @@
   </div>
 
   <table class="mobjects">
-    <tr>
-      <th><input type="checkbox"/></th>
-      <th>Name</th>
-      <th class="ralign">Consumers</th>
-      <th class="ralign">Exchange Bindings</th>
-      <th class="ralign">{unit_plural} Enqueued</th>
-      <th class="ralign">{unit_plural} Dequeued</th>
-      <th class="ralign">{unit_singular} Depth</th>
-      <th class="ralign">Depth Accel.</th>
-      <th>Status</th>
-    </tr>
-
+    {header}
     {items}
   </table>
 <!-- </form> -->

Modified: mgmt/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/cumin/python/cumin/widgets.py	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/widgets.py	2007-12-17 16:45:58 UTC (rev 1502)
@@ -328,19 +328,57 @@
     def __init__(self, app, name):
         super(TableHeader, self).__init__(app, name)
 
-        self.columns = list()
+        self.columns = list() # of TableColumns
 
-        XXX
+        self.sort = Parameter(app, "sort")
+        self.add_parameter(self.sort)
 
+    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_items(self, session, object):
         return self.columns
 
+    def render_item_class(self, session, column):
+        return column.get_class(session)
+
     def render_item_content(self, session, column):
-        return column.render_
+        return column.get_title(session)
 
     def render_item_href(self, session, column):
-        return column.get_href(session, column)
+        sort_key = column.get_sort_key(session)
 
+        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):
+        self.title = title
+        self.sort_key = sort_key
+        self.html_class = html_class
+
+        self.header = None
+
+    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
+
 class PaginatedItemSet(ItemSet):
     def __init__(self, app, name):
         super(PaginatedItemSet, self).__init__(app, name)

Modified: mgmt/cumin/python/cumin/widgets.strings
===================================================================
--- mgmt/cumin/python/cumin/widgets.strings	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/cumin/python/cumin/widgets.strings	2007-12-17 16:45:58 UTC (rev 1502)
@@ -81,3 +81,11 @@
 
 [Paginator.item_html]
 <li><a {item_class_attr} href="{item_href}">{item_content}</a></li>
+
+[TableHeader.html]
+<thead>
+  <tr>{items}</tr>
+</thead>
+
+[TableHeader.item_html]
+<th class="{item_class}"><a href="{item_href}">{item_content}</a></th>

Modified: mgmt/notes/justin-todo.txt
===================================================================
--- mgmt/notes/justin-todo.txt	2007-12-17 16:21:15 UTC (rev 1501)
+++ mgmt/notes/justin-todo.txt	2007-12-17 16:45:58 UTC (rev 1502)
@@ -35,8 +35,12 @@
 
    - Handle other exception conditions on broker connect more gracefully
 
+ * Remove sqlobject workaround in CuminStat.samples
+
 Deferred
 
+ * Go back to Widget.parent as an attr, not a function
+
  * Indicate how old stats are
 
  * Need way to control connectToBroker timeout




More information about the rhmessaging-commits mailing list