From 8c59f434d8286c5a00af26be7044798b0f7bb6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 27 Nov 2008 19:52:11 +0100 Subject: [PATCH 1/4] Fix replace method for inherit view --- trytond/osv/orm.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/trytond/osv/orm.py b/trytond/osv/orm.py index 47cecc39a0..076e38695a 100644 --- a/trytond/osv/orm.py +++ b/trytond/osv/orm.py @@ -2164,8 +2164,14 @@ class ORM(object): pos = element2.get('position', 'inside') if pos == 'replace': parent = element.getparent() + next = element.getnext() + if next is not None: + for child in element2: + index = parent.index(next) + parent.insert(index, child) + else: + parent.extend(element2.getchildren()) parent.remove(element) - parent.extend(element2.getchildren()) elif pos == 'inside': element.extend(element2.getchildren()) elif pos == 'after': From b499e8e16b63952693ba17d970ced54abf5a9172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 27 Nov 2008 20:09:39 +0100 Subject: [PATCH 2/4] Use different internal name for translate on Selection field for issue626 --- trytond/ir/translation.py | 3 ++- trytond/osv/fields.py | 4 ++-- trytond/osv/orm.py | 15 +++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py index dd9dfc011b..eb2ea18dc4 100644 --- a/trytond/ir/translation.py +++ b/trytond/ir/translation.py @@ -748,7 +748,8 @@ class TranslationClean(Wizard): continue field = model_obj._columns[field_name] if not hasattr(field, 'selection') or not field.selection \ - or not field.translate: + or not ((hasattr(field, 'translate_selection') and \ + field.translate_selection) or True): to_delete.append(translation.id) continue if isinstance(field.selection, (tuple, list)) \ diff --git a/trytond/osv/fields.py b/trytond/osv/fields.py index 0216b94da0..1806bc5568 100644 --- a/trytond/osv/fields.py +++ b/trytond/osv/fields.py @@ -269,8 +269,8 @@ class Selection(Column): or the name of the object function that return the list """ self.sort = sort - Column.__init__(self, string=string, selection=selections, - translate=translate, **args) + self.translate_selection = translate + Column.__init__(self, string=string, selection=selections, **args) def sql_type(self): if self.size: diff --git a/trytond/osv/orm.py b/trytond/osv/orm.py index 076e38695a..a3cd340aed 100644 --- a/trytond/osv/orm.py +++ b/trytond/osv/orm.py @@ -445,7 +445,8 @@ class ORM(object): (field.help, trans_help[trans_name]['id'])) if hasattr(field, 'selection') \ and isinstance(field.selection, (tuple, list)) \ - and field.translate: + and ((hasattr(field, 'translate_selection') \ + and field.translate_selection) or True): for (key, val) in field.selection: if trans_name not in trans_selection \ or val not in trans_selection[trans_name]: @@ -1916,7 +1917,10 @@ class ORM(object): context['language'], None)) if hasattr(self._columns[field], 'selection'): if isinstance(self._columns[field].selection, (tuple, list)) \ - and self._columns[field].translate: + and ((hasattr(self._columns[field], + 'translate_selection') \ + and self._columns[field].translate_selection) \ + or True): sel = self._columns[field].selection for (key, val) in sel: trans_args.append((self._name + ',' + field, @@ -1973,7 +1977,10 @@ class ORM(object): if isinstance(self._columns[field].selection, (tuple, list)): sel = self._columns[field].selection if context.get('language') and \ - self._columns[field].translate: + ((hasattr(self._columns[field], + 'translate_selection') \ + and self._columns[field].translate_selection) \ + or True): # translate each selection option sel2 = [] for (key, val) in sel: @@ -2636,7 +2643,7 @@ class ORM(object): args[i] += (table,) i += 1 else: - if field.translate and field._type in ('char', 'text'): + if field.translate: exprs = ['%s', '%s'] if args[i][1] in ('like', 'ilike', 'not like', 'not ilike'): exprs = ['%% %s%%', '%s%%'] From 9e043ef6955f832bbd3d2e20e2f503047907d854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 27 Nov 2008 20:10:26 +0100 Subject: [PATCH 3/4] Improve clean of model translation for field that are not more translated for issue626 --- trytond/ir/translation.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py index eb2ea18dc4..cccf0ede12 100644 --- a/trytond/ir/translation.py +++ b/trytond/ir/translation.py @@ -720,13 +720,21 @@ class TranslationClean(Wizard): continue elif translation.type == 'model': try: - model_name, _ = translation.name.split(',', 1) + model_name, field_name = translation.name.split(',', 1) except ValueError: to_delete.append(translation.id) continue if model_name not in self.pool.object_name_list(): to_delete.append(translation.id) continue + model_obj = self.pool.get(model_name) + if field_name not in model_obj._columns: + to_delete.append(translation.id) + continue + field = model_obj._columns[field_name] + if not hasattr(field, 'translate') or not field.translate: + to_delete.append(translation.id) + continue elif translation.type == 'odt': if not report_obj.search(cursor, user, [ ('report_name', '=', translation.name), From c6cf4b8c0c17e6e498e80bff8a924802a6e7e571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 28 Nov 2008 00:18:19 +0100 Subject: [PATCH 4/4] Fix EvalEnvironment for wrong call to __getattr__ and bad value in __nonzero__ --- trytond/osv/orm.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/trytond/osv/orm.py b/trytond/osv/orm.py index a3cd340aed..051bf0d8c2 100644 --- a/trytond/osv/orm.py +++ b/trytond/osv/orm.py @@ -262,11 +262,7 @@ class EvalEnvironment(dict): return super(EvalEnvironment, self).__getitem__(item) def __getattr__(self, item): - try: - return self.__getitem__(item) - except: - pass - return super(EvalEnvironment, self).__getattr__(item) + return self.__getitem__(item) def get(self, item): try: @@ -276,7 +272,7 @@ class EvalEnvironment(dict): return super(EvalEnvironment, self).get(item) def __nonzero__(self): - return bool(self.obj) + return bool(self.record) class ORM(object): """