From 2f22c7ac192d4bcbffbf77092ca90642e2f99c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Honor=C3=A9?= Date: Tue, 11 Jun 2024 14:19:42 +0200 Subject: [PATCH] [FIX] shopinvader: track.external.mixin create During the creation of a model who inherites of track;external.mixin, the last_external_update_date was not set (with current datetime) --- shopinvader/models/track_external_mixin.py | 3 +- shopinvader_cart_expiry/__manifest__.py | 2 +- .../migrations/14.0.1.0.3/post-migrate.py | 36 +++++++++++++++++++ .../static/description/index.html | 8 ++--- 4 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 shopinvader_cart_expiry/migrations/14.0.1.0.3/post-migrate.py diff --git a/shopinvader/models/track_external_mixin.py b/shopinvader/models/track_external_mixin.py index dc932ef67c..2295e50333 100644 --- a/shopinvader/models/track_external_mixin.py +++ b/shopinvader/models/track_external_mixin.py @@ -9,6 +9,7 @@ class TrackExternalMixin(models.AbstractModel): last_external_update_date = fields.Datetime() + @api.model def is_rest_request(self): return self.env.context.get("shopinvader_request", False) @@ -28,4 +29,4 @@ def create(self, values_list): new_vals = [] for vals in values_list: new_vals.append(self._fill_last_external_update_date(vals)) - return super().create(values_list) + return super().create(new_vals) diff --git a/shopinvader_cart_expiry/__manifest__.py b/shopinvader_cart_expiry/__manifest__.py index d280c5d086..caa1006853 100644 --- a/shopinvader_cart_expiry/__manifest__.py +++ b/shopinvader_cart_expiry/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV", "website": "https://github.com/shopinvader/odoo-shopinvader", "category": "e-commerce", - "version": "14.0.1.0.2", + "version": "14.0.1.0.3", "license": "AGPL-3", "depends": ["shopinvader"], "data": [ diff --git a/shopinvader_cart_expiry/migrations/14.0.1.0.3/post-migrate.py b/shopinvader_cart_expiry/migrations/14.0.1.0.3/post-migrate.py new file mode 100644 index 0000000000..bf16a67391 --- /dev/null +++ b/shopinvader_cart_expiry/migrations/14.0.1.0.3/post-migrate.py @@ -0,0 +1,36 @@ +# Copyright 2024 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging +from datetime import timedelta + +from odoo import SUPERUSER_ID, api, fields + +_logger = logging.getLogger(__name__) + + +def migrate(cr, version): + _logger.info("Upgrade shopinvader_cart_expiry: delete old carts") + if not version: + return + with api.Environment.manage(): + env = api.Environment(cr, SUPERUSER_ID, {}) + domain = [("cart_expiry_delay", ">", 0)] + for backend in env.search(domain): + backend = backend.with_company(backend.company_id.id).sudo_tech() + expiry_date = fields.Datetime.from_string(fields.Datetime.now()) + delta_arg = {backend.cart_expiry_delay_unit: backend.cart_expiry_delay} + expiry_date -= timedelta(**delta_arg) + domain = [ + ("shopinvader_backend_id", "=", backend.id), + ("typology", "=", "cart"), + ("state", "=", "draft"), + ("last_external_update_date", "=", False), + ] + cart_expired = backend.env["sale.order"].search(domain) + if cart_expired: + if backend.cart_expiry_policy == "cancel": + cart_expired.action_cancel() + else: + cart_expired.unlink() + return diff --git a/shopinvader_cart_expiry/static/description/index.html b/shopinvader_cart_expiry/static/description/index.html index b36271cfc9..951a5e5bbf 100644 --- a/shopinvader_cart_expiry/static/description/index.html +++ b/shopinvader_cart_expiry/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle {