Browse Source

[ADD] contact_search_form and website_contact_extend

pull/18/head
IT IS AG 6 years ago
committed by Pedro M. Baeza
parent
commit
61f5bf2817
  1. 72
      contact_search_form/README.rst
  2. 3
      contact_search_form/__init__.py
  3. 33
      contact_search_form/__manifest__.py
  4. 68
      contact_search_form/i18n/de.po
  5. 68
      contact_search_form/i18n/en_US.po
  6. 3
      contact_search_form/models/__init__.py
  7. 84
      contact_search_form/models/contact_search.py
  8. 3
      contact_search_form/readme/CONFIGURE.rst
  9. 2
      contact_search_form/readme/DESCRIPTION.rst
  10. 9
      contact_search_form/readme/USAGE.rst
  11. 8
      contact_search_form/security/gdpr_security.xml
  12. 3
      contact_search_form/security/ir.model.access.csv
  13. BIN
      contact_search_form/static/description/icon.png
  14. 79
      contact_search_form/views/contact_search.xml
  15. 74
      website_contact_extend/README.rst
  16. 4
      website_contact_extend/__init__.py
  17. 34
      website_contact_extend/__manifest__.py
  18. 3
      website_contact_extend/controllers/__init__.py
  19. 163
      website_contact_extend/controllers/myfilter.py
  20. 46
      website_contact_extend/data/email_templates.xml
  21. 300
      website_contact_extend/i18n/de.po
  22. 412
      website_contact_extend/i18n/en_US.po
  23. 3
      website_contact_extend/models/__init__.py
  24. 28
      website_contact_extend/models/res_partner.py
  25. 1
      website_contact_extend/readme/CONFIGURE.rst
  26. 8
      website_contact_extend/readme/DESCRIPTION.rst
  27. 8
      website_contact_extend/readme/USAGE.rst
  28. BIN
      website_contact_extend/static/description/icon.png
  29. 164
      website_contact_extend/views/contact_report.xml
  30. 22
      website_contact_extend/views/res_partner.xml
  31. 29
      website_contact_extend/views/website_contact.xml

72
contact_search_form/README.rst

@ -0,0 +1,72 @@
===================
Contact Search Form
===================
Multiple models can be searched for specified string by DPO.
View containing a search function for Data Protection Officers (DPO) to look
up Customer Data. All available Odoo models can be included in the search
query looking for a specified string.
**Table of contents**
.. contents::
:local:
Usage
=====
The new menu Contact Search is located in the Contacts App
When accessing the Contact Search form a new query can be defined by
clicking on the Create button.
To perform a search the search string is required and the Odoo models that
should be searched have to be selected in the dropdown 'Search in model'.
The search results are stored and can be accessed at a later time from the
tree view of 'Contact Search'.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* IT IS AG
Contributors
~~~~~~~~~~~~
* Dipak Suthar <dipaks@itis.de>
* Sven Hartmann <svenh@itis.de>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

3
contact_search_form/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models

33
contact_search_form/__manifest__.py

@ -0,0 +1,33 @@
#####################################################################
#
# IT IS AG, software solutions: http://www.itis.de
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
#
#####################################################################
{
'name': 'Contact Search Form',
'summary': "Multiple models can be searched for specified string by DPO",
'author': 'IT IS AG, Odoo Community Association (OCA)',
'website': 'https://github.com/OCA/data-protection',
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/
# openerp/addons/base/module/module_data.xml
# for the full list
'version': '11.0.1.0.0',
'license': 'AGPL-3',
'category': 'Contacts',
'depends': ['base',
'contacts',
],
'data': [
'security/gdpr_security.xml',
'security/ir.model.access.csv',
'views/contact_search.xml',
],
}

68
contact_search_form/i18n/de.po

@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contact_search_form
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:16+0000\n"
"PO-Revision-Date: 2018-07-02 14:16+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"X-Generator: Poedit 1.5.4\n"
#. module: contact_search_form
#: model:ir.ui.menu,name:contact_search_form.menu_customer_info
msgid "Contact Search"
msgstr "Kontakt Suche"
#. module: contact_search_form
#: model:ir.actions.act_window,name:contact_search_form.action_dpo_view_itis
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "Customer Info"
msgstr "Kundeninformation"
#. module: contact_search_form
#: model:res.groups,name:contact_search_form.group_dpo
msgid "Data Protection Officer"
msgstr "Data Protection Officer"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "SEARCH"
msgstr "Suche"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.dpo_view_tree
msgid "Search Contact"
msgstr "Kontakt Suchen"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.search_line_tree_view_itis
msgid "Search Results"
msgstr "Suchergebnisse"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "Search Terms"
msgstr "Suchbegriffe"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.search_line_tree_view_itis
msgid "VIEW RECORD"
msgstr "VIEW RECORD"
#. module: contact_search_form
#: model:ir.model,name:contact_search_form.model_dpo_view
msgid "dpo.view"
msgstr "dpo.view"
#. module: contact_search_form
#: model:ir.model,name:contact_search_form.model_search_line
msgid "search.line"
msgstr "search.line"

