From ef50a309e30d13542e2a9572b7ba6381cd6af080 Mon Sep 17 00:00:00 2001 From: Ioan Galan Date: Thu, 7 Jan 2021 11:40:50 +0100 Subject: [PATCH 1/9] [13.0][ADD] website_cookiefirst: Cookiefirst integration --- website_cookiefirst/__init__.py | 1 + website_cookiefirst/__manifest__.py | 18 ++++++++ website_cookiefirst/data/cookies_policy.xml | 36 +++++++++++++++ website_cookiefirst/models/__init__.py | 2 + .../models/res_config_settings.py | 29 ++++++++++++ website_cookiefirst/models/website.py | 13 ++++++ website_cookiefirst/readme/CONFIGURE.rst | 6 +++ website_cookiefirst/readme/CONTRIBUTORS.rst | 2 + website_cookiefirst/readme/DESCRIPTION.rst | 3 ++ .../static/description/icon.png | Bin 0 -> 8975 bytes website_cookiefirst/views/portal_template.xml | 27 +++++++++++ .../views/res_config_settings_views.xml | 43 ++++++++++++++++++ 12 files changed, 180 insertions(+) create mode 100644 website_cookiefirst/__init__.py create mode 100644 website_cookiefirst/__manifest__.py create mode 100644 website_cookiefirst/data/cookies_policy.xml create mode 100644 website_cookiefirst/models/__init__.py create mode 100644 website_cookiefirst/models/res_config_settings.py create mode 100644 website_cookiefirst/models/website.py create mode 100644 website_cookiefirst/readme/CONFIGURE.rst create mode 100644 website_cookiefirst/readme/CONTRIBUTORS.rst create mode 100644 website_cookiefirst/readme/DESCRIPTION.rst create mode 100644 website_cookiefirst/static/description/icon.png create mode 100644 website_cookiefirst/views/portal_template.xml create mode 100644 website_cookiefirst/views/res_config_settings_views.xml diff --git a/website_cookiefirst/__init__.py b/website_cookiefirst/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/website_cookiefirst/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/website_cookiefirst/__manifest__.py b/website_cookiefirst/__manifest__.py new file mode 100644 index 0000000000..9b536c2b1c --- /dev/null +++ b/website_cookiefirst/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2021 Studio73 - Ioan Galan +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Website Cookiefirst", + "summary": "Cookiefirst integration", + "category": "Website", + "version": "13.0.1.0.0", + "author": "Studio73, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/website", + "license": "AGPL-3", + "depends": ["portal", "website"], + "data": [ + "data/cookies_policy.xml", + "views/portal_template.xml", + "views/res_config_settings_views.xml", + ], + "installable": True, +} diff --git a/website_cookiefirst/data/cookies_policy.xml b/website_cookiefirst/data/cookies_policy.xml new file mode 100644 index 0000000000..4117f942a4 --- /dev/null +++ b/website_cookiefirst/data/cookies_policy.xml @@ -0,0 +1,36 @@ + + + + Cookies Policy + qweb + website.cookies + + + +
+
+
+

Cookie Declaration

+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + /legal/cookies-policy + True + + + diff --git a/website_cookiefirst/models/__init__.py b/website_cookiefirst/models/__init__.py new file mode 100644 index 0000000000..ba62e1412d --- /dev/null +++ b/website_cookiefirst/models/__init__.py @@ -0,0 +1,2 @@ +from . import res_config_settings +from . import website diff --git a/website_cookiefirst/models/res_config_settings.py b/website_cookiefirst/models/res_config_settings.py new file mode 100644 index 0000000000..ac0de0df1d --- /dev/null +++ b/website_cookiefirst/models/res_config_settings.py @@ -0,0 +1,29 @@ +# Copyright 2021 Studio73 - Ioan Galan +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + @api.depends("website_id.cookiefirst_identifier") + def _compute_cookiefirst_enabled(self): + for record in self: + record.update({"cookiefirst_enabled": bool(record.cookiefirst_identifier)}) + + def _inverse_cookiefirst_enabled(self): + for record in self: + if not record.cookiefirst_enabled: + record.website_id.update({"cookiefirst_identifier": False}) + + cookiefirst_identifier = fields.Char( + string="Cookiefirst ID", + related="website_id.cookiefirst_identifier", + readonly=False, + ) + cookiefirst_enabled = fields.Boolean( + string="Use Cookiefirst", + compute="_compute_cookiefirst_enabled", + inverse="_inverse_cookiefirst_enabled", + ) diff --git a/website_cookiefirst/models/website.py b/website_cookiefirst/models/website.py new file mode 100644 index 0000000000..0762d8f3db --- /dev/null +++ b/website_cookiefirst/models/website.py @@ -0,0 +1,13 @@ +# Copyright 2021 Studio73 - Ioan Galan +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class Website(models.Model): + _inherit = "website" + + cookiefirst_identifier = fields.Char( + string="Cookiefirst ID", + help="This field holds the ID, needed for Cookiefirst functionality.", + ) diff --git a/website_cookiefirst/readme/CONFIGURE.rst b/website_cookiefirst/readme/CONFIGURE.rst new file mode 100644 index 0000000000..4e58e2c548 --- /dev/null +++ b/website_cookiefirst/readme/CONFIGURE.rst @@ -0,0 +1,6 @@ +To configure this module, you need to: + +#. Go to **Website > Configuration > Settings** +#. Search 'Cookiefirst' option. +#. Fill in your 'Cookiefirst ID' (e.g. '00000000-0000-0000-0000-000000000000'). +#. Click on "Save" button. diff --git a/website_cookiefirst/readme/CONTRIBUTORS.rst b/website_cookiefirst/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..946245f774 --- /dev/null +++ b/website_cookiefirst/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* `Studio73 `__: + * Ioan Galan diff --git a/website_cookiefirst/readme/DESCRIPTION.rst b/website_cookiefirst/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..98446435dc --- /dev/null +++ b/website_cookiefirst/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module integrates Odoo website with GDPR through the functionality of +`Cookiefirst `, you need to register your website +domain in Cookiefirst's portal. diff --git a/website_cookiefirst/static/description/icon.png b/website_cookiefirst/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..818c6ac91407c7540c6b8ac8375f0aa6840b4a86 GIT binary patch literal 8975 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 p0%&~^0sYr + +