[FIX] P3: translations + text model
This commit is contained in:
+13
-16
@@ -130,8 +130,7 @@ csv.register_dialect("UNIX", UNIX_LINE_TERMINATOR)
|
||||
|
||||
# FIXME: holy shit this whole thing needs to be cleaned up hard it's a mess
|
||||
def encode(s):
|
||||
if isinstance(s, unicode):
|
||||
return s.encode('utf8')
|
||||
assert isinstance(s, pycompat.text_type)
|
||||
return s
|
||||
|
||||
# which elements are translated inline
|
||||
@@ -808,9 +807,9 @@ def trans_generate(lang, modules, cr):
|
||||
try:
|
||||
# verify the minimal size without eventual xml tags
|
||||
# wrap to make sure html content like '<a>b</a><c>d</c>' is accepted by lxml
|
||||
wrapped = "<div>%s</div>" % sanitized_term
|
||||
wrapped = u"<div>%s</div>" % sanitized_term
|
||||
node = etree.fromstring(wrapped)
|
||||
sanitized_term = etree.tostring(node, encoding='UTF-8', method='text')
|
||||
sanitized_term = etree.tostring(node, encoding='unicode', method='text')
|
||||
except etree.ParseError:
|
||||
pass
|
||||
# remove non-alphanumeric chars
|
||||
@@ -845,12 +844,10 @@ def trans_generate(lang, modules, cr):
|
||||
cr.execute(query, query_param)
|
||||
|
||||
for (xml_name, model, res_id, module) in cr.fetchall():
|
||||
module = encode(module)
|
||||
model = encode(model)
|
||||
xml_name = "%s.%s" % (module, encode(xml_name))
|
||||
xml_name = "%s.%s" % (module, xml_name)
|
||||
|
||||
if model not in env:
|
||||
_logger.error("Unable to find object %r", model)
|
||||
_logger.error(u"Unable to find object %r", model)
|
||||
continue
|
||||
|
||||
record = env[model].browse(res_id)
|
||||
@@ -859,14 +856,14 @@ def trans_generate(lang, modules, cr):
|
||||
continue
|
||||
|
||||
if not record.exists():
|
||||
_logger.warning("Unable to find object %r with id %d", model, res_id)
|
||||
_logger.warning(u"Unable to find object %r with id %d", model, res_id)
|
||||
continue
|
||||
|
||||
if model=='ir.model.fields':
|
||||
if model==u'ir.model.fields':
|
||||
try:
|
||||
field_name = encode(record.name)
|
||||
field_name = record.name
|
||||
except AttributeError as exc:
|
||||
_logger.error("name error in %s: %s", xml_name, str(exc))
|
||||
_logger.error(u"name error in %s: %s", xml_name, str(exc))
|
||||
continue
|
||||
field_model = env.get(record.model)
|
||||
if (field_model is None or not field_model._translate or
|
||||
@@ -875,9 +872,9 @@ def trans_generate(lang, modules, cr):
|
||||
field = field_model._fields[field_name]
|
||||
|
||||
if isinstance(getattr(field, 'selection', None), (list, tuple)):
|
||||
name = "%s,%s" % (encode(record.model), field_name)
|
||||
name = "%s,%s" % (record.model, field_name)
|
||||
for dummy, val in field.selection:
|
||||
push_translation(module, 'selection', name, 0, encode(val))
|
||||
push_translation(module, 'selection', name, 0, val)
|
||||
|
||||
for field_name, field in record._fields.iteritems():
|
||||
if field.translate:
|
||||
@@ -887,13 +884,13 @@ def trans_generate(lang, modules, cr):
|
||||
except Exception:
|
||||
continue
|
||||
for term in set(field.get_trans_terms(value)):
|
||||
push_translation(module, 'model', name, xml_name, encode(term))
|
||||
push_translation(module, 'model', name, xml_name, term)
|
||||
|
||||
# End of data for ir.model.data query results
|
||||
|
||||
def push_constraint_msg(module, term_type, model, msg):
|
||||
if not callable(msg):
|
||||
push_translation(encode(module), term_type, encode(model), 0, encode(msg))
|
||||
push_translation(encode(module), term_type, encode(model), 0, msg)
|
||||
|
||||
def push_local_constraints(module, model, cons_type='sql_constraints'):
|
||||
""" Climb up the class hierarchy and ignore inherited constraints from other modules. """
|
||||
|
||||
Reference in New Issue
Block a user