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
- Alex Marandon, 2013/12/21
- Cédric Messiant, 2014/06/27
- Gouji Ochiai, 2014/08/21

View File

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

View File

@@ -2726,6 +2726,22 @@ class TestSchemaNodeSubclassing(unittest.TestCase):
result = node.deserialize(colander.null)
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):
import colander
class MyNode(colander.SchemaNode):