From 39bcde5357d496fa4942ecad359592a520cf9ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 17 Mar 2016 17:14:53 +0100 Subject: [PATCH] Use a separate cursor in loop to set translation cursor_dict returns an iterator that consumes the cursor. This means the cursor can not be used before the iteration is stopped. So we need to use another cursor to make the update queries. --- trytond/ir/translation.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/trytond/ir/translation.py b/trytond/ir/translation.py index 3ad4e6af1c..edcf412429 100644 --- a/trytond/ir/translation.py +++ b/trytond/ir/translation.py @@ -1465,6 +1465,7 @@ class TranslationUpdate(Wizard): pool = Pool() Translation = pool.get('ir.translation') cursor = Transaction().connection.cursor() + cursor_update = Transaction().connection.cursor() translation = Translation.__table__() lang = self.start.language.code columns = [translation.name.as_('name'), @@ -1518,7 +1519,7 @@ class TranslationUpdate(Wizard): where=(translation.lang == lang) & translation.type.in_(self._updatable_types)))) for row in cursor_dict(cursor): - cursor.execute(*translation.update( + cursor_update.execute(*translation.update( [translation.fuzzy, translation.src], [True, row['src']], where=(translation.name == row['name']) @@ -1541,14 +1542,14 @@ class TranslationUpdate(Wizard): group_by=translation.src)) for row in cursor_dict(cursor): - cursor.execute(*translation.update( + cursor_update.execute(*translation.update( [translation.fuzzy, translation.value], [True, row['value']], where=(translation.src == row['src']) & ((translation.value == '') | (translation.value == Null)) & (translation.lang == lang))) - cursor.execute(*translation.update( + cursor_update.execute(*translation.update( [translation.fuzzy], [False], where=((translation.value == '') | (translation.value == Null))