From 3f33905aa2b704c65c047a3f187be7c726e404d6 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Tue, 21 Nov 2023 15:35:44 +0100 Subject: [PATCH] [IMP] stock_average_daily_sale: avoid concurrent update --- .../models/stock_average_daily_sale.py | 12 +++++++++--- 1 file changed, 9 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 d9129115c..50a97b607 100644 --- a/stock_average_daily_sale/models/stock_average_daily_sale.py +++ b/stock_average_daily_sale/models/stock_average_daily_sale.py @@ -104,8 +104,12 @@ def _check_view(self): try: 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 + new_self.env.cr.execute( + "SELECT ispopulated FROM pg_matviews WHERE matviewname = %s;", + (self._table,), + ) + records = new_self.env.cr.fetchone() + return records and records[0] except ObjectNotInPrerequisiteState: _logger.warning( _("The materialized view has not been populated. Launch the cron.") @@ -141,7 +145,9 @@ def set_refresh_date(self, date=None): @api.model def refresh_view(self): - self.env.cr.execute("refresh materialized view %s", (AsIs(self._table),)) + self.env.cr.execute( + "refresh materialized view CONCURRENTLY %s", (AsIs(self._table),) + ) self.set_refresh_date() def _create_materialized_view(self):