68
contact_search_form/i18n/en_US.po

@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contact_search_form
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:15+0000\n"
"PO-Revision-Date: 2018-07-02 12:15+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: contact_search_form
#: model:ir.ui.menu,name:contact_search_form.menu_customer_info
msgid "Contact Search"
msgstr "Contact Search"
#. module: contact_search_form
#: model:ir.actions.act_window,name:contact_search_form.action_dpo_view_itis
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "Customer Info"
msgstr "Customer Info"
#. module: contact_search_form
#: model:res.groups,name:contact_search_form.group_dpo
msgid "Data Protection Officer"
msgstr "Data Protection Officer"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "SEARCH"
msgstr "SEARCH"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.dpo_view_tree
msgid "Search Contact"
msgstr "Search Contact"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.search_line_tree_view_itis
msgid "Search Results"
msgstr "Search Results"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.view_dpo_form_view_itis
msgid "Search Terms"
msgstr "Search Terms"
#. module: contact_search_form
#: model:ir.ui.view,arch_db:contact_search_form.search_line_tree_view_itis
msgid "VIEW RECORD"
msgstr "VIEW RECORD"
#. module: contact_search_form
#: model:ir.model,name:contact_search_form.model_dpo_view
msgid "dpo.view"
msgstr "dpo.view"
#. module: contact_search_form
#: model:ir.model,name:contact_search_form.model_search_line
msgid "search.line"
msgstr "search.line"

3
contact_search_form/models/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import contact_search

84
contact_search_form/models/contact_search.py

@ -0,0 +1,84 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models, _
class SearchLine(models.Model):
_name = "search.line"
name = fields.Char(string="Model Name")
field_list = fields.Char(string="Fields Name")
model_id = fields.Many2one('ir.model', string="Found in Model")
record_id = fields.Integer(string="Record ID")
search_id = fields.Many2one("dpo.view", string="Search Terms")
record_name = fields.Char(string="Record Name",
compute="_compute_record_name")
@api.multi
def open_record(self):
return {
'name': _('Found record'),
'view_type': 'form',
'view_mode': 'form',
'res_model': self.model_id.model,
'type': 'ir.actions.act_window',
'res_id': self.record_id,
'target': 'new'
}
def _compute_record_name(self):
for record in self:
record_object = self.env[self.model_id.model].browse([
self.record_id
])
record.record_name = record_object.name_get()[0][1]
class DpoView(models.Model):
_name = "dpo.view"
name = fields.Char(string="Search Term")
model_ids = fields.Many2many('ir.model',
'dpo_view_ir_model_rel',
string='Search in Model')
search_lines = fields.One2many('search.line',
'search_id',
string='Search Result')
@api.multi
def search_string(self):
search_line_ids = self.env['search.line'].search([
('search_id', '=', self.id)
])
search_line_ids.unlink()
final_list = []
for model_id in self.model_ids:
field_list = []
found_match = {}
for field_id in model_id.field_id:
if field_id.ttype in ['char', 'html', 'text'] \
and field_id.store:
field_list.append(field_id.name)
for field in field_list:
records = self.env[model_id.model].search([
(field, 'ilike', self.name),
(field, '!=', '')
])
for rec in records:
temp_list = found_match.get(rec.id, False)
if temp_list:
temp_list.append(field)
found_match[rec.id] = temp_list
else:
found_match[rec.id] = [field]
for key, value in found_match.items():
founded_json = {}
founded_json["field_list"] = str(list(set(value)))
founded_json["name"] = str(model_id.name)
founded_json["model_id"] = model_id.id
founded_json["search_id"] = self.id
founded_json["record_id"] = key
final_list.append(founded_json)
if final_list:
for vals in final_list:
self.env['search.line'].create(vals)

3
contact_search_form/readme/CONFIGURE.rst

@ -0,0 +1,3 @@
To access contact search view in contacts view, the user has to activate the 'Data Protection Officer' checkbox
in User -> Technical Settings.
After that a new menu item 'Contact Search' will appear in the Contacts App.

2
contact_search_form/readme/DESCRIPTION.rst

@ -0,0 +1,2 @@
View containing a search function for Data Protection Officers (DPO) to look up Customer Data.
All available Odoo models can be included in the search query looking for a specified string.

9
contact_search_form/readme/USAGE.rst

@ -0,0 +1,9 @@
The new menu Contact Search is located in the Contacts App
When accessing the Contact Search form a new query can be defined by
clicking on the Create button.
To perform a search the search string is required and the Odoo models that
should be searched have to be selected in the dropdown 'Search in model'.
The search results are stored and can be accessed at a later time from the
tree view of 'Contact Search'.

8
contact_search_form/security/gdpr_security.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_dpo" model="res.groups">
<field name="name">Data Protection Officer</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</odoo>

3
contact_search_form/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"
access_dpo_view,access_dpo_view,model_dpo_view,group_dpo,1,1,1,1
access_search_line,access_search_line,model_search_line,group_dpo,1,1,1,1

