diff --git a/website_gdpr_odoo/README.rst b/website_gdpr_odoo/README.rst new file mode 100755 index 000000000..7ad3f5dc2 --- /dev/null +++ b/website_gdpr_odoo/README.rst @@ -0,0 +1,47 @@ +.. 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/15.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, + (V15) Busthana Shirin, +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..3909802f9 --- /dev/null +++ b/website_gdpr_odoo/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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..dda6e0906 --- /dev/null +++ b/website_gdpr_odoo/__manifest__.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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": "15.0.1.0.0", + "category": "Website", + "summary": """General Data Protection Regulation is implemented On Odoo 15 + 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..9ab8756dd --- /dev/null +++ b/website_gdpr_odoo/controllers/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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..a65ebb4de --- /dev/null +++ b/website_gdpr_odoo/controllers/website_gdpr_odoo.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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..f4a447230 --- /dev/null +++ b/website_gdpr_odoo/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 16.07.2024 +#### Version 15.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..9ea667840 --- /dev/null +++ b/website_gdpr_odoo/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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..d9ba959d2 --- /dev/null +++ b/website_gdpr_odoo/models/gdpr_request.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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, + } + mail_template = self.env.ref( + 'website_gdpr_odoo.gdpr_request_email_template') + mail_template.with_context(email_values).send_mail(self.id, + notif_layout='mail.mail_notification_light', + force_send=True) + + def action_delete_request(self): + """ + Summary: + for updating the values in 'res.partner'(deleting records) + """ + update_dict = {field.name: False for field in self.template_id.field_ids + if not field.relation and field.name != 'name'} + self.partner_id.update(update_dict) + 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 as a PDF. + """ + request_id = self.env['gdpr.request'].sudo().browse(data) + partner_fields = request_id.template_id.sudo().field_ids + partner_id = request_id.partner_id + + value_list = [ + { + 'data': ' '.join(map(str, partner_id.mapped( + rec.name).name)) if rec.ttype == "many2one" else ' '.join( + map(str, partner_id.mapped(rec.name))), + 'name': rec.field_description + } + for rec in partner_fields + ] + + values = { + 'name': partner_id.name, + 'value': value_list + } + + pdf = self.env.ref( + 'website_gdpr_odoo.action_pdf_download').sudo()._render_qweb_pdf( + 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..285040ed9 --- /dev/null +++ b/website_gdpr_odoo/models/gdpr_template.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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..017bfda35 --- /dev/null +++ b/website_gdpr_odoo/reports/gdpr_request_templates.xml @@ -0,0 +1,71 @@ + + + + + + + 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..4c82261ee --- /dev/null +++ b/website_gdpr_odoo/security/ir.model.access.csv @@ -0,0 +1,3 @@ +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_template_group_website_designer,access.gdpr.template.designer,model_gdpr_template,website.group_website_designer,1,1,1,1 diff --git a/website_gdpr_odoo/static/description/assets/icons/check-box.png b/website_gdpr_odoo/static/description/assets/icons/check-box.png new file mode 100755 index 000000000..42caf24b9 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/check-box.png differ 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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/logo.png b/website_gdpr_odoo/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/icons/logo.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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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 100644 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/Cybrosys R.png b/website_gdpr_odoo/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/misc/Cybrosys R.png differ diff --git a/website_gdpr_odoo/static/description/assets/misc/email.svg b/website_gdpr_odoo/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/phone.svg b/website_gdpr_odoo/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/star (1) 2.svg b/website_gdpr_odoo/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/support (1) 1.svg b/website_gdpr_odoo/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/support-email.svg b/website_gdpr_odoo/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/tick-mark.svg b/website_gdpr_odoo/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/whatsapp 1.svg b/website_gdpr_odoo/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/misc/whatsapp.svg b/website_gdpr_odoo/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/website_gdpr_odoo/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/website_gdpr_odoo/static/description/assets/modules/automatic_image.png b/website_gdpr_odoo/static/description/assets/modules/automatic_image.png new file mode 100644 index 000000000..a49c2a820 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/automatic_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/budget_image.png b/website_gdpr_odoo/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..b50130c7d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/budget_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/crm_dashboard_image.png b/website_gdpr_odoo/static/description/assets/modules/crm_dashboard_image.png new file mode 100644 index 000000000..6547c3081 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/crm_dashboard_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/crm_image.png b/website_gdpr_odoo/static/description/assets/modules/crm_image.png new file mode 100644 index 000000000..8793336c0 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/crm_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/crm_kit_image.png b/website_gdpr_odoo/static/description/assets/modules/crm_kit_image.png new file mode 100644 index 000000000..0bbad468d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/crm_kit_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/employee_image.png b/website_gdpr_odoo/static/description/assets/modules/employee_image.png new file mode 100644 index 000000000..30ad58232 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/employee_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/ip_image.png b/website_gdpr_odoo/static/description/assets/modules/ip_image.png new file mode 100644 index 000000000..707e2b7ed Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/ip_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/payable_image.png b/website_gdpr_odoo/static/description/assets/modules/payable_image.png new file mode 100644 index 000000000..fd1059dec Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/payable_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/product_custom_image.png b/website_gdpr_odoo/static/description/assets/modules/product_custom_image.png new file mode 100644 index 000000000..9c34fd89f Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/product_custom_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/salesperson_image.png b/website_gdpr_odoo/static/description/assets/modules/salesperson_image.png new file mode 100644 index 000000000..958ed2bf4 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/salesperson_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/modules/task_deadline_image.png b/website_gdpr_odoo/static/description/assets/modules/task_deadline_image.png new file mode 100644 index 000000000..c128be58a Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/modules/task_deadline_image.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr1.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr1.png new file mode 100644 index 000000000..730055f53 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr1.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr10.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr10.png new file mode 100644 index 000000000..df6ba3bbb Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr10.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr11.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr11.png new file mode 100644 index 000000000..723a62f90 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr11.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr2.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr2.png new file mode 100644 index 000000000..463cdebd7 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr2.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr3.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr3.png new file mode 100644 index 000000000..d296778ad Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr3.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr4.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr4.png new file mode 100644 index 000000000..efaced36b Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr4.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr5.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr5.png new file mode 100644 index 000000000..8f5475063 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr5.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr6.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr6.png new file mode 100644 index 000000000..56b26376d Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr6.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr7.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr7.png new file mode 100644 index 000000000..369516ee2 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr7.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr8.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr8.png new file mode 100644 index 000000000..9c2c78926 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr8.png differ diff --git a/website_gdpr_odoo/static/description/assets/screenshots/gdpr9.png b/website_gdpr_odoo/static/description/assets/screenshots/gdpr9.png new file mode 100644 index 000000000..edd68e6b8 Binary files /dev/null and b/website_gdpr_odoo/static/description/assets/screenshots/gdpr9.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..150e840cb 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..d00fb6a00 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 100644 index 000000000..a44f816ed 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 100644 index 000000000..5198dadf1 --- /dev/null +++ b/website_gdpr_odoo/static/description/index.html @@ -0,0 +1,607 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+ +
+
+
+

+ Website GDPR In Odoo

+

+ General Data Protection Regulation (GDPR) for odoo. +

+ +
+
+ + + + +
+
+

+ 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

+

GUnder 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

+ +
+ +
+ + +
+
+

Suggested 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

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

Need Help?

+
+
+
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ 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..3aeb070a3 --- /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.report_custom + website_gdpr_odoo.report_custom + '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..8f4a024f6 --- /dev/null +++ b/website_gdpr_odoo/views/gdpr_request_templates.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + 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, +
+ +
+ +
+
+