Author: eallen
Date: 2008-09-05 13:13:20 -0400 (Fri, 05 Sep 2008)
New Revision: 2420
Modified:
mgmt/trunk/cumin/python/cumin/widgets.py
Log:
Changed argument passed to EditableProperty class to a single dictionary item
Modified: mgmt/trunk/cumin/python/cumin/widgets.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/widgets.py 2008-09-05 15:45:46 UTC (rev 2419)
+++ mgmt/trunk/cumin/python/cumin/widgets.py 2008-09-05 17:13:20 UTC (rev 2420)
@@ -282,15 +282,13 @@
"""Display input fields for editing properties
Parent class needs to override do_get_items() and return a list of items.
- Each item should be another list.
- item[0] should be the a dict:
- item[0]["name"] is required and should be the display label
- item[0]["value"] is required and should be the value to edit
- item[0]["type"] is required and should be an input type
<"number" | "string">
- item[0]["error"] is optional and should be the error text to
display for that item
- item[0]["help"] is optional help to be displayed for the item
- item[0]["writable"] is optional and assumed to be True if missing
- item[1] should be a the path that will be prepended to the file names
+ Each item should be a dictionary.
+ ["name"] is required and should be the display label
+ ["value"] is required and should be the value to edit
+ ["type"] is required and should be an input type
<"number" | "string">
+ ["path"] is required and should be the DictParameter path to
prepend to the name
+ ["error"] is optional and should be the error text to display for
that item
+ ["property"] is optional and should be a dictionary of item
properties
"""
def __init__(self, widget, template_key):
super(EditablePropertyRenderer, self).__init__(widget, template_key)
@@ -301,53 +299,53 @@
self.__number_template = Template(self, "number_html")
self.__readonly_template = Template(self, "readonly_html")
- def render_title(self, session, propval):
- title = propval[0]["name"]
+ def render_title(self, session, item):
+ title = item["name"]
return escape_amp(title)
- def render_value(self, session, propval):
- value = propval[0]["value"]
- type = propval[0]["type"]
+ def render_value(self, session, item):
+ value = item["value"]
+ type = item["type"]
writable = True
- property = "property" in propval[0] and
propval[0]["property"] or None
+ property = "property" in item and item["property"] or None
if property:
writable = property.writable
writer = Writer()
if not writable:
- self.__readonly_template.render(writer, session, propval)
+ self.__readonly_template.render(writer, session, item)
elif type == "number":
- self.__number_template.render(writer, session, propval)
+ self.__number_template.render(writer, session, item)
else:
uvalue = value.upper()
if uvalue == "FALSE" or uvalue == "TRUE":
- self.__bool_template.render(writer, session, propval)
+ self.__bool_template.render(writer, session, item)
else:
if len(value) > 40:
- self.__bigstring_template.render(writer, session, propval)
+ self.__bigstring_template.render(writer, session, item)
else:
- self.__string_template.render(writer, session, propval)
+ self.__string_template.render(writer, session, item)
return writer.to_string()
- def render_pname(self, session, propval):
+ def render_pname(self, session, item):
return DictParameter.sep().join(
- (propval[1], escape_entity(propval[0]["name"]),
"value"))
+ (item["path"], escape_entity(item["name"]),
"value"))
- def render_ptype_name(self, session, propval):
+ def render_ptype_name(self, session, item):
return DictParameter.sep().join(
- (propval[1], escape_entity(propval[0]["name"]),
"type"))
+ (item["path"], escape_entity(item["name"]),
"type"))
- def render_ptype_value(self, session, propval):
- return propval[0]["type"]
+ def render_ptype_value(self, session, item):
+ return item["type"]
- def render_val(self, session, propval):
- value = self.get_val(session, propval)
+ def render_val(self, session, item):
+ value = self.get_val(session, item)
return escape_entity(str(value))
- def render_display_val(self, session, propval):
- value = self.get_val(session, propval)
- property = "property" in propval[0] and
propval[0]["property"] or None
+ def render_display_val(self, session, item):
+ value = self.get_val(session, item)
+ property = "property" in item and item["property"] or None
if property:
renderer = property.renderer
if renderer:
@@ -355,32 +353,35 @@
return escape_amp(str(value))
- def get_val(self, session, propval):
+ def get_val(self, session, item):
try:
- value = propval[0]["value"]
+ value = item["value"]
except KeyError:
value = ""
return value
- def render_error(self, session, propval):
- if "error" in propval[0]:
- return "<div class=\"error\">%s</div>" %
propval[0]["error"]
+ def render_error(self, session, item):
+ if "error" in item:
+ return "<div class=\"error\">%s</div>" %
item["error"]
- def render_inline_help(self, session, propval):
- property = "property" in propval[0] and
propval[0]["property"] or None
+ def render_inline_help(self, session, item):
+ property = "property" in item and item["property"] or None
if property:
- example = property.example or ""
+ if property.example:
+ example = "<span
class=\"prop_example\">%s</span>" % property.example
+ else:
+ example = ""
description = property.description or ""
- return " ".join((example, description))
+ return " ".join((description, example))
- def render_false_selected(self, session, propval):
- return propval[0]["value"].upper() == "FALSE" and
"checked=\"checked\"" or ""
+ def render_false_selected(self, session, item):
+ return item["value"].upper() == "FALSE" and
"checked=\"checked\"" or ""
- def render_true_selected(self, session, propval):
- return propval[0]["value"].upper() == "TRUE" and
"checked=\"checked\"" or ""
+ def render_true_selected(self, session, item):
+ return item["value"].upper() == "TRUE" and
"checked=\"checked\"" or ""
- def render_edit_number_class(self, session, propval):
- return "error" in propval[0] and "numeric_error" or
"edit_number"
+ def render_edit_number_class(self, session, item):
+ return "error" in item and "numeric_error" or
"edit_number"
class CuminProperties(PropertySet):
def get_args(self, session):