BIN
contact_search_form/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

79
contact_search_form/views/contact_search.xml

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_dpo_form_view_itis" model="ir.ui.view">
<field name="name">view.dpo.form.view.itis</field>
<field name="model">dpo.view</field>
<field name="arch" type="xml">
<form string="Customer Info">
<div class="oe_title">
<h1>
<field name="name" default_focus="1" placeholder="Search Terms" required="1"/>
</h1>
</div>
<group>
<field name="model_ids" widget="many2many_tags"/>
</group>
<br/>
<br/>
<center>
<button name="search_string" type="object" string="SEARCH" class="btn-primary"/>
</center>
<br/>
<field name="search_lines"/>
</form>
</field>
</record>
<record id="dpo_view_tree" model="ir.ui.view">
<field name="name">DPO Tree view</field>
<field name="model">dpo.view</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<tree string="Search Contact">
<field name='name'/>
<field name="model_ids"/>
<field name="search_lines"/>
</tree>
</field>
</record>
<record id="action_dpo_view_itis" model="ir.actions.act_window">
<field name="name">Customer Info</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">dpo.view</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="dpo_view_tree"/>
<field name="view_type">form</field>
</record>
<menuitem id="menu_customer_info_base"
name="Contact Search"
parent="contacts.menu_contacts"
sequence="20"
groups="contact_search_form.group_dpo"/>
<menuitem id="menu_customer_info"
name="Contact Search"
action="action_dpo_view_itis"
parent="menu_customer_info_base"
sequence="21"
groups="contact_search_form.group_dpo"/>
<record id="search_line_tree_view_itis" model="ir.ui.view">
<field name="name">search.line.tree.view.itis</field>
<field name="model">search.line</field>
<field name="arch" type="xml">
<tree string="Search Results" create="false" delete="false" edit="false">
<field name="model_id"/>
<field name="record_id"/>
<field name="record_name"/>
<field name="field_list"/>
<button name="open_record" type="object" string="VIEW RECORD" class="btn-primary"/>
</tree>
</field>
</record>
</odoo>

74
website_contact_extend/README.rst

@ -0,0 +1,74 @@
======================
Website Contact Extend
======================
Extended Website Contact View to give Customer options on how to be
contacted in the future.
For email verification a verification link will be sent to the email address
entered in the contact view.
* contact mode fields will be added to the website contact view.
* Information requests can be submitted from the contact view
**Table of contents**
.. contents::
:local:
Usage
=====
Customer can verify his email address with a verification link.
The verification link is automatically sent to the email address
entered in the website contact view.
Following that the mode of future contact can be chosen and a GDPR
information request can be submitted.
A preliminary Report is also printable in the contacts view.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* IT IS AG
Contributors
~~~~~~~~~~~~
* Dipak Suthar <dipaks@itis.de>
* Sven Hartmann <svenh@itis.de>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

4
website_contact_extend/__init__.py

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import controllers
from . import models

34
website_contact_extend/__manifest__.py

@ -0,0 +1,34 @@
###################################################################
#
# IT IS AG, software solutions: http://www.itis.de
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
#
###################################################################
{
'name': "Website Contact Form Extend",
'summary': "Extended Website Contact View",
'author': "IT IS AG, Odoo Community Association (OCA)",
'website': "https://github.com/OCA/data-protection",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/openerp/
# addons/base/module/module_data.xml
# for the full list
'version': '11.0.1.0.0',
'license': 'AGPL-3',
'category': 'Data Protection',
'depends': ['base',
'contacts',
'website_crm',
],
'data': [
'views/website_contact.xml',
'views/res_partner.xml',
'views/contact_report.xml',
'data/email_templates.xml',
],
}

3
website_contact_extend/controllers/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import myfilter

163
website_contact_extend/controllers/myfilter.py

