Merge pull request #185 from gjo/bypass_title_overwrite2

Bypass title overwrite2
This commit is contained in:
Michael Merickel
2014-08-21 13:56:02 -05:00
3 changed files with 21 additions and 3 deletions

View File

@@ -117,3 +117,4 @@ Contributors
- Michael Howitz, 2013/12/05 - Michael Howitz, 2013/12/05
- Alex Marandon, 2013/12/21 - Alex Marandon, 2013/12/21
- Cédric Messiant, 2014/06/27 - Cédric Messiant, 2014/06/27
- Gouji Ochiai, 2014/08/21

View File

@@ -1815,7 +1815,7 @@ class _SchemaNode(object):
missing_msg = _('Required') missing_msg = _('Required')
name = '' name = ''
raw_title = _marker raw_title = _marker
title = '' title = _marker
description = '' description = ''
widget = None widget = None
after_bind = None after_bind = None
@@ -1842,8 +1842,9 @@ class _SchemaNode(object):
# bw compat forces us to manufacture a title if one is not supplied # bw compat forces us to manufacture a title if one is not supplied
title = kw.get('title', _marker) title = kw.get('title', _marker)
if title is _marker: if title is _marker:
name = kw.get('name', self.name) if self.title is _marker:
kw['title'] = name.replace('_', ' ').title() name = kw.get('name', self.name)
kw['title'] = name.replace('_', ' ').title()
else: else:
kw['raw_title'] = title kw['raw_title'] = title

View File

@@ -2726,6 +2726,22 @@ class TestSchemaNodeSubclassing(unittest.TestCase):
result = node.deserialize(colander.null) result = node.deserialize(colander.null)
self.assertEqual(result, 10) self.assertEqual(result, 10)
def test_subclass_uses_title(self):
import colander
class MyNode(colander.SchemaNode):
schema_type = colander.Int
title = 'some title'
node = MyNode(name='my')
self.assertEqual(node.title, 'some title')
def test_subclass_title_overwritten_by_constructor(self):
import colander
class MyNode(colander.SchemaNode):
schema_type = colander.Int
title = 'some title'
node = MyNode(name='my', title='other title')
self.assertEqual(node.title, 'other title')
def test_subclass_value_overridden_by_constructor(self): def test_subclass_value_overridden_by_constructor(self):
import colander import colander
class MyNode(colander.SchemaNode): class MyNode(colander.SchemaNode):