From 171fd862a45326e18ea188f207ee378307274388 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 11 Oct 2023 12:25:07 +0200 Subject: [PATCH] [FIX] stock_average_daily_sale: Use a new cursor to avoid closed one --- .../models/stock_average_daily_sale.py | 9 ++++++--- .../tests/test_average_daily_sale.py | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/stock_average_daily_sale/models/stock_average_daily_sale.py b/stock_average_daily_sale/models/stock_average_daily_sale.py index 57b18e8..c6321eb 100644 --- a/stock_average_daily_sale/models/stock_average_daily_sale.py +++ b/stock_average_daily_sale/models/stock_average_daily_sale.py @@ -6,7 +6,7 @@ import logging from psycopg2.errors import ObjectNotInPrerequisiteState from psycopg2.extensions import AsIs -from odoo import _, api, fields, models +from odoo import _, api, fields, models, registry from odoo.addons.stock_storage_type_putaway_abc.models.stock_location import ( ABC_SELECTION, @@ -101,8 +101,9 @@ class StockAverageDailySale(models.Model): @api.model def _check_view(self): try: - with self.env.cr.savepoint(): - self.env.cr.execute("SELECT COUNT(1) FROM %s", (AsIs(self._table),)) + cr = registry(self._cr.dbname).cursor() + new_self = self.with_env(self.env(cr=cr)) # TDE FIXME + new_self.env.cr.execute("SELECT COUNT(1) FROM %s", (AsIs(self._table),)) return True except ObjectNotInPrerequisiteState: _logger.warning( @@ -111,6 +112,8 @@ class StockAverageDailySale(models.Model): return False except Exception as e: raise e + finally: + new_self.env.cr.close() # pylint: disable=redefined-outer-name @api.model diff --git a/stock_average_daily_sale/tests/test_average_daily_sale.py b/stock_average_daily_sale/tests/test_average_daily_sale.py index 2b9128b..758310b 100644 --- a/stock_average_daily_sale/tests/test_average_daily_sale.py +++ b/stock_average_daily_sale/tests/test_average_daily_sale.py @@ -218,3 +218,9 @@ class TestAverageSale(CommonAverageSaleTest, TransactionCase): str("The materialized view has not been populated. Launch the cron."), str(logger.output), ) + # Check if we can still query database + product = self.env["product.product"].search([("id", "=", self.product_1.id)]) + self.assertEqual( + product, + self.product_1, + )