@ -0,0 +1,163 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.addons.website_form.controllers import main as parent_controller
from odoo import http
from odoo.http import request
from odoo.exceptions import ValidationError
from psycopg2 import IntegrityError
import base64
import json
class VerifyController(http.Controller):
@http.route('/verify_email',
type='http',
auth="public",
methods=['GET'],
website=True)
def verify_email(self, **kwargs):
if kwargs:
link_data = base64.b64decode(kwargs.get("data")).decode("utf-8")\
.split("####")
email = link_data[0]
contact_name = link_data[1]
email_name = link_data[2]
phone_name = link_data[3]
letter_name = link_data[4]
link_date = link_data[5]
link_date = link_date.split(" ")[0].replace("-", "")
import datetime
today = datetime.date.today()
link = datetime.datetime.strptime(link_date, "%Y%m%d").date()
diff = today - link
if diff.days > 5 or diff.days < 0:
return "<center style='color:red'>Not valid!<br/>"\
"The link you entered is either not valid or expired."\
"<br/>Please request a new link.</center>"
partner = request.env['res.partner'].sudo().search([
('email', '=', email),
('name', '=', contact_name)
])
if partner:
for part in partner:
part.is_verified = True
part.last_updated = part.write_date
if email_name == "True":
part.email_contact = True
else:
part.email_contact = False
if phone_name == "True":
part.phone_contact = True
else:
part.phone_contact = False
if letter_name == "True":
part.letter_contact = True
else:
part.letter_contact = False
request.env.ref(
'website_contact_extend.confirmation_email_template'
).sudo().send_mail(part.id)
return "<center style='color:green'>"\
"Thank You! Your email address has been verified!"\
"</center>"
else:
return "<center style='color:red'>Not valid!<br/>"\
"The link you entered is either not valid or expired."\
"<br/>Please request a new link.</center>"
class MyFilter(parent_controller.WebsiteForm):
@http.route('/website_form/<string:model_name>',
type='http',
auth="public",
methods=['POST'],
website=True)
def website_form(self, model_name, **kwargs):
model_record = request.env['ir.model'].sudo().search([
('model', '=', model_name),
('website_form_access', '=', True)
])
if not model_record:
return json.dumps(False)
# need_send_email = False
try:
data = self.extract_data(model_record, request.params)
# contact_type = False
phone_contact = False
letter_contact = False
email_contact = False
send_mail = True
index = 0
for field_name, field_value in request.params.items():
# if field_name == "contact_type":
# contact_type = field_value
if field_name == "send_mail" and field_value == "send_mail":
send_mail = True
if field_name == "phone_contact" \
and field_value == "phone_contact":
phone_contact = True
if field_name == "letter_contact" \
and field_value == "letter_contact":
letter_contact = True
if field_name == "email_contact" \
and field_value == "email_contact":
email_contact = True
index += 1
# contact_name = data.get("record").get("contact_name")
# email_from = data.get("record").get("email_from")
# If we encounter an issue while extracting data
except ValidationError as e:
# I couldn't find a cleaner way to pass data to an exception
return json.dumps({'error_fields': e.args[0]})
try:
id_record = self.insert_record(
request,
model_record,
data['record'],
data['custom'],
data.get('meta')
)
if id_record:
self.insert_attachment(
model_record,
id_record,
data['attachments']
)
if id_record and send_mail and model_name == "crm.lead":
crm_lead_obj = request.env['crm.lead'].sudo().search([
('id', '=', id_record)]
)
email_data = crm_lead_obj.email_from + "####" +\
crm_lead_obj.contact_name + "####" +\
str(email_contact) + "####" +\
str(phone_contact) + "####" +\
str(letter_contact)+"####" +\
str(crm_lead_obj.create_date)
ency_email = base64.b64encode(email_data.encode()).decode(
"utf-8"
)
action_url = '%s/verify_email/?data=%s' % (
request.env['ir.config_parameter'].
sudo().get_param('web.base.url'),
ency_email,
)
if crm_lead_obj:
crm_lead_obj.email_link = action_url
request.env.ref(
'website_contact_extend.verification_email_template'
).send_mail(id_record)
# Some fields have additional SQL constraints
# that we can't check generically
# Ex: crm.lead.probability which is a float between 0 and 1
# TODO: How to get the name of the erroneous field ?
except IntegrityError:
return json.dumps(False)
request.session['form_builder_model_model'] = model_record.model
request.session['form_builder_model'] = model_record.name
request.session['form_builder_id'] = id_record
return json.dumps({'id': id_record})

46
website_contact_extend/data/email_templates.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="verification_email_template" model="mail.template">
<field name="name">Email verification link</field>
<field name="subject">mail verification link</field>
<field name="email_to">${(not object.partner_id and object.email_from)|safe}</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<p>
% if object.partner_id
Dear <strong>${object.partner_id.name}</strong>,<br/>
% endif
% if not object.partner_id
Dear <strong>${object.email_from}</strong>,<br/>
% endif
Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>
Thank you.
</p>
]]>
</field>
</record>
<record id="confirmation_email_template" model="mail.template">
<field name="name">Email confirmation</field>
<field name="subject">Verified Email</field>
<field name="email_to">${user.email|safe}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<p>
Dear <strong>${user.partner_id.name}</strong>,<br/>
This email address <strong> ${object.email}</strong> has been verified by user.<br/>
Thank you.
</p>
]]>
</field>
</record>
</odoo>

300
website_contact_extend/i18n/de.po

