[FIX] openerp: export None instead of False in raw_data mode
If we export False or an empty string, the Excel export will consider the field
similarly to a boolean, and en empty value will be converted into "=False()" in
Excel. To prevent this, we return "None" in the following cases:
- String
- Date
- Datetime
- Selection
- Reference
- Many2one
- RelationalMulti
Introduced by 6243d18
opw-643966
This commit is contained in:
parent
4be4678d8b
commit
f3e4d0a2e8
|
@ -265,7 +265,7 @@ class test_selection_function(CreatorCase):
|
||||||
def test_empty(self):
|
def test_empty(self):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.export(False),
|
self.export(False),
|
||||||
[[False]])
|
[[None]])
|
||||||
|
|
||||||
def test_value(self):
|
def test_value(self):
|
||||||
# FIXME: selection functions export the *value* itself
|
# FIXME: selection functions export the *value* itself
|
||||||
|
@ -278,7 +278,7 @@ class test_selection_function(CreatorCase):
|
||||||
# fucking hell
|
# fucking hell
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.export(0),
|
self.export(0),
|
||||||
[[False]])
|
[[None]])
|
||||||
|
|
||||||
class test_m2o(CreatorCase):
|
class test_m2o(CreatorCase):
|
||||||
model_name = 'export.many2one'
|
model_name = 'export.many2one'
|
||||||
|
|
|
@ -1093,6 +1093,11 @@ class _String(Field):
|
||||||
_related_translate = property(attrgetter('translate'))
|
_related_translate = property(attrgetter('translate'))
|
||||||
_description_translate = property(attrgetter('translate'))
|
_description_translate = property(attrgetter('translate'))
|
||||||
|
|
||||||
|
def convert_to_export(self, value, env):
|
||||||
|
if env.context.get('export_raw_data'):
|
||||||
|
return value if value else None
|
||||||
|
return bool(value) and ustr(value)
|
||||||
|
|
||||||
|
|
||||||
class Char(_String):
|
class Char(_String):
|
||||||
""" Basic string field, can be length-limited, usually displayed as a
|
""" Basic string field, can be length-limited, usually displayed as a
|
||||||
|
@ -1212,7 +1217,7 @@ class Date(Field):
|
||||||
|
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
if value and env.context.get('export_raw_data'):
|
if value and env.context.get('export_raw_data'):
|
||||||
return self.from_string(value)
|
return self.from_string(value) or None
|
||||||
return bool(value) and ustr(value)
|
return bool(value) and ustr(value)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1281,7 +1286,7 @@ class Datetime(Field):
|
||||||
|
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
if value and env.context.get('export_raw_data'):
|
if value and env.context.get('export_raw_data'):
|
||||||
return self.from_string(value)
|
return self.from_string(value) or None
|
||||||
return bool(value) and ustr(value)
|
return bool(value) and ustr(value)
|
||||||
|
|
||||||
def convert_to_display_name(self, value, record=None):
|
def convert_to_display_name(self, value, record=None):
|
||||||
|
@ -1390,7 +1395,7 @@ class Selection(Field):
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
if not isinstance(self.selection, list):
|
if not isinstance(self.selection, list):
|
||||||
# FIXME: this reproduces an existing buggy behavior!
|
# FIXME: this reproduces an existing buggy behavior!
|
||||||
return value
|
return value or None
|
||||||
for item in self._description_selection(env):
|
for item in self._description_selection(env):
|
||||||
if item[0] == value:
|
if item[0] == value:
|
||||||
return item[1]
|
return item[1]
|
||||||
|
@ -1427,7 +1432,7 @@ class Reference(Selection):
|
||||||
return "%s,%s" % (value._name, value.id) if value else False
|
return "%s,%s" % (value._name, value.id) if value else False
|
||||||
|
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
return bool(value) and value.name_get()[0][1]
|
return value.name_get()[0][1] if value else None
|
||||||
|
|
||||||
def convert_to_display_name(self, value, record=None):
|
def convert_to_display_name(self, value, record=None):
|
||||||
return ustr(value and value.display_name)
|
return ustr(value and value.display_name)
|
||||||
|
@ -1567,7 +1572,7 @@ class Many2one(_Relational):
|
||||||
return value.id
|
return value.id
|
||||||
|
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
return bool(value) and value.name_get()[0][1]
|
return value.name_get()[0][1] if value else None
|
||||||
|
|
||||||
def convert_to_display_name(self, value, record=None):
|
def convert_to_display_name(self, value, record=None):
|
||||||
return ustr(value.display_name)
|
return ustr(value.display_name)
|
||||||
|
@ -1673,7 +1678,7 @@ class _RelationalMulti(_Relational):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def convert_to_export(self, value, env):
|
def convert_to_export(self, value, env):
|
||||||
return bool(value) and ','.join(name for id, name in value.name_get())
|
return ','.join(name for id, name in value.name_get()) if value else None
|
||||||
|
|
||||||
def convert_to_display_name(self, value, record=None):
|
def convert_to_display_name(self, value, record=None):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
Loading…
Reference in New Issue