From c0f6e50fdd8f20d493675bfa96baf159f2c4d8b5 Mon Sep 17 00:00:00 2001 From: RomainLibert Date: Mon, 7 Oct 2019 12:56:14 +0000 Subject: [PATCH] [FIX] lunch: avoid rewriting ids The wrong order was used in the row_number call, which lead to ids changing when writing on `is_favorite` closes odoo/odoo#38278 X-original-commit: 28ebe6d4849a692d234b4c256332525aa71132e5 Signed-off-by: Romain Libert (rli) --- addons/lunch/report/lunch_product_report.py | 2 +- addons/lunch/tests/test_product_report.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/addons/lunch/report/lunch_product_report.py b/addons/lunch/report/lunch_product_report.py index 91f3ff80282..f61c2724fb3 100644 --- a/addons/lunch/report/lunch_product_report.py +++ b/addons/lunch/report/lunch_product_report.py @@ -79,7 +79,7 @@ class LunchProductReport(models.Model): self._cr.execute(""" CREATE or REPLACE view %s AS ( SELECT - row_number() over (ORDER BY user_id,product.id) AS id, + row_number() over (ORDER BY users.id,product.id) AS id, product.id AS product_id, product.name, product.category_id, diff --git a/addons/lunch/tests/test_product_report.py b/addons/lunch/tests/test_product_report.py index 1c15512eeb7..624d6c5ed58 100644 --- a/addons/lunch/tests/test_product_report.py +++ b/addons/lunch/tests/test_product_report.py @@ -7,3 +7,15 @@ from odoo.addons.lunch.tests.common import TestsCommon class TestLunchProductReport(TestsCommon): def test_product_available(self): self.assertTrue(self.env['lunch.product.report'].search([]), 'There should be some record on lunch_product_report') + + def test_order_in_report(self): + pizza = self.env['lunch.product.report'].search([('product_id', '=', self.product_pizza.id)], limit=1) + self.assertEqual(pizza.name, 'Pizza') + pizza = pizza.with_user(pizza.user_id) + pizza.write({'is_favorite': True}) + self.assertTrue(pizza.product_id in pizza.user_id.favorite_lunch_product_ids) + + new_pizza = self.env['lunch.product.report'].search([('product_id', '=', self.product_pizza.id), ('user_id', '=', pizza.user_id.id)]) + + self.assertEqual(new_pizza.id, pizza.id) + self.assertEqual(new_pizza.name, 'Pizza')