@ -0,0 +1,300 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_contact_extend
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:18+0000\n"
"PO-Revision-Date: 2018-07-02 12:18+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.verification_email_template
msgid "\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr "\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.confirmation_email_template
msgid "\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr "\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein Drittland oder an eine internationale Organisation übermittelt"
msgstr "(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein Drittland oder an eine internationale Organisation übermittelt"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die Gegenstand der Verarbeitung sind, zur Verfügung:"
msgstr "(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die Gegenstand der Verarbeitung sind, zur Verfügung:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und Freiheiten anderer<br/>Personen nicht beeinträchtigen."
msgstr "(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und Freiheiten anderer<br/>Personen nicht beeinträchtigen."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></span>"
msgstr "<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese Verarbeitung <span class=\"T1\">besteht</span>;"
msgstr "<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese Verarbeitung <span class=\"T1\">besteht</span>;"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert _______________ </span>"
msgstr "<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert _______________ </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal nicht erreicht □ Systemwechsel </span></span>"
msgstr "<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal nicht erreicht □ Systemwechsel </span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Adresse:"
msgstr "Adresse:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft für:"
msgstr "Auskunft für:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
msgstr "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunftsgeber:"
msgstr "Auskunftsgeber:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: website_contact_extend
#: model:ir.actions.report,name:website_contact_extend.report_contact
msgid "Contact Report"
msgstr "Kontakt Report"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_contact_type
msgid "Contact Type"
msgstr "Art des Kontakts"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by E-Mail"
msgstr "Kontakt per E-Mail"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Letter"
msgstr "Kontakt per Post"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Phone"
msgstr "Kontakt per Telefon"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Die betroffene Person hat das Recht, von dem Verantwortlichen eine Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf folgende Informationen:"
msgstr "Die betroffene Person hat das Recht, von dem Verantwortlichen eine Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf folgende Informationen:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_email_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_email_contact
msgid "Email Contact"
msgstr "Email Kontakt"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_crm_lead_email_link
msgid "Email verification link"
msgstr "Email verifikations Link"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Email:"
msgstr "E-Mail:"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I do not want to be contacted."
msgstr "Ich möchte nicht kontaktiert werden."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Email."
msgstr "Ich möchte nur per Email kontaktiert werden."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Phone."
msgstr "Ich möchte nur per Telefon kontaktiert werden."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "In the future I want to be contacted by"
msgstr "In Zukunft möchte ich nur kontaktiert werden durch:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Information request concerning data about the personally"
msgstr "Persönliche Informationsauskunft:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_crm_lead
msgid "Lead/Opportunity"
msgstr "Interessent / Chance"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_letter_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_letter_contact
msgid "Letter Contact"
msgstr "Brief Kontakt"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_last_updated
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_last_updated
msgid "Letzte Aktualisierung"
msgstr "Letzte Aktualisierung"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Name:"
msgstr "Name:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_phone_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_phone_contact
msgid "Phone Contact"
msgstr "Telefon Kontakt"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Phone:"
msgstr "Telefon:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_is_verified
#: model:mail.template,subject:website_contact_extend.confirmation_email_template
msgid "Verified Email"
msgstr "Verifizierte Email"
#. module: website_contact_extend
#: model:ir.model.fields,help:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,help:website_contact_extend.field_res_users_contact_type
msgid "Which way user want to be contacted."
msgstr "Art der Kontaktierung"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "You can contact me by Email or Phone."
msgstr "Ich kann per Email oder Telefon kontaktiert werden."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class=\"T3\">S</span><span class=\"T1\">onstiges; </span>"
msgstr "a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class=\"T3\">S</span><span class=\"T1\">onstiges; </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class=\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Personaldaten</span>"
msgstr "b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class=\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Personaldaten</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in Drittländern oder bei internationalen Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </span>_______________________________<br/> <span class=\"T6\">oder</span> <span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht bekannt</span>"
msgstr "c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in Drittländern oder bei internationalen Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </span>_______________________________<br/> <span class=\"T6\">oder</span> <span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht bekannt</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden: <span class=\"T1\"> </span>"
msgstr "d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden: <span class=\"T1\"> </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung der betreffenden personenbezogenen Daten <span class=\"T1\">besteht oder </span><span class=\"T2\">□ </span>Einschränkung der Verarbeitung durch den Verantwortlichen </span>"
msgstr "e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung der betreffenden personenbezogenen Daten <span class=\"T1\">besteht oder </span><span class=\"T2\">□ </span>Einschränkung der Verarbeitung durch den Verantwortlichen </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
msgstr "f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class=\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class=\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
msgstr "g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class=\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class=\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung <span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
msgstr "h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung <span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
#. module: website_contact_extend
#: model:mail.template,subject:website_contact_extend.verification_email_template
msgid "mail verification link"
msgstr "mail verification link"

412
website_contact_extend/i18n/en_US.po

