From 4f24e49e0b233a946c3c754de3cb2d4080c8f44a Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Fri, 3 Mar 2023 12:00:53 +0630 Subject: [PATCH 1/6] [ADD] website_sale_product_publish_date --- website_sale_product_publish_date/README.rst | 75 ++++ website_sale_product_publish_date/__init__.py | 1 + .../__manifest__.py | 16 + .../models/__init__.py | 1 + .../models/product_template.py | 36 ++ .../readme/CONTRIBUTOR.rst | 3 + .../readme/DESCRIPTION.rst | 5 + .../static/description/index.html | 416 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_website_sale_product_publish_date.py | 86 ++++ .../views/product_template_views.xml | 14 + 11 files changed, 654 insertions(+) create mode 100644 website_sale_product_publish_date/README.rst create mode 100644 website_sale_product_publish_date/__init__.py create mode 100644 website_sale_product_publish_date/__manifest__.py create mode 100644 website_sale_product_publish_date/models/__init__.py create mode 100644 website_sale_product_publish_date/models/product_template.py create mode 100644 website_sale_product_publish_date/readme/CONTRIBUTOR.rst create mode 100644 website_sale_product_publish_date/readme/DESCRIPTION.rst create mode 100644 website_sale_product_publish_date/static/description/index.html create mode 100644 website_sale_product_publish_date/tests/__init__.py create mode 100644 website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py create mode 100644 website_sale_product_publish_date/views/product_template_views.xml diff --git a/website_sale_product_publish_date/README.rst b/website_sale_product_publish_date/README.rst new file mode 100644 index 0000000000..33daf208e4 --- /dev/null +++ b/website_sale_product_publish_date/README.rst @@ -0,0 +1,75 @@ +================================= +Website Sale Product Publish Date +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:83009533a2c2b2c4b8464e5bfe7d7c210a36cff9b8cce8322a4797002c12015d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github + :target: https://github.com/OCA/e-commerce/tree/15.0/website_sale_product_publish_date + :alt: OCA/e-commerce +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/e-commerce-15-0/e-commerce-15-0-website_sale_product_publish_date + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/e-commerce&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds expected publish/unpublish date fields to the product. +Products will not be displayed on the shop page of the website if there are values +for these fields and the current date is not within the range of the publish and unpublish dates. + +This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Quartile + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/e-commerce `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_sale_product_publish_date/__init__.py b/website_sale_product_publish_date/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/website_sale_product_publish_date/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/website_sale_product_publish_date/__manifest__.py b/website_sale_product_publish_date/__manifest__.py new file mode 100644 index 0000000000..ab89536467 --- /dev/null +++ b/website_sale_product_publish_date/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright 2024 Quartile (https://www.quartile.co) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Website Sale Product Publish Date", + "category": "Website", + "version": "15.0.1.0.0", + "author": "Quartile, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/e-commerce", + "license": "AGPL-3", + "depends": ["website_sale"], + "data": [ + "views/product_template_views.xml", + ], + "installable": True, +} diff --git a/website_sale_product_publish_date/models/__init__.py b/website_sale_product_publish_date/models/__init__.py new file mode 100644 index 0000000000..e8fa8f6bf1 --- /dev/null +++ b/website_sale_product_publish_date/models/__init__.py @@ -0,0 +1 @@ +from . import product_template diff --git a/website_sale_product_publish_date/models/product_template.py b/website_sale_product_publish_date/models/product_template.py new file mode 100644 index 0000000000..15f9cf93a2 --- /dev/null +++ b/website_sale_product_publish_date/models/product_template.py @@ -0,0 +1,36 @@ +# Copyright 2024 Quartile (https://www.quartile.co) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models +from odoo.osv import expression + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + expected_publish_date = fields.Datetime() + expected_unpublish_date = fields.Datetime() + + def _get_publish_date_domain(self): + """Generate domain for publish and unpublish date filtering.""" + now = fields.Datetime.now() + return [ + "|", + "&", + ("expected_publish_date", "<=", now), + "|", + ("expected_unpublish_date", ">=", now), + ("expected_unpublish_date", "=", False), + "&", + ("expected_publish_date", "=", False), + "|", + ("expected_unpublish_date", ">=", now), + ("expected_unpublish_date", "=", False), + ] + + @api.model + def _search_build_domain(self, domain_list, search, fields, extra=None): + base_domain = super()._search_build_domain(domain_list, search, fields, extra) + publish_date_domain = self._get_publish_date_domain() + combined_domain = expression.AND([base_domain, publish_date_domain]) + return combined_domain diff --git a/website_sale_product_publish_date/readme/CONTRIBUTOR.rst b/website_sale_product_publish_date/readme/CONTRIBUTOR.rst new file mode 100644 index 0000000000..cd4e44ca98 --- /dev/null +++ b/website_sale_product_publish_date/readme/CONTRIBUTOR.rst @@ -0,0 +1,3 @@ +* `Quartile `__: + + * Aung Ko Ko Lin diff --git a/website_sale_product_publish_date/readme/DESCRIPTION.rst b/website_sale_product_publish_date/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..e91b47ac66 --- /dev/null +++ b/website_sale_product_publish_date/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module adds expected publish/unpublish date fields to the product. +Products will not be displayed on the shop page of the website if there are values +for these fields and the current date is not within the range of the publish and unpublish dates. + +This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe. diff --git a/website_sale_product_publish_date/static/description/index.html b/website_sale_product_publish_date/static/description/index.html new file mode 100644 index 0000000000..f8ca2bff3c --- /dev/null +++ b/website_sale_product_publish_date/static/description/index.html @@ -0,0 +1,416 @@ + + + + + +Website Sale Product Publish Date + + + +
+

