From c5db4ca91d34b9fb222785eda0b407eaf00cefce Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 15:49:31 +0200 Subject: [PATCH 1/5] [IMP] field.char: make string and size optional * Increases coherence with other fields (default string is 'unknown') * Char fields defaut to unbounded, bounds are optional bzr revid: xmo@openerp.com-20120723134931-b5moeenk0db5m2ss --- openerp/osv/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 2a6d0d6e3eb..3117793dcab 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -181,7 +181,7 @@ class reference(_column): class char(_column): _type = 'char' - def __init__(self, string, size, **args): + def __init__(self, string="unknown", size=None, **args): _column.__init__(self, string=string, size=size, **args) self._symbol_set = (self._symbol_c, self._symbol_set_char) From 8bdd7300905341957579bea7c0557dbff99a051d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 15:50:22 +0200 Subject: [PATCH 2/5] [REM] orm: pointless character replacement of quotes by spaces in field strings bzr revid: xmo@openerp.com-20120723135022-9lh5yyk0au5xag3l --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 78487e7641c..18a8ec59982 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -758,7 +758,7 @@ class BaseModel(object): 'model_id': model_id, 'model': self._name, 'name': k, - 'field_description': f.string.replace("'", " "), + 'field_description': f.string, 'ttype': f._type, 'relation': f._obj or '', 'view_load': (f.view_load and 1) or 0, From 3b5890d79b8286f564b5cf3dd8166efaa7a5f3b3 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 15:51:13 +0200 Subject: [PATCH 3/5] [REM] redundant code: a field of type one2many will always have _type one2many bzr revid: xmo@openerp.com-20120723135113-6x3s5lmljk8cdpf0 --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 18a8ec59982..a62561fc95d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -767,7 +767,7 @@ class BaseModel(object): 'required': (f.required and 1) or 0, 'selectable': (f.selectable and 1) or 0, 'translate': (f.translate and 1) or 0, - 'relation_field': (f._type=='one2many' and isinstance(f, fields.one2many)) and f._fields_id or '', + 'relation_field': f._fields_id if isinstance(f, fields.one2many) else '', 'serialization_field_id': None, } if getattr(f, 'serialization_field', None): From 8b0f8a09927254e0cb7e7e1ae1deb83ff2d78b34 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 15:52:15 +0200 Subject: [PATCH 4/5] [IMP] replace equality None test by identity test bzr revid: xmo@openerp.com-20120723135215-7n63uh4ikulsdc6r --- openerp/osv/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 3117793dcab..6c74c05bd5a 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -49,7 +49,7 @@ import simplejson _logger = logging.getLogger(__name__) def _symbol_set(symb): - if symb == None or symb == False: + if symb is None or symb == False: return None elif isinstance(symb, unicode): return symb.encode('utf-8') @@ -191,7 +191,7 @@ class char(_column): # * we need to remove the "symb==False" from the next line BUT # for now too many things rely on this broken behavior # * the symb==None test should be common to all data types - if symb == None or symb == False: + if symb is None or symb == False: return None # we need to convert the string to a unicode object to be able From ce02c0887a836897d190519c7b8e5330af16ecc4 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 23 Jul 2012 16:05:02 +0200 Subject: [PATCH 5/5] [IMP] coerce 'falsy' char sizes to None Otherwise users using fields.char(size=False) will see their content disappear without warning, not cool bzr revid: xmo@openerp.com-20120723140502-nrtgw0o47ewj25qa --- openerp/osv/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 6c74c05bd5a..b7f47fe6549 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -182,7 +182,7 @@ class char(_column): _type = 'char' def __init__(self, string="unknown", size=None, **args): - _column.__init__(self, string=string, size=size, **args) + _column.__init__(self, string=string, size=size or None, **args) self._symbol_set = (self._symbol_c, self._symbol_set_char) # takes a string (encoded in utf8) and returns a string (encoded in utf8)