@ -0,0 +1,412 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_contact_extend
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:18+0000\n"
"PO-Revision-Date: 2018-07-02 14:26+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"Language: en_US\n"
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.verification_email_template
msgid ""
"\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>"
"${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr ""
"\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>"
"${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.confirmation_email_template
msgid ""
"\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been "
"verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr ""
"\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been "
"verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </"
"span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein "
"Drittland oder an eine internationale Organisation übermittelt"
msgstr ""
"(2) <span class=\"T2\">□ </span>The personal data will not be transmitted to "
"a third country or an international organization"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, "
"die Gegenstand der Verarbeitung sind, zur Verfügung:"
msgstr ""
"(3) The responsible person provides a copy of the personal data that is the "
"subject of the processing:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und "
"Freiheiten anderer<br/>Personen nicht beeinträchtigen."
msgstr ""
"(4) The right to receive a copy under paragraph 3 must not affect the rights "
"and freedoms of other persons."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</"
"span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ "
"Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></"
"span>"
msgstr ""
"<span class=\"T2\"> □ </span><span class=\"T1\">Until the __. __. "
"____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Up to "
"____ years □ </span><span class=\"T3\">Storage period by law</span></"
"span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese "
"Verarbeitung <span class=\"T1\">besteht</span>;"
msgstr ""
"<span class=\"T2\">or □ </span>Right to object to this processing,"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</"
"span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert "
"_______________ </span>"
msgstr ""
"<span class=\"T2\">□ </span>If so: The data is evaluated and grouped in the "
"following way_______________ "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal "
"nicht erreicht □ Systemwechsel </span></span>"
msgstr ""
"<span class=\"T6\">Reason:</span> □ Contact ____ not reached □ System "
"change </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Adresse:"
msgstr "Address:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft für:"
msgstr "Information for:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
msgstr ""
"Information <span class=\"T1\">according to Article 15 of the GDPR</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunftsgeber:"
msgstr "Information giver:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: website_contact_extend
#: model:ir.actions.report,name:website_contact_extend.report_contact
msgid "Contact Report"
msgstr "Contact Report"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_contact_type
msgid "Contact Type"
msgstr "Contact Type"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by E-Mail"
msgstr "Contact by E-Mail"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Letter"
msgstr "Contact by Letter"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Phone"
msgstr "Contact by Phone"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"Die betroffene Person hat das Recht, von dem Verantwortlichen eine "
"Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten "
"verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft "
"über diese personenbezogenen Daten und auf folgende Informationen:"
msgstr ""
"The data subject has the right to ask the person responsible for "
"confirmation of the processing of the personal data concerned; if this is "
"the case, it has a right to information about such personal data and to the "
"following information:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_email_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_email_contact
msgid "Email Contact"
msgstr "Email Contact"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_crm_lead_email_link
msgid "Email verification link"
msgstr "Email verification link"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Email:"
msgstr "Email:"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I do not want to be contacted."
msgstr "I do not want to be contacted."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Email."
msgstr "I only want to be contacted by Email."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Phone."
msgstr "I only want to be contacted by Phone."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "In the future I want to be contacted by"
msgstr "In the future I want to be contacted by"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Information request concerning data about the personally"
msgstr "Information request concerning data about personal Information"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_crm_lead
msgid "Lead/Opportunity"
msgstr "Lead/Opportunity"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_letter_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_letter_contact
msgid "Letter Contact"
msgstr "Letter Contact"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_last_updated
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_last_updated
msgid "Letzte Aktualisierung"
msgstr "Last Updated on"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Name:"
msgstr "Name:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_phone_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_phone_contact
msgid "Phone Contact"
msgstr "Phone Contact"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Phone:"
msgstr "Phone:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_is_verified
#: model:mail.template,subject:website_contact_extend.confirmation_email_template
msgid "Verified Email"
msgstr "Verified Email"
#. module: website_contact_extend
#: model:ir.model.fields,help:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,help:website_contact_extend.field_res_users_contact_type
msgid "Which way user want to be contacted."
msgstr "Which way user want to be contacted."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "You can contact me by Email or Phone."
msgstr "You can contact me by Email or Phone."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </"
"span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</"
"span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class="
"\"T3\">S</span><span class=\"T1\">onstiges; </span>"
msgstr ""
"a) The processing purposes:<span class=\"T1\"> </span><span class=\"T2\">□ "
"</span><span class=\"T1\">Contact, </span><span class=\"T2\">□ </span><span "
"class=\"T3\">Transactions</span><span class=\"T1\">, </span><span class="
"\"T2\">□ </span><span class=\"T1\">Other </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span "
"class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class="
"\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Personaldaten</span>"
msgstr ""
"b) The categories of personal data being processed: <span class=\"T1\"> <br/"
"></span><span class=\"T2\">□ </span><span class=\"T1\">Customer data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Supplier data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Prospect data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Personal data</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die "
"personenbezogenen Daten offengelegt worden sind oder noch offengelegt "
"werden, insbesondere bei Empfängern in Drittländern oder bei internationalen "
"Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </"
"span>_______________________________<br/> <span class=\"T6\">oder</span> "
"<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class="
"\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten "
"beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht "
"bekannt</span>"
msgstr ""
"c) The recipients or categories of recipients to whom the personal data have "
"been disclosed or are yet to be disclosed, in particular to recipients in "
"third countries or to international organizations: <span class=\"T1\"> </"
"span><span class=\"T2\">□ </span>_______________________________<br/> <span "
"class=\"T6\">or</span> <span class=\"T1\"> </span><span class=\"T2\">□ </"
"span><span class=\"T3\">No</span><span class=\"T1\"> disclosure to third "
"parties, </span><span class=\"T2\">□ </span><span class=\"T1\">Not known</"
"span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"d) geplante Dauer, für die die personenbezogenen Daten gespeichert "
"werden: <span class=\"T1\"> </span>"
msgstr ""
"d) Planned duration for which the personal data is stored: <span class="
"\"T1\"> </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung "
"der betreffenden personenbezogenen Daten <span class=\"T1\">besteht "
"oder </span><span class=\"T2\">□ </span>Einschränkung der "
"Verarbeitung durch den Verantwortlichen </span>"
msgstr ""
"e)<span> <span class=\"T2\">□ </span>Right to rectification or deletion of "
"personal data concerned, or <span class=\"T2\">□ </span>Restriction of "
"processing by the controller , or </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts "
"bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
msgstr ""
"f)<span> <span class=\"T2\">□ </span>The existence of a right to complain to "
"a supervisory authority</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class="
"\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class="
"\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
msgstr ""
"g) The origin of the data is from <span class=\"T2\">□ </span><span class="
"\"T4\">Own research, </span><span class=\"T2\">□ </span><span class="
"\"T4\">Credit reference agency</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung "
"<span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
msgstr ""
"h) <span class=\"T2\">□ </span>An automated decision-making with this data "
"does not take place."
#. module: website_contact_extend
#: model:mail.template,subject:website_contact_extend.verification_email_template
msgid "mail verification link"
msgstr "mail verification link"

