[FIX] function fields: bound symbol methods of function field (type char) to the correct methods of the char field
lp bug: https://launchpad.net/bugs/1208074 fixed bzr revid: mat@openerp.com-20131008102135-r7lqvky0vd75yo1q
This commit is contained in:
parent
05994eb775
commit
3ae73d572d
|
@ -208,27 +208,29 @@ class reference(_column):
|
|||
return model.name_get(cr, uid, [int(res_id)], context=context)[0][1]
|
||||
return tools.ustr(value)
|
||||
|
||||
# takes a string (encoded in utf8) and returns a string (encoded in utf8)
|
||||
def _symbol_set_char(self, symb):
|
||||
|
||||
#TODO:
|
||||
# * 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 is None or symb == False:
|
||||
return None
|
||||
|
||||
# we need to convert the string to a unicode object to be able
|
||||
# to evaluate its length (and possibly truncate it) reliably
|
||||
u_symb = tools.ustr(symb)
|
||||
return u_symb[:self.size].encode('utf8')
|
||||
|
||||
class char(_column):
|
||||
_type = 'char'
|
||||
|
||||
def __init__(self, string="unknown", size=None, **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)
|
||||
def _symbol_set_char(self, symb):
|
||||
#TODO:
|
||||
# * 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 is None or symb == False:
|
||||
return None
|
||||
|
||||
# we need to convert the string to a unicode object to be able
|
||||
# to evaluate its length (and possibly truncate it) reliably
|
||||
u_symb = tools.ustr(symb)
|
||||
|
||||
return u_symb[:self.size].encode('utf8')
|
||||
self._symbol_f = _symbol_set_char
|
||||
# use lamda function to be able to get the field size
|
||||
self._symbol_set = (self._symbol_c, lambda x: _symbol_set_char(self, x))
|
||||
|
||||
|
||||
class text(_column):
|
||||
|
@ -1085,6 +1087,12 @@ class function(_column):
|
|||
self._symbol_f = integer._symbol_f
|
||||
self._symbol_set = integer._symbol_set
|
||||
|
||||
if type == 'char':
|
||||
self._symbol_c = char._symbol_c
|
||||
self._symbol_f = char._symbol_f
|
||||
self._symbol_set = (char._symbol_c, lambda x: _symbol_set_char(self, x))
|
||||
|
||||
|
||||
def digits_change(self, cr):
|
||||
if self._type == 'float':
|
||||
if self.digits_compute:
|
||||
|
|
Loading…
Reference in New Issue