changeset 83f764027415 in trytond:5.8
details: https://hg.tryton.org/trytond?cmd=changeset&node=83f764027415
description:
        Use column to order when translation value is empty

        issue10094
        review331871002
        (grafted from da66215e2990963d77efffb59c9aad4543e0161e)
diffstat:

 trytond/model/fields/field.py  |   2 +-
 trytond/tests/test_modelsql.py |  25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletions(-)

diffs (47 lines):

diff -r 7ab27a034d8f -r 83f764027415 trytond/model/fields/field.py
--- a/trytond/model/fields/field.py     Sat Feb 20 00:48:50 2021 +0100
+++ b/trytond/model/fields/field.py     Sat Feb 20 00:58:39 2021 +0100
@@ -605,7 +605,7 @@
             column = Coalesce(NullIf(column, ''), translation.value)
             language = get_parent_language(language)
 
-        return [Coalesce(column, self.sql_column(table))]
+        return [Coalesce(NullIf(column, ''), self.sql_column(table))]
 
     def definition(self, model, language):
         definition = super().definition(model, language)
diff -r 7ab27a034d8f -r 83f764027415 trytond/tests/test_modelsql.py
--- a/trytond/tests/test_modelsql.py    Sat Feb 20 00:48:50 2021 +0100
+++ b/trytond/tests/test_modelsql.py    Sat Feb 20 00:58:39 2021 +0100
@@ -769,6 +769,31 @@
         self.assertEqual(other.name, "Baz")
 
     @with_transaction()
+    def test_order_empty_translation(self):
+        "Test order on empty translation value"
+        pool = Pool()
+        Model = pool.get('test.modelsql.translation')
+        Translation = pool.get('ir.translation')
+
+        with Transaction().set_context(language=self.default_language):
+            records = Model.create(
+                [{'name': "A"}, {'name': "B"}, {'name': "C"}])
+
+        translation, = Translation.search([
+                ('lang', '=', self.default_language),
+                ('name', '=', 'test.modelsql.translation,name'),
+                ('type', '=', 'model'),
+                ('res_id', '=', records[1].id),
+                ])
+        translation.value = ''
+        translation.save()
+
+        with Transaction().set_context(language=self.default_language):
+            self.assertEqual(
+                Model.search([], order=[('name', 'ASC')]),
+                records)
+
+    @with_transaction()
     def test_search_unique_result(self):
         "Test unique result on search"
         pool = Pool()

Reply via email to