3
website_contact_extend/models/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import res_partner

28
website_contact_extend/models/res_partner.py

@ -0,0 +1,28 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResContacts(models.Model):
_inherit = "res.partner"
contact_type = fields.Selection([
('no_contact', 'I do not want to be contacted.'),
('email_contact', 'I only want to be contacted by Email.'),
('phone_contact', 'I only want to be contacted by Phone.'),
('email_phone_contact', 'You can contact me by Email or Phone.')
],
string='Contact Type',
default='email_contact',
help="Which way user want to be contacted.")
letter_contact = fields.Boolean("Letter Contact")
phone_contact = fields.Boolean("Phone Contact")
email_contact = fields.Boolean("Email Contact")
is_verified = fields.Boolean("Verified Email")
last_updated = fields.Datetime("Letzte Aktualisierung")
class CrmLead(models.Model):
_inherit = "crm.lead"
email_link = fields.Char("Email verification link")

1
website_contact_extend/readme/CONFIGURE.rst

@ -0,0 +1 @@
The contact mode fields will be added to the Contact Site automatically.

8
website_contact_extend/readme/DESCRIPTION.rst

@ -0,0 +1,8 @@
Extended Website Contact View to give Customer options on how to be
contacted in the future.
For email verification a verification link will be sent to the email address
entered in the contact view.
* contact mode fields will be added to the website contact view.
* Information requests can be submitted from the contact view

8
website_contact_extend/readme/USAGE.rst

@ -0,0 +1,8 @@
Customer can verify his email address with a verification link.
The verification link is automatically sent to the email address
entered in the website contact view.
Following that the mode of future contact can be chosen and a GDPR
information request can be submitted.
A preliminary Report is also printable in the contacts view.

BIN
website_contact_extend/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