Website Sale Product Publish Date

+ + +

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runboat

+

This module adds expected publish/unpublish date fields to the product. +Products will not be displayed on the shop page of the website if there are values +for these fields and the current date is not within the range of the publish and unpublish dates.

+

This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Quartile
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/e-commerce project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/website_sale_product_publish_date/tests/__init__.py b/website_sale_product_publish_date/tests/__init__.py new file mode 100644 index 0000000000..6ea712415f --- /dev/null +++ b/website_sale_product_publish_date/tests/__init__.py @@ -0,0 +1 @@ +from . import test_website_sale_product_publish_date diff --git a/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py b/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py new file mode 100644 index 0000000000..a35a393490 --- /dev/null +++ b/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py @@ -0,0 +1,86 @@ +# Copyright 2025 Quartile (https://www.quartile.co) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from datetime import timedelta + +from odoo import fields +from odoo.tests.common import HttpCase, tagged + + +@tagged("post_install", "-at_install") +class TestWebsiteSaleProductPublishDate(HttpCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + now = fields.Datetime.now() + cls.test_product = ( + cls.env["product.template"] + .sudo() + .create( + { + "name": "Test Product", + "list_price": 10.0, + "website_published": True, + "expected_publish_date": now - timedelta(days=1), + "expected_unpublish_date": now + timedelta(days=1), + } + ) + ) + cls.search_url = "/shop?search=Test+Product" + + def test_product_visible_in_valid_period(self): + response = self.url_open(self.search_url) + self.assertEqual( + response.status_code, 200, "Shop page did not load successfully." + ) + product_marker = b'content="Test Product"' + self.assertIn( + product_marker, + response.content, + "Product should be visible during its valid period.", + ) + + def test_product_not_visible_before_publish_date(self): + self.test_product.write( + {"expected_publish_date": fields.Datetime.now() + timedelta(days=1)} + ) + response = self.url_open(self.search_url) + self.assertEqual( + response.status_code, 200, "Shop page did not load successfully." + ) + product_marker = b'content="Test Product"' + self.assertNotIn( + product_marker, + response.content, + "Product should not be visible before its publish date.", + ) + + def test_product_not_visible_after_unpublish_date(self): + self.test_product.write( + {"expected_unpublish_date": fields.Datetime.now() - timedelta(days=1)} + ) + response = self.url_open(self.search_url) + self.assertEqual( + response.status_code, 200, "Shop page did not load successfully." + ) + product_marker = b'content="Test Product"' + self.assertNotIn( + product_marker, + response.content, + "Product should not be visible after its unpublish date.", + ) + + def test_product_visible_with_no_date_restrictions(self): + self.test_product.write( + {"expected_publish_date": False, "expected_unpublish_date": False} + ) + response = self.url_open(self.search_url) + self.assertEqual( + response.status_code, 200, "Shop page did not load successfully." + ) + product_marker = b'content="Test Product"' + self.assertIn( + product_marker, + response.content, + "Product should be visible when no date restrictions are set.", + ) diff --git a/website_sale_product_publish_date/views/product_template_views.xml b/website_sale_product_publish_date/views/product_template_views.xml new file mode 100644 index 0000000000..8288bc388f --- /dev/null +++ b/website_sale_product_publish_date/views/product_template_views.xml @@ -0,0 +1,14 @@ + + + + product.template.common.form + product.template + + + + + + + + + From 18e8a55bae863bee108aa99a4381b167c58e31eb Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Wed, 29 Jan 2025 09:34:02 +0700 Subject: [PATCH 2/6] adj --- .../test_website_sale_product_publish_date.py | 62 ++++++++----------- 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py b/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py index a35a393490..59a84ec519 100644 --- a/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py +++ b/website_sale_product_publish_date/tests/test_website_sale_product_publish_date.py @@ -12,75 +12,65 @@ class TestWebsiteSaleProductPublishDate(HttpCase): @classmethod def setUpClass(cls): super().setUpClass() - now = fields.Datetime.now() - cls.test_product = ( - cls.env["product.template"] - .sudo() - .create( - { - "name": "Test Product", - "list_price": 10.0, - "website_published": True, - "expected_publish_date": now - timedelta(days=1), - "expected_unpublish_date": now + timedelta(days=1), - } - ) + cls.now = fields.Datetime.now() + cls.test_product = cls.env["product.template"].create( + { + "name": "Test Product", + "website_published": True, + } ) cls.search_url = "/shop?search=Test+Product" - def test_product_visible_in_valid_period(self): + def test_product_visible_with_no_date_restrictions(self): response = self.url_open(self.search_url) self.assertEqual( response.status_code, 200, "Shop page did not load successfully." ) - product_marker = b'content="Test Product"' self.assertIn( - product_marker, + b'content="Test Product"', response.content, - "Product should be visible during its valid period.", + "Product should be visible when no date restrictions are set.", ) - def test_product_not_visible_before_publish_date(self): + def test_product_visible_in_valid_period(self): self.test_product.write( - {"expected_publish_date": fields.Datetime.now() + timedelta(days=1)} + { + "expected_publish_date": self.now - timedelta(days=1), + "expected_unpublish_date": self.now + timedelta(days=1), + } ) response = self.url_open(self.search_url) self.assertEqual( response.status_code, 200, "Shop page did not load successfully." ) - product_marker = b'content="Test Product"' - self.assertNotIn( - product_marker, + self.assertIn( + b'content="Test Product"', response.content, - "Product should not be visible before its publish date.", + "Product should be visible during its valid period.", ) - def test_product_not_visible_after_unpublish_date(self): - self.test_product.write( - {"expected_unpublish_date": fields.Datetime.now() - timedelta(days=1)} - ) + def test_product_not_visible_before_publish_date(self): + self.test_product.write({"expected_publish_date": self.now + timedelta(days=1)}) response = self.url_open(self.search_url) self.assertEqual( response.status_code, 200, "Shop page did not load successfully." ) - product_marker = b'content="Test Product"' self.assertNotIn( - product_marker, + b'content="Test Product"', response.content, - "Product should not be visible after its unpublish date.", + "Product should not be visible before its publish date.", ) - def test_product_visible_with_no_date_restrictions(self): + def test_product_not_visible_after_unpublish_date(self): self.test_product.write( - {"expected_publish_date": False, "expected_unpublish_date": False} + {"expected_unpublish_date": self.now - timedelta(days=1)} ) response = self.url_open(self.search_url) self.assertEqual( response.status_code, 200, "Shop page did not load successfully." ) - product_marker = b'content="Test Product"' - self.assertIn( - product_marker, + self.assertNotIn( + b'content="Test Product"', response.content, - "Product should be visible when no date restrictions are set.", + "Product should not be visible after its unpublish date.", ) From cbe71fc8a11e1b554f731d727a04a1de909fd101 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 7 Feb 2025 08:23:12 +0000 Subject: [PATCH 3/6] [UPD] Update website_sale_product_publish_date.pot --- .../website_sale_product_publish_date.pot | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 website_sale_product_publish_date/i18n/website_sale_product_publish_date.pot diff --git a/website_sale_product_publish_date/i18n/website_sale_product_publish_date.pot b/website_sale_product_publish_date/i18n/website_sale_product_publish_date.pot new file mode 100644 index 0000000000..1035318c12 --- /dev/null +++ b/website_sale_product_publish_date/i18n/website_sale_product_publish_date.pot @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_sale_product_publish_date +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: website_sale_product_publish_date +#: model:ir.model.fields,field_description:website_sale_product_publish_date.field_product_product__expected_publish_date +#: model:ir.model.fields,field_description:website_sale_product_publish_date.field_product_template__expected_publish_date +msgid "Expected Publish Date" +msgstr "" + +#. module: website_sale_product_publish_date +#: model:ir.model.fields,field_description:website_sale_product_publish_date.field_product_product__expected_unpublish_date +#: model:ir.model.fields,field_description:website_sale_product_publish_date.field_product_template__expected_unpublish_date +msgid "Expected Unpublish Date" +msgstr "" + +#. module: website_sale_product_publish_date +#: model:ir.model,name:website_sale_product_publish_date.model_product_template +msgid "Product Template" +msgstr "" From 50ee5a0a5cb9b88fc199708b8805fad194583519 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 7 Feb 2025 08:33:26 +0000 Subject: [PATCH 4/6] [BOT] post-merge updates --- website_sale_product_publish_date/README.rst | 2 +- .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 13 ++++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 website_sale_product_publish_date/static/description/icon.png diff --git a/website_sale_product_publish_date/README.rst b/website_sale_product_publish_date/README.rst index 33daf208e4..4662270c43 100644 --- a/website_sale_product_publish_date/README.rst +++ b/website_sale_product_publish_date/README.rst @@ -7,7 +7,7 @@ Website Sale Product Publish Date !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:83009533a2c2b2c4b8464e5bfe7d7c210a36cff9b8cce8322a4797002c12015d + !! source digest: sha256:047ae9ab8c30d16363b26e149c2909f583961e5ba9447cb9daa9f17fa919f5aa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/website_sale_product_publish_date/static/description/icon.png b/website_sale_product_publish_date/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/website_sale_product_publish_date/static/description/index.html b/website_sale_product_publish_date/static/description/index.html index f8ca2bff3c..c406c0f9af 100644 --- a/website_sale_product_publish_date/static/description/index.html +++ b/website_sale_product_publish_date/static/description/index.html @@ -8,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. @@ -274,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 } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -366,7 +367,7 @@

