Author: justi9
Date: 2007-12-20 09:34:26 -0500 (Thu, 20 Dec 2007)
New Revision: 1525
Modified:
mgmt/cumin/python/cumin/__init__.py
mgmt/cumin/python/cumin/broker.py
mgmt/cumin/python/cumin/broker.strings
mgmt/cumin/python/cumin/page.py
mgmt/cumin/python/wooly/widgets.py
mgmt/cumin/python/wooly/widgets.strings
Log:
Adds a bulk broker unregister form.
Adds a test.html page for purposes of developing the new query-backed
table views.
Modified: mgmt/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/cumin/python/cumin/__init__.py 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/cumin/__init__.py 2007-12-20 14:34:26 UTC (rev 1525)
@@ -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)
@@ -47,6 +47,7 @@
self.add_page(ExchangeChartPage(self, "exchange.png"))
self.add_page(ClientXmlPage(self, "client.xml"))
self.add_page(ClientChartPage(self, "client.png"))
+ self.add_page(TestPage(self, "test.html"))
class CuminServer(WebServer):
def __init__(self, port=9090):
@@ -106,3 +107,32 @@
print "Connection succeeded"
except socket.error:
print "Connection failed"
+
+from wooly.widgets import SqlItemTable, ItemTableColumn
+from sqlobject import sqlhub
+
+class TestPage(Page):
+ def __init__(self, app, name):
+ super(TestPage, self).__init__(app, name)
+
+ self.table = self.TestTable(app, "test")
+ self.add_child(self.table)
+
+ class TestTable(SqlItemTable):
+ def __init__(self, app, name):
+ super(TestPage.TestTable, self).__init__(app, name)
+
+ col = ItemTableColumn(app, "a")
+ self.add_column(col)
+
+ col = ItemTableColumn(app, "b")
+ self.add_column(col)
+
+ col = ItemTableColumn(app, "c")
+ self.add_column(col)
+
+ def get_connection(self, session):
+ return sqlhub.getConnection().getConnection()
+
+ def get_sql(self, session, object):
+ return "select id, name, durable from queue"
Modified: mgmt/cumin/python/cumin/broker.py
===================================================================
--- mgmt/cumin/python/cumin/broker.py 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/cumin/broker.py 2007-12-20 14:34:26 UTC (rev 1525)
@@ -58,24 +58,23 @@
brokers = self.brokers.get(session)
action = self.action.get(session)
- if action == "shutdown":
- for broker in brokers:
- print "Shutting down broker", broker
- elif action == "loadbalance":
- for broker in brokers:
- print "Load balancing broker", broker
+ if action == "remove":
+ branch = session.branch()
+ frame = self.page().show_broker_set_remove(branch)
+ frame.set_brokers(branch, brokers)
+ self.page().set_redirect_url(session, branch.marshal())
+ else:
+ group = self.groups.get(session)
- group = self.groups.get(session)
+ if group:
+ for broker in brokers:
+ try:
+ broker.addBrokerGroup(group)
+ except IntegrityError:
+ pass
- if group:
- for broker in brokers:
- try:
- broker.addBrokerGroup(group)
- except IntegrityError:
- pass
+ self.page().set_redirect_url(session, session.marshal())
- self.page().set_redirect_url(session, session.marshal())
-
def render_action_param_name(self, session, broker):
return self.action.path()
@@ -718,16 +717,46 @@
def render_cancel_content(self, session, broker):
return "No, Cancel"
-class BrokerSetRemove(CuminActionSetForm):
+class BrokerSetRemove(CuminActionSetForm, Frame):
+ def __init__(self, app, name):
+ super(BrokerSetRemove, self).__init__(app, name)
+
+ self.param = BrokerParameter(app, "param")
+ self.add_parameter(self.param)
+ self.add_form_parameter(self.param)
+
+ self.brokers = ListParameter(app, "id", self.param)
+ self.add_parameter(self.brokers)
+ self.add_form_parameter(self.brokers)
+
def get_title(self, session, model):
return "Unregister Brokers"
+ def set_brokers(self, session, brokers):
+ self.brokers.set(session, brokers)
+
def process_cancel(self, session, model):
branch = session.branch()
self.page().show_view(branch)
self.page().set_redirect_url(session, branch.marshal())
def process_submit(self, session, model):
- branch = session.branch()
- self.page().show_view(branch)
- self.page().set_redirect_url(session, branch.marshal())
+ brokers = self.brokers.get(session)
+
+ print "submit with brokers", brokers
+
+ for broker in brokers:
+ try:
+ print "destroying broker reg", broker
+ broker.destroySelf()
+ except Exception, e:
+ # In an extra ui step, note any errors that arose
+ print e
+
+ self.process_cancel(session, model)
+
+ def get_items(self, session, model):
+ return self.brokers.get(session)
+
+ def render_item_content(self, session, broker):
+ return "Unregister Broker '%s'" % broker.name
Modified: mgmt/cumin/python/cumin/broker.strings
===================================================================
--- mgmt/cumin/python/cumin/broker.strings 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/cumin/broker.strings 2007-12-20 14:34:26 UTC (rev 1525)
@@ -9,7 +9,7 @@
<select name="{action_param_name}" onchange="submit()">
<option value="">Choose Action...</option>
- <option value="unregister">Unregister</option>
+ <option value="remove">Unregister</option>
</select>
<h2>Add to Group:</h2>
@@ -19,7 +19,7 @@
<table class="mobjects">
<tr>
- <th><input type="checkbox"/></th>
+ <th></th>
<th>Name</th>
<!--
<th>Profile</th>
Modified: mgmt/cumin/python/cumin/page.py
===================================================================
--- mgmt/cumin/python/cumin/page.py 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/cumin/page.py 2007-12-20 14:34:26 UTC (rev 1525)
@@ -35,6 +35,9 @@
self.broker_add = BrokerAdd(app, "brokeradd")
self.add_mode(self.broker_add)
+ self.broker_set_remove = BrokerSetRemove(app, "brokersrem")
+ self.add_mode(self.broker_set_remove)
+
self.group = BrokerGroupFrame(app, "group")
self.add_mode(self.group)
@@ -90,6 +93,10 @@
frame = self.show_mode(session, self.broker_add)
return self.set_current_frame(session, frame)
+ def show_broker_set_remove(self, session):
+ frame = self.show_mode(session, self.broker_set_remove)
+ return self.set_current_frame(session, frame)
+
def show_broker_group(self, session, group):
frame = self.show_mode(session, self.group)
frame.set_object(session, group)
Modified: mgmt/cumin/python/wooly/widgets.py
===================================================================
--- mgmt/cumin/python/wooly/widgets.py 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/wooly/widgets.py 2007-12-20 14:34:26 UTC (rev 1525)
@@ -187,7 +187,6 @@
def __init__(self, app, name):
super(ItemTable, self).__init__(app, name)
- self.heading_tmpl = Template(self, "heading_html")
self.cell_tmpl = Template(self, "cell_html")
self.columns = list()
@@ -196,24 +195,15 @@
self.columns.append(column)
self.add_child(column)
+ # Here "items" are rows
def get_items(self, session, object):
return None
- def render_headings(self, session, object):
- writer = Writer()
-
- for col in self.columns:
- if col.visible.get(session):
- col.render_heading(session, object, writer)
-
- return writer.to_string()
-
def render_cells(self, session, item):
writer = Writer()
- for col in self.columns:
- if col.visible.get(session):
- col.render_cell(session, item, writer)
+ for col, datum in zip(self.columns, item):
+ writer.write(col.render(session, datum))
return writer.to_string()
@@ -226,11 +216,49 @@
def __init__(self, app, name):
super(ItemTableColumn, self).__init__(app, name)
- self.visible = Attribute(app, "visible")
- self.visible.set_default(True)
- self.add_attribute(self.visible)
+ def do_render(self, session, object):
+ return "<td>%s</td>" % str(object)
- def render_cell_content(self, session, item):
+class SqlItemTable(ItemTable):
+ def __init__(self, app, name):
+ super(SqlItemTable, self).__init__(app, name)
+
+ def get_connection(self, session):
pass
-
+ def get_sql(self, session, object):
+ pass
+
+ def get_items(self, session, object):
+ conn = self.get_connection(session)
+
+ if conn:
+ cursor = conn.cursor()
+ sql = self.get_sql(session, object)
+
+ cursor.execute(sql)
+
+ return cursor
+
+ def do_render(self, session, object):
+ cursor = self.get_items(session, object)
+
+ if cursor:
+ html = super(ItemSet, self).do_render(session, cursor)
+ else:
+ html = "XXX none"
+
+ return html
+
+ def render_items(self, session, cursor):
+ writer = Writer()
+
+ while True:
+ row = cursor.fetchone()
+
+ if not row:
+ break
+
+ self.item_tmpl.render(session, row, writer)
+
+ return writer.to_string()
Modified: mgmt/cumin/python/wooly/widgets.strings
===================================================================
--- mgmt/cumin/python/wooly/widgets.strings 2007-12-20 14:28:50 UTC (rev 1524)
+++ mgmt/cumin/python/wooly/widgets.strings 2007-12-20 14:34:26 UTC (rev 1525)
@@ -75,20 +75,10 @@
[ItemTable.html]
<table>
- <tr>
- {headings}
- </tr>
-
{items}
</table>
-[ItemTable.heading_html]
-<th>{heading_content}</th>
-
[ItemTable.item_html]
<tr>
{cells}
</tr>
-
-[ItemTable.cell_html]
-<td>{cell_content}</td>