164
website_contact_extend/views/contact_report.xml

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<report
id="report_contact"
string="Contact Report"
model="res.partner"
report_type="qweb-pdf"
file="website_contact_extend.contact_report"
name="website_contact_extend.contact_report"
/>
<template id="contact_report">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="website_contact_extend.report_contact_document" t-lang="doc.lang"/>
</t>
</t>
</template>
<template id="report_contact_document">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<h2 class="P8">
<a id="a__Auskunft_nach_Artikel_15_DS-GVO">
<span/>
</a>
Auskunft n
<span class="T1">ach Artikel 15 DS-GVO</span>
</h2>
<p class="Text_20_body"/>
<p class="P1">Auskunft für:
<span class="T8">
<span t-field="doc.name"/>
</span>
</p>
<p class="Text_20_body">Die betroffene Person hat das Recht, von dem Verantwortlichen eine
Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden;
ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf
folgende Informationen:
</p>
<p class="P4">a) die Verarbeitungszwecke:
<span class="T1"></span>
<span class="T2"></span>
<span class="T1">Kontaktaufnahme;</span>
<span class="T2"></span>
<span class="T3">Geschäftsvorgänge;</span>
<span class="T2"></span>
<span class="T3">Sonstiges;</span>
</p>
<p class="P2">b) die Kategorien personenbezogener Daten, die verarbeitet werden:
<span class="T1">
<br/>
</span>
<span class="T2"></span>
<span class="T1">Kundendaten,</span>
<span class="T2"></span>
<span class="T1">Lieferantendaten,</span>
<span class="T2"></span>
<span class="T1">Interessentendaten,</span>
<span class="T2"></span>
<span class="T1">Personaldaten</span>
</p>
<p class="P2">c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen
Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in
Drittländern oder bei internationalen Organisationen:
<span class="T2"></span>_______________________________
<br/>
<span class="T6">oder</span>
<span class="T2"></span>
<span class="T3">keine Offenlegung gegenüber Dritten beabsichtigt,</span>
<span class="T2"></span>
<span class="T1">Nicht bekannt</span>
</p>
<p class="P2">d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden:
</p>
<p class="P4">
<span class="T2">□ bis zum __. __. ____</span>
<span class="T2">□ Bis zu ____ Jahre</span>
<span class="T3">□ Gesetzl. Aufbewahrungfrist</span>
</p>
<p class="P2">
<span class="T6">Grund</span>
<span class="T2">□ Kontakt ____ mal nicht erreicht □ Systemwechsel</span>
</p>
<p class="P2">e)
<span>□ Recht auf Berichtigung oder Löschung der betreffenden
personenbezogenen Daten besteht oder
</span>
<span>□ Einschränkung der Verarbeitung durch den Verantwortlichen
</span>
</p>
<p class="P2"><span>oder □ Widerspruchsrecht gegen diese Verarbeitung besteht;</span>
</p>
<p class="P3">f)
<span>□ das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde besteht
</span>
</p>
<p class="P5">g) die Herkunft der Daten
<span class="T7">ist von</span>
<span class="T2"></span>
<span class="T4">eigener Recherche,</span>
<span class="T2"></span>
<span class="T4">Auskunftei</span>
</p>
<p class="P5">h)<span class="T2"></span>eine automatisierte Entscheidungsfindung
<span class="T7">mit diesen Daten findet nicht statt.</span>
</p>
<p class="P5">
<span class="T2"></span>
<span class="T4">Wenn doch: Die Daten werden</span>
<span class="T7">nach folgender Art ausgewertet und gruppiert _______________</span>
</p>
<p class="P5">(2)
<span class="T2"></span>
<span class="T7">Die</span>personenbezogene Daten<span class="T7">werden nicht</span>an ein
Drittland oder an eine internationale Organisation übermittelt
</p>
<p class="Text_20_body">(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die
Gegenstand der Verarbeitung sind, zur Verfügung:
</p>
<p class="P6">
<p t-if="doc.name">
Name:
<span t-field="doc.name"/>
</p>
<p t-if="doc.email">
Email:
<span t-field="doc.email"/>
</p>
<p t-if="doc.phone">
Phone:
<span t-field="doc.phone"/>
</p>
</p>
<p class="P6">
Adresse:
<span t-field="doc.street"/>
<span t-field="doc.zip"/>
<span t-field="doc.city"/>
<span t-field="doc.country_id.name"/>
</p>
<p class="Text_20_body">(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und
Freiheiten anderer<br/>Personen nicht beeinträchtigen.
</p>
<p class="Text_20_body"></p>
<p class="P7">Auskunftsgeber:
<span class="T8">
<span t-field="doc.user_id.name"/>,
<span t-field="doc.user_id.company_id.name"/>,
<span t-field="doc.user_id.company_id.street"/>,
<span t-field="doc.user_id.company_id.zip"/>
<span t-field="doc.user_id.company_id.city"/>
</span>
</p>
</div>
</t>
</template>
</data>
</odoo>

22
website_contact_extend/views/res_partner.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_gdpr_inherit" model="ir.ui.view">
<field name="name">res.partner.form</field>
<field name="model">res.partner</field>
<field eval="1" name="priority"/>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="website" position="after">
<!--<field name="contact_type" />-->
<field name="phone_contact" readonly="True" />
<field name="email_contact" readonly="True" />
<field name="letter_contact" readonly="True" />
<field name="is_verified" readonly="True" />
<field name="last_updated" readonly="True" />
</field>
</field>
</record>
</odoo>

29
website_contact_extend/views/website_contact.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="contactus_form_inherited" name="Contact Form" inherit_id="website_crm.contactus_form" customize_show="True">
<xpath expr="//div[@class='form-group form-field o_website_form_required_custom'][last()]" position="after">
<div class="form-group form-field o_website_form_required_custom">
<label class="col-md-3 col-sm-4 control-label" for="contact_type">In the future I want to be contacted by</label>
<div class="col-md-7 col-sm-8">
<div class="checkbox>"><label><input type="checkbox" name="letter_contact" value="letter_contact"/> Contact by Letter </label></div>
<div class="checkbox>"><label><input type="checkbox" name="email_contact" value="email_contact"/> Contact by E-Mail </label></div>
<div class="checkbox>"><label><input type="checkbox" name="phone_contact" value="phone_contact"/> Contact by Phone </label></div>
<!--<select class="form-control" name="contact_type" id="contact_type">
<option value="no_contact">I do not want to be contacted.</option>
<option value="email_contact">I only want to be contacted by Email.</option>
<option value="phone_contact">I only want to be contacted by Phone.</option>
<option value="email_phone_contact">You can contact me by Email or Phone.</option>
</select>-->
</div>
</div>
<div class="form-group form-field">
<label class="col-md-3 col-sm-4 control-label" for="contact_type">Information request concerning data about the personally</label>
<div class="col-md-7 col-sm-8">
<input type="checkbox" name="send_mail" value="send_mail"/>
</div>
</div>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save