Commit eed569a2 authored by Tres Seaver's avatar Tres Seaver

Launchpad #142350: Display description for properties as row title, if present.

parent 705339df
...@@ -8,6 +8,9 @@ Zope Changes ...@@ -8,6 +8,9 @@ Zope Changes
Bugs fixed Bugs fixed
- Launchpad #142350: Display description for properties as row title,
if present.
- Launchpad #200007: DateTime(anotherDateTime) now preserves the - Launchpad #200007: DateTime(anotherDateTime) now preserves the
timezone. timezone.
......
...@@ -122,7 +122,7 @@ class PropertyManager(ExtensionClass.Base, ZDOM.ElementWithAttributes): ...@@ -122,7 +122,7 @@ class PropertyManager(ExtensionClass.Base, ZDOM.ElementWithAttributes):
('Access contents information', ('Access contents information',
('hasProperty', 'propertyIds', 'propertyValues','propertyItems', ('hasProperty', 'propertyIds', 'propertyValues','propertyItems',
'getProperty', 'getPropertyType', 'propertyMap', 'propertyLabel', 'getProperty', 'getPropertyType', 'propertyMap', 'propertyLabel',
'propdict', 'valid_property_id', ''), 'propertyDescription', 'propdict', 'valid_property_id', ''),
('Anonymous', 'Manager'), ('Anonymous', 'Manager'),
), ),
) )
...@@ -256,6 +256,14 @@ class PropertyManager(ExtensionClass.Base, ZDOM.ElementWithAttributes): ...@@ -256,6 +256,14 @@ class PropertyManager(ExtensionClass.Base, ZDOM.ElementWithAttributes):
return p.get('label', id) return p.get('label', id)
return id return id
def propertyDescription(self, id):
"""Return a description for the given property id
"""
for p in self._properties:
if p['id'] == id:
return p.get('description', '')
return id
def propdict(self): def propdict(self):
dict={} dict={}
for p in self._properties: for p in self._properties:
......
...@@ -61,8 +61,9 @@ property values, edit the values and click "Save Changes". ...@@ -61,8 +61,9 @@ property values, edit the values and click "Save Changes".
</tr> </tr>
<dtml-in propertyMap mapping> <dtml-in propertyMap mapping>
<dtml-let type="not _.has_key('type') and 'string' or type"> <dtml-let type="not _.has_key('type') and 'string' or type"
<tr> pdesc="propertyDescription(id)">
<tr title="&dtml-pdesc;">
<td align="left" valign="top" width="16"> <td align="left" valign="top" width="16">
<dtml-if "'d' in _['sequence-item'].get('mode', 'awd')"> <dtml-if "'d' in _['sequence-item'].get('mode', 'awd')">
<input type="checkbox" name="_ids:<dtml-var "REQUEST['management_page_charset_tag']">string:list" value="&dtml-id;" <input type="checkbox" name="_ids:<dtml-var "REQUEST['management_page_charset_tag']">string:list" value="&dtml-id;"
......
...@@ -21,10 +21,12 @@ import unittest ...@@ -21,10 +21,12 @@ import unittest
class TestPropertyManager(unittest.TestCase): class TestPropertyManager(unittest.TestCase):
"""Property management tests.""" """Property management tests."""
def _makeOne(self, *args, **kw): def _getTargetClass(self):
from OFS.PropertyManager import PropertyManager from OFS.PropertyManager import PropertyManager
return PropertyManager
return PropertyManager(*args, **kw) def _makeOne(self, *args, **kw):
return self._getTargetClass()(*args, **kw)
def test_z3interfaces(self): def test_z3interfaces(self):
from OFS.interfaces import IPropertyManager from OFS.interfaces import IPropertyManager
...@@ -52,6 +54,40 @@ class TestPropertyManager(unittest.TestCase): ...@@ -52,6 +54,40 @@ class TestPropertyManager(unittest.TestCase):
self.failUnless(type(inst.getProperty('prop2')) == type(())) self.failUnless(type(inst.getProperty('prop2')) == type(()))
self.failUnless(type(inst.prop2) == type(())) self.failUnless(type(inst.prop2) == type(()))
def test_propertyLabel_no_label_falls_back_to_id(self):
class NoLabel(self._getTargetClass()):
_properties = (
{'id': 'no_label', 'type': 'string'},
)
inst = NoLabel()
self.assertEqual(inst.propertyLabel('no_label'), 'no_label')
def test_propertyLabel_with_label(self):
class WithLabel(self._getTargetClass()):
_properties = (
{'id': 'with_label', 'type': 'string', 'label': 'With Label'},
)
inst = WithLabel()
self.assertEqual(inst.propertyLabel('with_label'), 'With Label')
def test_propertyDescription_no_description_falls_back_to_id(self):
class NoDescription(self._getTargetClass()):
_properties = (
{'id': 'no_description', 'type': 'string'},
)
inst = NoDescription()
self.assertEqual(inst.propertyDescription('no_description'), '')
def test_propertyDescription_with_description(self):
class WithDescription(self._getTargetClass()):
_properties = (
{'id': 'with_description', 'type': 'string',
'description': 'With Description'},
)
inst = WithDescription()
self.assertEqual(inst.propertyDescription('with_description'),
'With Description')
class TestPropertySheet(unittest.TestCase): class TestPropertySheet(unittest.TestCase):
"""Property management tests.""" """Property management tests."""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment