diff --git a/website_gdpr_odoo/README.rst b/website_gdpr_odoo/README.rst new file mode 100755 index 000000000..17adb6add --- /dev/null +++ b/website_gdpr_odoo/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Website GDPR In Odoo +==================== +user can see their personal information and can download + +Configuration +============= +- www.odoo.com/documentation/16.0/setup/install.html +- Install our custom addon + +License +------- +Affero General Public License, Version 3 `(AGPL v3). +`__ + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer : (V16)Yadhukrishnan, Contact: odoo@cyrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com +This module is maintained by Cybrosys Technologies. +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/website_gdpr_odoo/__init__.py b/website_gdpr_odoo/__init__.py new file mode 100755 index 000000000..1e015eaa4 --- /dev/null +++ b/website_gdpr_odoo/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +from . import controllers +from . import models diff --git a/website_gdpr_odoo/__manifest__.py b/website_gdpr_odoo/__manifest__.py new file mode 100755 index 000000000..1877a55c5 --- /dev/null +++ b/website_gdpr_odoo/__manifest__.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +{ + "name": "Website GDPR In Odoo", + "version": "16.0.1.0.0", + "category": "Website", + "summary": """General Data Protection Regulation is implemented On Odoo 16 + Enter-prise Edition Edition.""", + "description": """This module allows customers to manage personal data and + information.customer have the access to download and delete their + information like names,emails, phone numbers, biometric information, + location data, financial data , etc""", + "author": "Cybrosys Techno Solutions", + "company": "Cybrosys Techno Solutions", + "maintainer": "Cybrosys Techno Solutions", + "website": "https://www.cybrosys.com", + "depends": ["website", "contacts"], + "data": [ + "security/ir.model.access.csv", + "views/gdpr_request_views.xml", + "views/gdpr_template_views.xml", + "views/gdpr_request_templates.xml", + "reports/gdpr_request_templates.xml", + "views/gdpr_request_report_views.xml", + "views/mail_templates.xml", + ], + "assets": { + "web.assets_frontend": [ + "website_gdpr_odoo/static/src/js/gdpr_portal.js", + "website_gdpr_odoo/static/src/css/gdpr_portal.css", + ] + }, + "images": ["static/description/banner.png"], + "license": "AGPL-3", + "installable": True, + "auto_install": False, + "application": False, +} diff --git a/website_gdpr_odoo/controllers/__init__.py b/website_gdpr_odoo/controllers/__init__.py new file mode 100755 index 000000000..a4bffac14 --- /dev/null +++ b/website_gdpr_odoo/controllers/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +from . import website_gdpr_odoo diff --git a/website_gdpr_odoo/controllers/website_gdpr_odoo.py b/website_gdpr_odoo/controllers/website_gdpr_odoo.py new file mode 100755 index 000000000..da6f92646 --- /dev/null +++ b/website_gdpr_odoo/controllers/website_gdpr_odoo.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +from odoo import http +from odoo.http import request + + +class WebsiteForm(http.Controller): + """ + The WebsiteForm class provides the data to the page when it's loaded. + Methods: + gdpr_data_management(self): + when the page is loaded passing the values related to the gdpr + template and requests. + return a dict variable. + data_management_confirm(self,**kw): + creating gdpr requests based the type of request and the user. + create_request_submit(self): + opening the submit window. + request_delete_done(self): + opening the deleted window. + request_canceled(self): + opening the cancelled window. + """ + + @http.route(['/my/data_management'], type='http', auth="user", + website=True) + def gdpr_data_management(self): + """ + Summary: + transferring data to the frontend + Returns: + type:dict , it contains the data for the opening window. + """ + return request.render("website_gdpr_odoo.gdpr_manager", { + 'values': [{'name': gdpr_template_id['name'], + 'description': gdpr_template_id['description'], + 'id': gdpr_template_id['id'], } for gdpr_template_id in + request.env['gdpr.template'].sudo().search_read([], + ['name', + 'description'])], + 'request_values': [{ + 'name': gdpr_request_id.req_name, + 'partner': gdpr_request_id.partner_id.name, + 'date': gdpr_request_id.create_date, + 'state': gdpr_request_id.state, + 'type': gdpr_request_id.req_type, + 'template': gdpr_request_id.template_id.name, + 'id': gdpr_request_id.id + } for gdpr_request_id in request.env['gdpr.request'].sudo().search( + [('partner_id', '=', request.env.user.partner_id.id)])], + }) + + @http.route(['/gdpr_management/confirm'], type='json', auth="public", + website=True) + def data_management_confirm(self, **kw): + """ + Summary: + transferring data to the frontend + Arguments: + kw: dictionary + it contains selected template id user id. + """ + if kw.get('user_id'): + partner_id = request.env['res.users'].browse( + kw.get('user_id')).partner_id + request.env['gdpr.request'].sudo().create({ + 'req_name': f"{partner_id.name}'s {kw.get('type')} data", + 'partner_id': partner_id.id, + 'req_type': kw.get('type'), + 'state': 'pending', + 'template_id': kw.get('template_id') + }) + else: + request.redirect('/my/home') + + @http.route(['/gdpr_management/submit'], type='http', auth="user", + website=True) + def create_request_submit(self): + """ + Summary: + opening submit window + """ + return request.render("website_gdpr_odoo.gdpr_submit") + + @http.route(['/gdpr_management/success/delete'], type='http', + auth="user", website=True) + def request_delete_done(self): + """ + Summary: + opening delete window + """ + return request.render("website_gdpr_odoo.gdpr_delete_success") + + @http.route(['/gdpr_management/canceled'], type='http', auth="user", + website=True) + def request_canceled(self): + """ + Summary: + opening cancel window + """ + return request.render("website_gdpr_odoo.gdpr_cancel_success") diff --git a/website_gdpr_odoo/doc/RELEASE_NOTES.md b/website_gdpr_odoo/doc/RELEASE_NOTES.md new file mode 100755 index 000000000..7c6a0b5ad --- /dev/null +++ b/website_gdpr_odoo/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 17.11.2023 +#### Version 16.0.1.0.0 +##### ADD +- Initial Commit for Website GDPR In Odoo diff --git a/website_gdpr_odoo/models/__init__.py b/website_gdpr_odoo/models/__init__.py new file mode 100755 index 000000000..631552fef --- /dev/null +++ b/website_gdpr_odoo/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +from . import gdpr_template +from . import gdpr_request diff --git a/website_gdpr_odoo/models/gdpr_request.py b/website_gdpr_odoo/models/gdpr_request.py new file mode 100755 index 000000000..a4504b255 --- /dev/null +++ b/website_gdpr_odoo/models/gdpr_request.py @@ -0,0 +1,158 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +import base64 +from odoo import api, fields, models + + +class GDPRRequest(models.Model): + """ + The GDPRRequest class fields and different methods are included. + Methods: + action_confirm_request(self): + for action confirm button change state to confirm. + action_delete_request(self,**kw): + for updating the values in 'res.partner'(deleting records). + action_cancel_request(self): + for action cancel button change state to cancel. + action_download_pdf(self): + for downloading the selected data. + create(self): + for getting overriding sequence number. + """ + _name = "gdpr.request" + _description = "GDPR Request" + + name = fields.Char(string="Serial Number", readonly=True, + copy=False, default='New', help="The serial number") + req_name = fields.Char(string="Name", help="Request Name") + partner_id = fields.Many2one('res.partner', string="Customer", + help="Specify the customer for the request.") + req_type = fields.Selection([ + ('download', 'Download Data'), + ('delete', 'Delete Data')], string="Request Type", + help="Please specify the type of request you want to make.") + state = fields.Selection([ + ('pending', 'Pending'), + ('cancel', 'Cancel'), + ('done', 'Done')], default="pending", help="State of the request") + template_id = fields.Many2one('gdpr.template', string="Template", + help="Selected Template") + + def action_confirm_request(self): + """ + Summary: + for action confirm + """ + self.write({'state': 'done'}) + self.action_send_email() + + def action_send_email(self): + """ + Summary: + for sending mail to the partner when the request is confirmed or + canceled + """ + state = "Confirmed" if self.state == "done" else "Cancelled" + email_values = { + 'email_to': self.partner_id.email, + 'content': "Your Gdpr Request " + self.name + " for " + + self.req_type + " data is " + state, + 'company': self.env.company.name, + } + mail_template = self.env.ref( + 'website_gdpr_odoo.gdpr_request_email_template') + mail_template.with_context(email_values).send_mail(self.id, + email_layout_xmlid='mail.mail_notification_light', + force_send=True) + + def action_delete_request(self): + """ + Summary: + for updating the values in 'res.partner'(deleting records) + """ + value_list = [partner_field.name for partner_field in + self.template_id.field_ids if + not partner_field.relation] + for value in value_list: + self.partner_id.update({ + value: False, + }) + self.write({'state': 'done'}) + + def action_cancel_request(self): + """ + Summary: + for action cancel + """ + self.write({'state': 'cancel'}) + self.action_send_email() + + def action_download_pdf(self, data): + """ + Summary: + for downloading the selected data + """ + value_list = [] + request_id = self.env['gdpr.request'].sudo().browse(data) + partner_fields = request_id.template_id.sudo().field_ids + partner_id = request_id.partner_id + for rec in partner_fields: + if rec.ttype == "many2one": + field_val = partner_id.mapped(rec.name).name + if field_val: + list_to_str = ' '.join([str(elem) for elem in field_val]) + else: + list_to_str = False + value_list.append({'data': list_to_str, + 'name': rec.field_description}) + else: + field_val = partner_id.mapped(rec.name) + list_to_str = ' '.join([str(elem) for elem in field_val]) + value_list.append({'data': list_to_str, + 'name': rec.field_description}) + values = { + 'name': partner_id.name, + 'value': value_list + } + pdf = self.env['ir.actions.report'].sudo()._render_qweb_pdf( + 'website_gdpr_odoo.action_pdf_download', request_id.id, data=values) + attachment = self.env['ir.attachment'].sudo().create({ + 'datas': base64.b64encode(pdf[0]), + 'name': "Data Download", + 'type': 'binary', + 'res_model': 'gdpr.request', + 'res_id': request_id.id, + 'public': True + }) + return { + 'url': f'/web/content/{attachment.id}?download=true&access_token=', + } + + @api.model + def create(self, vals): + """ + Summary: + for getting overriding sequence number + """ + if vals.get('name', 'New') == 'New': + vals['name'] = self.env['ir.sequence'].next_by_code( + 'request.sequence') or 'New' + return super(GDPRRequest, self).create(vals) diff --git a/website_gdpr_odoo/models/gdpr_template.py b/website_gdpr_odoo/models/gdpr_template.py new file mode 100755 index 000000000..15fb608df --- /dev/null +++ b/website_gdpr_odoo/models/gdpr_template.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Yadhukrishnan K (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +################################################################################ +from odoo import fields, models + + +class GDPRTemplate(models.Model): + """ + The GDPRTemplate class included fields and methode to archive. + Methods: + action_archive_template(self): + to archive the record. + """ + _name = "gdpr.template" + _description = "GDPR Template" + + name = fields.Char(string="Title", required=True, + help="Providing the name of the template") + description = fields.Html(string="Short Description", required=True, + help="Providing the description for the template") + active = fields.Boolean(default=True) + allow_messages = fields.Boolean(string="Allow Gdpr Message", default=True, + help="By enabling this an email will send " + "to the partner while confirming the " + "gdpr request") + field_ids = fields.Many2many('ir.model.fields', + domain="[('model', '=', 'res.partner')]", + string="Data Fields", + required=True, + help="select the fields to" + " visible to the customer") + + def action_archive_template(self): + """ + Summary: + to archive the record + """ + self.active = False diff --git a/website_gdpr_odoo/reports/gdpr_request_templates.xml b/website_gdpr_odoo/reports/gdpr_request_templates.xml new file mode 100644 index 000000000..7e6fbd211 --- /dev/null +++ b/website_gdpr_odoo/reports/gdpr_request_templates.xml @@ -0,0 +1,39 @@ + + + + + diff --git a/website_gdpr_odoo/security/ir.model.access.csv b/website_gdpr_odoo/security/ir.model.access.csv new file mode 100755 index 000000000..4c3fde151 --- /dev/null +++ b/website_gdpr_odoo/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +gdpr_request_group_website_designer,access.gdpr.request.designer,model_gdpr_request,website.group_website_designer,1,1,1,1 +gdpr_request_group_restricted_editor,access.gdpr.request.restricted.editor,model_gdpr_request,website.group_website_restricted_editor,1,0,0,0 +gdpr_template_group_website_designer,access.gdpr.template.designer,model_gdpr_template,website.group_website_designer,1,1,1,1 +gdpr_template_group_restricted_editor,access.gdpr.template.restricted.editor,model_gdpr_template,website.group_website_restricted_editor,1,0,0,0 diff --git a/website_gdpr_odoo/static/description/assets/icons/check.png b/website_gdpr_odoo/static/description/assets/icons/check.png new file mode 100755 index 000000000..c8e85f51d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/check.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/chevron.png b/website_gdpr_odoo/static/description/assets/icons/chevron.png new file mode 100755 index 000000000..2089293d6 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/chevron.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/cogs.png b/website_gdpr_odoo/static/description/assets/icons/cogs.png new file mode 100755 index 000000000..95d0bad62 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/cogs.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/consultation.png b/website_gdpr_odoo/static/description/assets/icons/consultation.png new file mode 100755 index 000000000..8319d4baa Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/consultation.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/ecom-black.png b/website_gdpr_odoo/static/description/assets/icons/ecom-black.png new file mode 100755 index 000000000..a9385ff13 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/ecom-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/education-black.png b/website_gdpr_odoo/static/description/assets/icons/education-black.png new file mode 100755 index 000000000..3eb09b27b Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/education-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/hotel-black.png b/website_gdpr_odoo/static/description/assets/icons/hotel-black.png new file mode 100755 index 000000000..130f613be Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/hotel-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/license.png b/website_gdpr_odoo/static/description/assets/icons/license.png new file mode 100755 index 000000000..a5869797e Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/license.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/lifebuoy.png b/website_gdpr_odoo/static/description/assets/icons/lifebuoy.png new file mode 100755 index 000000000..658d56ccc Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/lifebuoy.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/manufacturing-black.png b/website_gdpr_odoo/static/description/assets/icons/manufacturing-black.png new file mode 100755 index 000000000..697eb0e9f Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/manufacturing-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/pos-black.png b/website_gdpr_odoo/static/description/assets/icons/pos-black.png new file mode 100755 index 000000000..97c0f90c1 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/pos-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/puzzle.png b/website_gdpr_odoo/static/description/assets/icons/puzzle.png new file mode 100755 index 000000000..65cf854e7 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/puzzle.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/restaurant-black.png b/website_gdpr_odoo/static/description/assets/icons/restaurant-black.png new file mode 100755 index 000000000..4a35eb939 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/restaurant-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/service-black.png b/website_gdpr_odoo/static/description/assets/icons/service-black.png new file mode 100755 index 000000000..301ab51cb Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/service-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/trading-black.png b/website_gdpr_odoo/static/description/assets/icons/trading-black.png new file mode 100755 index 000000000..9398ba2f1 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/trading-black.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/training.png b/website_gdpr_odoo/static/description/assets/icons/training.png new file mode 100755 index 000000000..884ca024d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/training.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/update.png b/website_gdpr_odoo/static/description/assets/icons/update.png new file mode 100755 index 000000000..ecbc5a01a Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/update.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/user.png b/website_gdpr_odoo/static/description/assets/icons/user.png new file mode 100755 index 000000000..6ffb23d9f Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/user.png differ diff --git a/website_gdpr_odoo/static/description/assets/icons/wrench.png b/website_gdpr_odoo/static/description/assets/icons/wrench.png new file mode 100755 index 000000000..6c04dea0f Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/wrench.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/categories.png b/website_gdpr_odoo/static/description/assets/misc/categories.png new file mode 100755 index 000000000..bedf1e0b1 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/categories.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/check-box.png b/website_gdpr_odoo/static/description/assets/misc/check-box.png new file mode 100755 index 000000000..42caf24b9 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/check-box.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/compass.png b/website_gdpr_odoo/static/description/assets/misc/compass.png new file mode 100755 index 000000000..d5fed8faa Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/compass.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/corporate.png b/website_gdpr_odoo/static/description/assets/misc/corporate.png new file mode 100755 index 000000000..2eb13edbf Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/corporate.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/customer-support.png b/website_gdpr_odoo/static/description/assets/misc/customer-support.png new file mode 100755 index 000000000..79efc72ed Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/customer-support.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/cybrosys-logo.png b/website_gdpr_odoo/static/description/assets/misc/cybrosys-logo.png new file mode 100755 index 000000000..cc3cc0ccf Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/cybrosys-logo.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/features.png b/website_gdpr_odoo/static/description/assets/misc/features.png new file mode 100755 index 000000000..b41769f77 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/features.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/logo.png b/website_gdpr_odoo/static/description/assets/misc/logo.png new file mode 100755 index 000000000..478462d3e Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/logo.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/pictures.png b/website_gdpr_odoo/static/description/assets/misc/pictures.png new file mode 100755 index 000000000..56d255fe9 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/pictures.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/pie-chart.png b/website_gdpr_odoo/static/description/assets/misc/pie-chart.png new file mode 100755 index 000000000..426e05244 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/pie-chart.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/right-arrow.png b/website_gdpr_odoo/static/description/assets/misc/right-arrow.png new file mode 100755 index 000000000..730984a06 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/right-arrow.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/star.png b/website_gdpr_odoo/static/description/assets/misc/star.png new file mode 100755 index 000000000..2eb9ab29f Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/star.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/support.png b/website_gdpr_odoo/static/description/assets/misc/support.png new file mode 100755 index 000000000..4f18b8b82 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/support.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/whatsapp.png b/website_gdpr_odoo/static/description/assets/misc/whatsapp.png new file mode 100755 index 000000000..d513a5356 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/whatsapp.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l1.png b/website_gdpr_odoo/static/description/assets/modules/l1.png new file mode 100755 index 000000000..bd1a82caa Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l1.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l2.png b/website_gdpr_odoo/static/description/assets/modules/l2.png new file mode 100755 index 000000000..6058f6c3b Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l2.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l3.png b/website_gdpr_odoo/static/description/assets/modules/l3.png new file mode 100755 index 000000000..618e3e6c4 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l3.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l4.png b/website_gdpr_odoo/static/description/assets/modules/l4.png new file mode 100755 index 000000000..163485cfd Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l4.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l5.png b/website_gdpr_odoo/static/description/assets/modules/l5.png new file mode 100755 index 000000000..df65629bf Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l5.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/l6.png b/website_gdpr_odoo/static/description/assets/modules/l6.png new file mode 100755 index 000000000..2a722d66e Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/l6.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot.png new file mode 100755 index 000000000..485f63a86 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot0.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot0.png new file mode 100644 index 000000000..59f172809 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot0.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot10.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot10.png new file mode 100755 index 000000000..24bccf656 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot10.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot11.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot11.png new file mode 100755 index 000000000..050d81276 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot11.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot12.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot12.png new file mode 100755 index 000000000..0d874cf2d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot12.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot2.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot2.png new file mode 100755 index 000000000..7a35fedc4 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot2.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot3.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot3.png new file mode 100755 index 000000000..2086adbf6 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot3.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot4.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot4.png new file mode 100755 index 000000000..690f68a5a Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot4.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot5.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot5.png new file mode 100755 index 000000000..f12fe4666 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot5.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot6.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot6.png new file mode 100755 index 000000000..b53024f32 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot6.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot7.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot7.png new file mode 100755 index 000000000..6f54df77e Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot7.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot8.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot8.png new file mode 100755 index 000000000..b81030bdb Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot8.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/Screenshot9.png b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot9.png new file mode 100755 index 000000000..73d5c254c Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/Screenshot9.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/hero.gif b/website_gdpr_odoo/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..7896fa3bd Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/hero.gif differ diff --git a/website_gdpr_odoo/static/description/banner.png b/website_gdpr_odoo/static/description/banner.png new file mode 100644 index 000000000..693c58ced Binary files /dev/null and b/website_gdpr_odoo/static/description/banner.png differ diff --git a/website_gdpr_odoo/static/description/icon.png b/website_gdpr_odoo/static/description/icon.png new file mode 100755 index 000000000..102a2b9ba Binary files /dev/null and b/website_gdpr_odoo/static/description/icon.png differ diff --git a/website_gdpr_odoo/static/description/index.html b/website_gdpr_odoo/static/description/index.html new file mode 100755 index 000000000..f907ea845 --- /dev/null +++ b/website_gdpr_odoo/static/description/index.html @@ -0,0 +1,632 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Website GDPR In Odoo +

