[Cluster-devel] conga/luci site/luci/Extensions/StorageReport. ...
kupcevic at sourceware.org
kupcevic at sourceware.org
Mon Oct 16 15:30:03 UTC 2006
CVSROOT: /cvs/cluster
Module name: conga
Changes by: kupcevic at sourceware.org 2006-10-16 15:30:02
Modified files:
luci/site/luci/Extensions: StorageReport.py
luci/storage : form-macros
Log message:
luci storage:
- order properties
- other minor GUI nits
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&r1=1.18&r2=1.19
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&r1=1.15&r2=1.16
--- conga/luci/site/luci/Extensions/StorageReport.py 2006/10/16 07:39:27 1.18
+++ conga/luci/site/luci/Extensions/StorageReport.py 2006/10/16 15:30:01 1.19
@@ -256,9 +256,10 @@
session.set(SESSION_STORAGE_XML_REPORT, {})
# return cached report if existing
if session[SESSION_STORAGE_XML_REPORT].has_key(storagename):
- if session[SESSION_STORAGE_XML_REPORT][storagename] != None:
+ tmp_report = session[SESSION_STORAGE_XML_REPORT][storagename]
+ if tmp_report != None:
print 'using cached storage_xml_report'
- return StorageReport(session[SESSION_STORAGE_XML_REPORT][storagename])
+ return StorageReport(tmp_report)
# retrieve storage report using ricci
@@ -460,6 +461,7 @@
mapper_ret['mapper_id'] = mapper_id
mapper_ret['mapper_type'] = type
mapper_ret['props'] = props
+ mapper_ret['props_ordered'] = get_ordered_props(props)
mapper_ret['targets'] = targets
mapper_ret['new_targets'] = new_targets
mapper_ret['sources'] = sources
@@ -655,6 +657,7 @@
mapper_ret['mapper_id'] = mapper_id
mapper_ret['mapper_type'] = type
mapper_ret['props'] = props
+ mapper_ret['props_ordered'] = get_ordered_props(props)
#mapper_ret['removable'] = removable
mapper_ret['targets'] = targets
mapper_ret['new_targets'] = new_targets
@@ -1550,6 +1553,7 @@
data['pretty_name'] = pretty_name
data['description'] = description
data['props'] = props
+ data['props_ordered'] = get_ordered_props(props)
data['path'] = path
data['mapper_type'] = mapper_type
data['mapper_id'] = mapper_id
@@ -1641,7 +1645,7 @@
d_value = value
validation_data['min_length'] = var.getAttribute('min_length')
validation_data['max_length'] = var.getAttribute('max_length')
- validation_data['illegal_chars'] = var.getAttribute('illegal_chars')
+ validation_data['illegal_chars'] = var.getAttribute('illegal_chars').replace('\'', '\\\'').replace('<', '<').replace('>', '>').replace('"', '\\\"').replace('&', '&')
validation_data['reserved_words'] = var.getAttribute('reserved_words')
elif type == VARIABLE_TYPE_INT_SEL or type == VARIABLE_TYPE_STRING_SEL:
d_type = 'select'
@@ -1668,30 +1672,81 @@
d_value += node.getAttribute('value') + ', '
if d_value != '':
d_value = d_value[:len(d_value)-2]
+ elif type == 'hidden':
+ d_type = 'hidden'
+ d_value = str(value)
else:
d_type = 'label'
d_value = value
- if not mutable and d_type != 'label':
+ if not mutable and d_type != 'label' and d_type != 'hidden':
d_type = 'label'
d_value = str(value)
pass
+ hidden = False
+ if type == 'hidden' or name in ['partition_begin', 'snapshot']:
+ hidden = True
+
if name == 'removable':
removable = value == 'true'
elif name == 'path':
pass
else:
- data[name] = {'type' : d_type,
- 'value' : d_value,
+ data[name] = {'name' : name,
'pretty_name' : get_pretty_prop_name(name),
+ 'type' : d_type,
+ 'value' : d_value,
'units' : d_units,
- 'validation' : validation_data}
+ 'validation' : validation_data,
+ 'hidden' : hidden}
pass
return (removable, data)
+def get_ordered_props(props):
+ names = []
+ sizes = []
+ mounts = []
+ min_max = []
+ uuids = []
+ rest = []
+ for prop_name in props:
+ prop = props[prop_name]
+ # names
+ if 'name' in prop_name or 'label' in prop_name or 'vendor' == prop_name or 'model' == prop_name:
+ names.append(prop)
+ # sizes
+ elif 'size' in prop_name or 'extents' in prop_name or 'percent' in prop_name:
+ sizes.append(prop)
+ # mounts
+ elif 'mount' in prop_name or 'fstab' in prop_name:
+ mounts.append(prop)
+ # min_max
+ elif 'min' in prop_name or 'max' in prop_name:
+ min_max.append(prop)
+ elif 'uuid' in prop_name:
+ uuids.append(prop)
+ else:
+ rest.append(prop)
+
+ ordered = []
+ for prop in names:
+ ordered.append(prop)
+ for prop in sizes:
+ ordered.append(prop)
+ for prop in mounts:
+ ordered.append(prop)
+ for prop in min_max:
+ ordered.append(prop)
+ for prop in rest:
+ ordered.append(prop)
+ for prop in uuids:
+ ordered.append(prop)
+ return ordered
+
+
def mutable_props(props):
for name in props:
@@ -1747,8 +1802,11 @@
old_props = d['props']
new_props = {}
for name in old_props:
- new_props['content_variable_' + d['id'] + '_' + name] = old_props[name]
+ new_name = 'content_variable_' + d['id'] + '_' + name
+ new_props[new_name] = old_props[name]
+ new_props[new_name]['name'] = new_name
d['props'] = new_props
+ d['props_ordered'] = get_ordered_props(new_props)
d['is_source'] = False
# content's color and icon
--- conga/luci/storage/form-macros 2006/10/16 07:39:27 1.15
+++ conga/luci/storage/form-macros 2006/10/16 15:30:02 1.16
@@ -370,7 +370,10 @@
</style>
</div>
<div tal:omit-tag="" metal:define-macro="li-collapse-handler">
- <a onClick="this.parentNode.className = (this.parentNode.className == 'opened') ? 'closed' : 'opened';"><img src="tree_transparent.gif"/></a>
+ <a onClick="this.parentNode.className = (this.parentNode.className == 'opened') ? 'closed' : 'opened';">
+ <img src="tree_transparent.gif"
+ style="cursor: pointer;"/>
+ </a>
</div>
@@ -766,7 +769,7 @@
<tr class="props-form-body">
<td>
<table class="props-inner-table"
- tal:define="props mapper/props">
+ tal:define="props mapper/props_ordered">
<div metal:use-macro="here/form-macros/macros/display-props-tableless"/>
</table>
</td>
@@ -990,12 +993,13 @@
<span tal:omit-tag=""
tal:define="predefines_test python:'display-props: ' + str(props) + prefix + properties_span_id"/>
<span tal:omit-tag=""
- tal:repeat="p props">
- <tr tal:define="prop python:props[p];
- prop_pr_name prop/pretty_name">
+ tal:repeat="prop props">
+ <tr tal:define="p prop/name;
+ prop_pr_name prop/pretty_name"
+ tal:condition="not: prop/hidden">
<td tal:content="prop_pr_name"/>
- <td tal:define="prop_type prop/type;
- prop_units prop/units">
+ <td tal:define="prop_type prop/type;
+ prop_units prop/units">
<table>
<tr>
<td>
@@ -1122,7 +1126,7 @@
<span tal:omit-tag=""
tal:define="predefines_test python:'display-content: ' + str(cont) + properties_span_id"/>
<span tal:omit-tag=""
- tal:define="props cont/props">
+ tal:define="props cont/props_ordered">
<table class="props-inner-table">
<div metal:use-macro="here/form-macros/macros/display-props-tableless"/>
</table>
@@ -1659,7 +1663,7 @@
<tr class="props-form-body">
<td>
<span tal:omit-tag=""
- tal:define="props bd_data/props">
+ tal:define="props bd_data/props_ordered">
<table class="props-inner-table">
<div metal:use-macro="here/form-macros/macros/display-props-tableless"/>
</table>
@@ -1882,7 +1886,7 @@
<tr class="props-form-body">
<td>
<table class="props-inner-table"
- tal:define="props mapper/props">
+ tal:define="props mapper/props_ordered">
<div metal:use-macro="here/form-macros/macros/display-props-tableless"/>
</table>
</td>
More information about the Cluster-devel
mailing list