Website Sale Product Publish Date

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:83009533a2c2b2c4b8464e5bfe7d7c210a36cff9b8cce8322a4797002c12015d +!! source digest: sha256:047ae9ab8c30d16363b26e149c2909f583961e5ba9447cb9daa9f17fa919f5aa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runboat

This module adds expected publish/unpublish date fields to the product. @@ -403,7 +404,9 @@

Authors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

From fb60a616d35dce6886ca4f4bc09392a127003b8b Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Wed, 10 Sep 2025 08:01:38 +0000 Subject: [PATCH 5/6] [IMP] website_sale_product_publish_date: pre-commit auto fixes --- website_sale_product_publish_date/README.rst | 22 ++++++++-------- .../pyproject.toml | 3 +++ .../{DESCRIPTION.rst => DESCRIPTION.md} | 8 +++--- .../static/description/index.html | 25 +++++++++---------- 4 files changed, 32 insertions(+), 26 deletions(-) create mode 100644 website_sale_product_publish_date/pyproject.toml rename website_sale_product_publish_date/readme/{DESCRIPTION.rst => DESCRIPTION.md} (52%) diff --git a/website_sale_product_publish_date/README.rst b/website_sale_product_publish_date/README.rst index 4662270c43..a63f216517 100644 --- a/website_sale_product_publish_date/README.rst +++ b/website_sale_product_publish_date/README.rst @@ -17,22 +17,24 @@ Website Sale Product Publish Date :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github - :target: https://github.com/OCA/e-commerce/tree/15.0/website_sale_product_publish_date + :target: https://github.com/OCA/e-commerce/tree/18.0/website_sale_product_publish_date :alt: OCA/e-commerce .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/e-commerce-15-0/e-commerce-15-0-website_sale_product_publish_date + :target: https://translation.odoo-community.org/projects/e-commerce-18-0/e-commerce-18-0-website_sale_product_publish_date :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/e-commerce&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/e-commerce&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| This module adds expected publish/unpublish date fields to the product. -Products will not be displayed on the shop page of the website if there are values -for these fields and the current date is not within the range of the publish and unpublish dates. +Products will not be displayed on the shop page of the website if there +are values for these fields and the current date is not within the range +of the publish and unpublish dates. -This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe. +This function can be useful if you run an eCommerce platform where a set +of products need to be sold for a scheduled timeframe. **Table of contents** @@ -45,7 +47,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -53,12 +55,12 @@ Credits ======= Authors -~~~~~~~ +------- * Quartile Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -70,6 +72,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/e-commerce `_ project on GitHub. +This module is part of the `OCA/e-commerce `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_sale_product_publish_date/pyproject.toml b/website_sale_product_publish_date/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/website_sale_product_publish_date/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/website_sale_product_publish_date/readme/DESCRIPTION.rst b/website_sale_product_publish_date/readme/DESCRIPTION.md similarity index 52% rename from website_sale_product_publish_date/readme/DESCRIPTION.rst rename to website_sale_product_publish_date/readme/DESCRIPTION.md index e91b47ac66..fd0ec38afe 100644 --- a/website_sale_product_publish_date/readme/DESCRIPTION.rst +++ b/website_sale_product_publish_date/readme/DESCRIPTION.md @@ -1,5 +1,7 @@ This module adds expected publish/unpublish date fields to the product. -Products will not be displayed on the shop page of the website if there are values -for these fields and the current date is not within the range of the publish and unpublish dates. +Products will not be displayed on the shop page of the website if there +are values for these fields and the current date is not within the range +of the publish and unpublish dates. -This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe. +This function can be useful if you run an eCommerce platform where a set +of products need to be sold for a scheduled timeframe. diff --git a/website_sale_product_publish_date/static/description/index.html b/website_sale_product_publish_date/static/description/index.html index c406c0f9af..20b6fe4ad6 100644 --- a/website_sale_product_publish_date/static/description/index.html +++ b/website_sale_product_publish_date/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z 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 +274,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* 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 +300,7 @@ span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -369,11 +368,13 @@