+

General Data Protection Regulation (GDPR) for odoo.

+ + +
+
+
+
+ + +
+
+ +
+

Explore This + Module

+
+ + + + +
+
+ +
+

Overview +

+
+
+
+ Odoo GDPR module lets your customers request access to their data stored in your database. They can request for their details stored in the system, and exercise the right to request partial/full deletion of their personal data from your website. +
+
+ + + +
+
+ +
+

Features +

+
+
+
+
+ + Allow customer to access their data in your database. +
+
+ + Customer can manage their personal data. +
+
+
+ +
+ + Customer can request their data for downloading. +
+
+ + Customer can request for removing their data. +
+
+
+ + + +
+
+ +
+

Screenshots +

+
+
+
+ +
+

GDPR Template Configuration + +

+

Under Website > Configuration > + GDPR Template. +

+ +
+ +
+

GDPR TEMPLATE +

+

Admin can create the GDPR Template.

+ +
+ +
+

Website View

+

User need to open My Account section +

+ +
+ +
+ +

Then open the link "Manage your personal data". +

+ +
+ +
+ +

User can see all requests and templates. +

+ +
+
+ +

After clicking the button the request has been created in the backend. + +

+ +
+
+

GDPR Requests

+

Under Website > Configuration > + GDPR Requests. +

+ +
+
+ + + + +
+
+ +

After clicking confirm user can download data from the website.

+ +
+
+ + + + +
+
+ +

Also, user can remove their data by clicking delete button

+ +
+
+ + + + +
+ +
+
+ + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + + + + +
+
+ +
+

Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + +
+
+ +
+

Our + Industries +

+
+
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/website_gdpr_odoo/static/src/css/gdpr_portal.css b/website_gdpr_odoo/static/src/css/gdpr_portal.css new file mode 100755 index 000000000..6da694243 --- /dev/null +++ b/website_gdpr_odoo/static/src/css/gdpr_portal.css @@ -0,0 +1,85 @@ +.c-pill { + align-items: center; + font-family: "Open Sans", Arial, Verdana, sans-serif; + font-weight: bold; + font-size: 11px; + display: inline-block; + height: 100%; + white-space: nowrap; + width: auto; + position: relative; + border-radius: 100px; + line-height: 1; + overflow: hidden; + padding: 0px 12px 0px 20px; + text-overflow: ellipsis; + line-height: 1.25rem; + color: #fff; + word-break: break-word; +} +.c-pill--success { + background: #6BC167; +} +.c-pill--warning { + background: #ffc400; +} +.c-pill--danger { + background: #ff4436; +} +.card-gdpr:hover { + background-color: coral; +} +.table-gdpr { + font-family: arial, sans-serif; + border-collapse: collapse; + width: 100% +} +.th-gdpr { + background-color: #04AA6D; + color: white; +} +.td-gdpr, +.th-gdpr { + border: 2px solid #dddddd; + padding: 8px; +} +.gdpr-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + opacity: 0; + visibility: hidden; + transform: scale(1.1); + transition: visibility 0s linear 0.25s, opacity 0.25s 0s, transform 0.25s; +} +.gdpr-modal-content { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: white; + padding: 1rem 1.5rem; + width: 30rem; + border-radius: 0.5rem; +} +.gdpr-close-button { + float: right; + width: 1.5rem; + line-height: 1.5rem; + text-align: center; + cursor: pointer; + border-radius: 0.25rem; + background-color: lightgray; +} +.gdpr-close-button:hover { + background-color: darkgray; +} +.gdpr-show-modal { + opacity: 1; + visibility: visible; + transform: scale(1.0); + transition: visibility 0s linear 0s, opacity 0.25s 0s, transform 0.25s; +} diff --git a/website_gdpr_odoo/static/src/js/gdpr_portal.js b/website_gdpr_odoo/static/src/js/gdpr_portal.js new file mode 100755 index 000000000..ad03b6ddb --- /dev/null +++ b/website_gdpr_odoo/static/src/js/gdpr_portal.js @@ -0,0 +1,59 @@ +odoo.define('website_gdpr_odoo.gdpr_portal_template', function(require) { + "use strict"; + var PublicWidget = require('web.public.widget'); + var session = require('web.session'); + var ajax = require('web.ajax'); + var rpc = require('web.rpc'); + var Template = PublicWidget.Widget.extend({ + selector: '.gdpr_portal_template', + events: { + 'click ._actionDelete': '_actionModalCloseAndOpen', + 'click ._actionDownload': '_onClickActionDownload', + 'click ._actionReqDownload': '_onClickActionReqDownload', + 'click .gdpr-close-button': '_actionModalCloseAndOpen', + 'click .gdpr-modal-confirm': '_onClickActionDelete', + }, + /** + * Action to transfer data to create record type of delete + */ + _onClickActionDelete: function(ev) { + ajax.jsonRpc('/gdpr_management/confirm', 'call', { + 'user_id': session.user_id, + 'template_id': this.template_id, + 'type': 'delete' + }) + }, + /** + * For opening and closing the modal + */ + _actionModalCloseAndOpen: function(ev) { + this.template_id = Number(ev.currentTarget.getAttribute("id")) + this.el.querySelector(".gdpr-modal").classList.toggle("gdpr-show-modal") + }, + /** + * Action to transfer data to create record type of download + */ + _onClickActionDownload: function(ev) { + ajax.jsonRpc('/gdpr_management/confirm', 'call', { + 'user_id': session.user_id, + 'template_id': Number(ev.currentTarget.getAttribute("id")), + 'type': 'download' + }) + }, + /** + * Action to open window of the content to download + */ + _onClickActionReqDownload: function(ev) { + var req_id = Number(ev.currentTarget.getAttribute("id")) + rpc.query({ + model: 'gdpr.request', + method: 'action_download_pdf', + args: [, req_id], + }).then(function(result) { + window.open(result['url']) + }); + } + }) + PublicWidget.registry.gdpr_portal_template = Template; + return Template; +}) diff --git a/website_gdpr_odoo/views/gdpr_request_report_views.xml b/website_gdpr_odoo/views/gdpr_request_report_views.xml new file mode 100755 index 000000000..c872562bd --- /dev/null +++ b/website_gdpr_odoo/views/gdpr_request_report_views.xml @@ -0,0 +1,14 @@ + + + + + Download Data + gdpr.request + qweb-pdf + website_gdpr_odoo.download_template + website_gdpr_odoo.download_template + Download Data + + report + + diff --git a/website_gdpr_odoo/views/gdpr_request_templates.xml b/website_gdpr_odoo/views/gdpr_request_templates.xml new file mode 100755 index 000000000..a37877a3c --- /dev/null +++ b/website_gdpr_odoo/views/gdpr_request_templates.xml @@ -0,0 +1,278 @@ + + + + + + + + + + + + + diff --git a/website_gdpr_odoo/views/gdpr_request_views.xml b/website_gdpr_odoo/views/gdpr_request_views.xml new file mode 100755 index 000000000..e60ee3f07 --- /dev/null +++ b/website_gdpr_odoo/views/gdpr_request_views.xml @@ -0,0 +1,74 @@ + + + + + gdpr.request.view.tree + gdpr.request + + + + + + + + + + + + + Request Sequence + request.sequence + GDPR + 6 + + + + gdpr.request.view.form + gdpr.request + +
+
+
+ +

+ +

+ + + + + + + + + +
+
+
+
+ + + GDPR Request + gdpr.request + tree,form + + + + + +
diff --git a/website_gdpr_odoo/views/gdpr_template_views.xml b/website_gdpr_odoo/views/gdpr_template_views.xml new file mode 100755 index 000000000..9373d1a8f --- /dev/null +++ b/website_gdpr_odoo/views/gdpr_template_views.xml @@ -0,0 +1,48 @@ + + + + + gdpr.template.view.tree + gdpr.template + + + + + + + + + + + gdpr.template.view.form + gdpr.template + +
+ +
+
+ + + + + + + + +
+
+
+
+ + + GDPR Template + gdpr.template + tree,form + + + +
diff --git a/website_gdpr_odoo/views/mail_templates.xml b/website_gdpr_odoo/views/mail_templates.xml new file mode 100644 index 000000000..13aa475a2 --- /dev/null +++ b/website_gdpr_odoo/views/mail_templates.xml @@ -0,0 +1,27 @@ + + + + + + Gdpr Requests + + Your Gdpr Request Status + + +
+

+ Hi, +
+
+ +

+
+ Regards, +
+ +
+ +
+
+