Website Sale Product Publish Date

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:047ae9ab8c30d16363b26e149c2909f583961e5ba9447cb9daa9f17fa919f5aa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runboat

This module adds expected publish/unpublish date fields to the product. -Products will not be displayed on the shop page of the website if there are values -for these fields and the current date is not within the range of the publish and unpublish dates.

-

This function can be useful if you run an eCommerce platform where a set of products need to be sold for a scheduled timeframe.

+Products will not be displayed on the shop page of the website if there +are values for these fields and the current date is not within the range +of the publish and unpublish dates.

+

This function can be useful if you run an eCommerce platform where a set +of products need to be sold for a scheduled timeframe.

Table of contents

    @@ -390,7 +391,7 @@

    Bug Tracker

    Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

    +feedback.

    Do not contact contributors directly about support or help with technical issues.

@@ -404,13 +405,11 @@

Authors

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/e-commerce project on GitHub.

+

This module is part of the OCA/e-commerce project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 42d89102f0933ea08dba072c5c7d884d266df280 Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Wed, 10 Sep 2025 08:13:26 +0000 Subject: [PATCH 6/6] [MIG] website_sale_product_publish_date: Migration to 18.0 --- website_sale_product_publish_date/README.rst | 11 +++++++++++ .../__manifest__.py | 3 ++- .../models/product_template.py | 15 ++++++++++++++- .../static/description/index.html | 2 ++ .../views/product_template_views.xml | 17 ++++++++++++++--- 5 files changed, 43 insertions(+), 5 deletions(-) diff --git a/website_sale_product_publish_date/README.rst b/website_sale_product_publish_date/README.rst index a63f216517..e9aaf0894b 100644 --- a/website_sale_product_publish_date/README.rst +++ b/website_sale_product_publish_date/README.rst @@ -72,6 +72,17 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. +.. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px + :target: https://github.com/yostashiro + :alt: yostashiro +.. |maintainer-aungkokolin1997| image:: https://github.com/aungkokolin1997.png?size=40px + :target: https://github.com/aungkokolin1997 + :alt: aungkokolin1997 + +Current `maintainers `__: + +|maintainer-yostashiro| |maintainer-aungkokolin1997| + This module is part of the `OCA/e-commerce `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_sale_product_publish_date/__manifest__.py b/website_sale_product_publish_date/__manifest__.py index ab89536467..19869f9674 100644 --- a/website_sale_product_publish_date/__manifest__.py +++ b/website_sale_product_publish_date/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Website Sale Product Publish Date", "category": "Website", - "version": "15.0.1.0.0", + "version": "18.0.1.0.0", "author": "Quartile, Odoo Community Association (OCA)", "website": "https://github.com/OCA/e-commerce", "license": "AGPL-3", @@ -12,5 +12,6 @@ "data": [ "views/product_template_views.xml", ], + "maintainers": ["yostashiro", "aungkokolin1997"], "installable": True, } diff --git a/website_sale_product_publish_date/models/product_template.py b/website_sale_product_publish_date/models/product_template.py index 15f9cf93a2..4f2f1dd874 100644 --- a/website_sale_product_publish_date/models/product_template.py +++ b/website_sale_product_publish_date/models/product_template.py @@ -1,7 +1,8 @@ # Copyright 2024 Quartile (https://www.quartile.co) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import _, api, fields, models +from odoo.exceptions import UserError from odoo.osv import expression @@ -11,6 +12,18 @@ class ProductTemplate(models.Model): expected_publish_date = fields.Datetime() expected_unpublish_date = fields.Datetime() + @api.constrains("expected_publish_date", "expected_unpublish_date") + def _check_publish_dates(self): + for rec in self: + if ( + rec.expected_publish_date + and rec.expected_unpublish_date + and rec.expected_publish_date >= rec.expected_unpublish_date + ): + raise UserError( + _("The publish date must be earlier than the unpublish date.") + ) + def _get_publish_date_domain(self): """Generate domain for publish and unpublish date filtering.""" now = fields.Datetime.now() diff --git a/website_sale_product_publish_date/static/description/index.html b/website_sale_product_publish_date/static/description/index.html index 20b6fe4ad6..2e4b4759a4 100644 --- a/website_sale_product_publish_date/static/description/index.html +++ b/website_sale_product_publish_date/static/description/index.html @@ -409,6 +409,8 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

+

Current maintainers:

+

yostashiro aungkokolin1997

This module is part of the OCA/e-commerce project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/website_sale_product_publish_date/views/product_template_views.xml b/website_sale_product_publish_date/views/product_template_views.xml index 8288bc388f..41d3d7a220 100644 --- a/website_sale_product_publish_date/views/product_template_views.xml +++ b/website_sale_product_publish_date/views/product_template_views.xml @@ -5,9 +5,20 @@ product.template - - - + +