From d31e7820e495ea40f99849cfd0b9f9e01e78415f Mon Sep 17 00:00:00 2001
From: David
Date: Wed, 10 Jan 2024 18:22:41 +0100
Subject: [PATCH 1/7] [ADD] survey_partner_representative: New module
Do surveys on behalf of others.
TT46965
---
survey_partner_representative/README.rst | 117 +++++
survey_partner_representative/__init__.py | 2 +
survey_partner_representative/__manifest__.py | 25 +
.../controllers/__init__.py | 1 +
.../controllers/main.py | 22 +
.../survey_partner_representative_demo.xml | 43 ++
.../models/__init__.py | 3 +
.../models/survey_representative_mixin.py | 29 ++
.../models/survey_survey.py | 18 +
.../models/survey_user_input.py | 30 ++
.../readme/CONFIGURE.md | 8 +
.../readme/CONTEXT.md | 4 +
.../readme/CONTRIBUTORS.md | 3 +
.../readme/DESCRIPTION.md | 1 +
survey_partner_representative/readme/USAGE.md | 4 +
...survey_partner_representative_security.xml | 9 +
.../static/description/index.html | 458 ++++++++++++++++++
.../tests/survey_representative_tour.esm.js | 45 ++
.../tests/__init__.py | 2 +
survey_partner_representative/tests/models.py | 6 +
.../test_survey_partner_representative.py | 98 ++++
.../tests/test_survey_representative_mixin.py | 50 ++
.../views/survey_survey_views.xml | 12 +
.../views/survey_user_input_views.xml | 15 +
24 files changed, 1005 insertions(+)
create mode 100644 survey_partner_representative/README.rst
create mode 100644 survey_partner_representative/__init__.py
create mode 100644 survey_partner_representative/__manifest__.py
create mode 100644 survey_partner_representative/controllers/__init__.py
create mode 100644 survey_partner_representative/controllers/main.py
create mode 100644 survey_partner_representative/demo/survey_partner_representative_demo.xml
create mode 100644 survey_partner_representative/models/__init__.py
create mode 100644 survey_partner_representative/models/survey_representative_mixin.py
create mode 100644 survey_partner_representative/models/survey_survey.py
create mode 100644 survey_partner_representative/models/survey_user_input.py
create mode 100644 survey_partner_representative/readme/CONFIGURE.md
create mode 100644 survey_partner_representative/readme/CONTEXT.md
create mode 100644 survey_partner_representative/readme/CONTRIBUTORS.md
create mode 100644 survey_partner_representative/readme/DESCRIPTION.md
create mode 100644 survey_partner_representative/readme/USAGE.md
create mode 100644 survey_partner_representative/security/survey_partner_representative_security.xml
create mode 100644 survey_partner_representative/static/description/index.html
create mode 100644 survey_partner_representative/static/tests/survey_representative_tour.esm.js
create mode 100644 survey_partner_representative/tests/__init__.py
create mode 100644 survey_partner_representative/tests/models.py
create mode 100644 survey_partner_representative/tests/test_survey_partner_representative.py
create mode 100644 survey_partner_representative/tests/test_survey_representative_mixin.py
create mode 100644 survey_partner_representative/views/survey_survey_views.xml
create mode 100644 survey_partner_representative/views/survey_user_input_views.xml
diff --git a/survey_partner_representative/README.rst b/survey_partner_representative/README.rst
new file mode 100644
index 00000000..1026faf7
--- /dev/null
+++ b/survey_partner_representative/README.rst
@@ -0,0 +1,117 @@
+=============================
+Survey Partner Representative
+=============================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:32924103c7ee99139f60cb1d89ae02a2085ced8d944a379da91f5d3a2426cf11
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsurvey-lightgray.png?logo=github
+ :target: https://github.com/OCA/survey/tree/15.0/survey_partner_representative
+ :alt: OCA/survey
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/survey-15-0/survey-15-0-survey_partner_representative
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/survey&target_branch=15.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+Do surveys on behalf of others.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Use Cases / Context
+===================
+
+When we have the modules ``survey_contact_generation``,
+``survey_sale_generation`` or ``survey_crm_generation`` a salesman or a
+portal users could want to act as a representative of another using the
+surveys that generate those documents as an entry point.
+
+Configuration
+=============
+
+Users that can make surveys on behalf of others need to have the
+*Representative on surveys* special permission.
+
+If you want to allow that a survey is filled on behalf of others by the
+authorized users:
+
+1. Go to *Surveys > Surveys* and choose the survey you want to
+ configure.
+2. Go to the *Options* tab and in the *Candidates* section set the
+ *Allow Partner Representing* option on.
+
+Usage
+=====
+
+A user acting on behalf of other can start a new survey from the share
+link:
+
+- On the survey backend form, click on *Share* and copy the survey URL.
+- Paste it in your browser and fill the survey with needed data.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+-------
+
+* Tecnativa
+
+Contributors
+------------
+
+- `Tecnativa `__
+
+ - David Vidal
+
+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.
+
+.. |maintainer-chienandalu| image:: https://github.com/chienandalu.png?size=40px
+ :target: https://github.com/chienandalu
+ :alt: chienandalu
+
+Current `maintainer `__:
+
+|maintainer-chienandalu|
+
+This module is part of the `OCA/survey `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/survey_partner_representative/__init__.py b/survey_partner_representative/__init__.py
new file mode 100644
index 00000000..91c5580f
--- /dev/null
+++ b/survey_partner_representative/__init__.py
@@ -0,0 +1,2 @@
+from . import controllers
+from . import models
diff --git a/survey_partner_representative/__manifest__.py b/survey_partner_representative/__manifest__.py
new file mode 100644
index 00000000..6cbe77a1
--- /dev/null
+++ b/survey_partner_representative/__manifest__.py
@@ -0,0 +1,25 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+{
+ "name": "Survey Partner Representative",
+ "summary": "Fill the survey on behalf of others",
+ "version": "15.0.1.0.0",
+ "development_status": "Beta",
+ "category": "Marketing/Survey",
+ "website": "https://github.com/OCA/survey",
+ "author": "Tecnativa, Odoo Community Association (OCA)",
+ "maintainers": ["chienandalu"],
+ "license": "AGPL-3",
+ "depends": ["survey"],
+ "data": [
+ "security/survey_partner_representative_security.xml",
+ "views/survey_survey_views.xml",
+ "views/survey_user_input_views.xml",
+ ],
+ "demo": ["demo/survey_partner_representative_demo.xml"],
+ "assets": {
+ "web.assets_tests": [
+ "/survey_partner_representative/static/tests/survey_representative_tour.esm.js",
+ ],
+ },
+}
diff --git a/survey_partner_representative/controllers/__init__.py b/survey_partner_representative/controllers/__init__.py
new file mode 100644
index 00000000..12a7e529
--- /dev/null
+++ b/survey_partner_representative/controllers/__init__.py
@@ -0,0 +1 @@
+from . import main
diff --git a/survey_partner_representative/controllers/main.py b/survey_partner_representative/controllers/main.py
new file mode 100644
index 00000000..8cc14874
--- /dev/null
+++ b/survey_partner_representative/controllers/main.py
@@ -0,0 +1,22 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo.http import request
+
+from odoo.addons.survey.controllers.main import Survey
+
+
+class Survey(Survey):
+ def _check_validity(
+ self, survey_token, answer_token, ensure_token=True, check_partner=True
+ ):
+ """Avoid partner mismatching error"""
+ survey_sudo, _answer_sudo = self._fetch_from_access_token(
+ survey_token, answer_token
+ )
+ if survey_sudo.allow_partner_representing and request.env.user.has_group(
+ "survey_partner_representative.partner_representative"
+ ):
+ check_partner = False
+ return super()._check_validity(
+ survey_token, answer_token, ensure_token, check_partner
+ )
diff --git a/survey_partner_representative/demo/survey_partner_representative_demo.xml b/survey_partner_representative/demo/survey_partner_representative_demo.xml
new file mode 100644
index 00000000..e3a28cab
--- /dev/null
+++ b/survey_partner_representative/demo/survey_partner_representative_demo.xml
@@ -0,0 +1,43 @@
+
+
+
+ Meal preferences
+ 80e5f1e2-1a9d-4c51-8e23-4abc7534
+ public
+
+
+
+
+ 0
+ Name
+ char_box
+
+
+
+
+ 1
+ Email
+ char_box
+
+
+
+ 4
+ What would you like for dinner?
+ simple_choice
+
+
+
+ 1
+ Meat
+
+
+
+ 2
+ Fish
+
+
+
+ 3
+ Vegan
+
+
diff --git a/survey_partner_representative/models/__init__.py b/survey_partner_representative/models/__init__.py
new file mode 100644
index 00000000..ca3515f3
--- /dev/null
+++ b/survey_partner_representative/models/__init__.py
@@ -0,0 +1,3 @@
+from . import survey_representative_mixin
+from . import survey_survey
+from . import survey_user_input
diff --git a/survey_partner_representative/models/survey_representative_mixin.py b/survey_partner_representative/models/survey_representative_mixin.py
new file mode 100644
index 00000000..b40570b0
--- /dev/null
+++ b/survey_partner_representative/models/survey_representative_mixin.py
@@ -0,0 +1,29 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import api, fields, models
+
+
+class SurveyRepresentativeMixin(models.AbstractModel):
+ """This abstract is handy when we have a generated record that is linked to a
+ user input. This way, we can compute the represetative partner right away"""
+
+ _name = "survey.representative.mixin"
+ _description = "Use this mixin in models that have a linked survey input"
+
+ survey_user_input_id = fields.Many2one(
+ comodel_name="survey.user_input", readonly=True
+ )
+ survey_representative_partner_id = fields.Many2one(
+ comodel_name="res.partner",
+ compute="_compute_survey_representative_partner_id",
+ store=True,
+ readonly=False,
+ )
+
+ @api.depends("survey_user_input_id")
+ def _compute_survey_representative_partner_id(self):
+ """Users can set the field independently of the answer, but the answer rules"""
+ for record in self:
+ record.survey_representative_partner_id = (
+ self.survey_user_input_id.representative_partner_id
+ )
diff --git a/survey_partner_representative/models/survey_survey.py b/survey_partner_representative/models/survey_survey.py
new file mode 100644
index 00000000..09fefd62
--- /dev/null
+++ b/survey_partner_representative/models/survey_survey.py
@@ -0,0 +1,18 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import fields, models
+
+
+class SurveySurvey(models.Model):
+ _inherit = "survey.survey"
+
+ allow_partner_representing = fields.Boolean(
+ help="A user with the proper permissions, could do the survey on behalf of other"
+ )
+
+ def _create_answer(self, *args, **kwargs):
+ """Inject the context so the partner representation is only done on a normal
+ survey workflow"""
+ if self.allow_partner_representing:
+ self = self.with_context(survey_partner_representative=True)
+ return super()._create_answer(*args, **kwargs)
diff --git a/survey_partner_representative/models/survey_user_input.py b/survey_partner_representative/models/survey_user_input.py
new file mode 100644
index 00000000..6b9aac51
--- /dev/null
+++ b/survey_partner_representative/models/survey_user_input.py
@@ -0,0 +1,30 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo import api, fields, models
+
+
+class SurveyUserInput(models.Model):
+ _inherit = "survey.user_input"
+
+ representative_partner_id = fields.Many2one(
+ comodel_name="res.partner",
+ help="This partner filled this survey on behalf of other",
+ readonly=True,
+ )
+
+ @api.model_create_multi
+ def create(self, vals_list):
+ """Remove the user information so the survey is made anonymously"""
+ answers = super().create(vals_list)
+ if (
+ self.env.context.get("survey_partner_representative")
+ and self.env.user.has_group(
+ "survey_partner_representative.partner_representative"
+ )
+ and all(answers.survey_id.mapped("allow_partner_representing"))
+ ):
+ answers.partner_id = False
+ answers.email = False
+ answers.nickname = False
+ answers.representative_partner_id = self.env.user.partner_id
+ return answers
diff --git a/survey_partner_representative/readme/CONFIGURE.md b/survey_partner_representative/readme/CONFIGURE.md
new file mode 100644
index 00000000..51f818b2
--- /dev/null
+++ b/survey_partner_representative/readme/CONFIGURE.md
@@ -0,0 +1,8 @@
+Users that can make surveys on behalf of others need to have the
+*Representative on surveys* special permission.
+
+If you want to allow that a survey is filled on behalf of others by the authorized users:
+
+1. Go to *Surveys > Surveys* and choose the survey you want to configure.
+2. Go to the *Options* tab and in the *Candidates* section set the *Allow Partner Representing*
+ option on.
diff --git a/survey_partner_representative/readme/CONTEXT.md b/survey_partner_representative/readme/CONTEXT.md
new file mode 100644
index 00000000..6a7b0a8f
--- /dev/null
+++ b/survey_partner_representative/readme/CONTEXT.md
@@ -0,0 +1,4 @@
+When we have the modules `survey_contact_generation`, `survey_sale_generation` or
+`survey_crm_generation` a salesman or a portal users could want to act as a
+representative of another using the surveys that generate those documents as an entry
+point.
diff --git a/survey_partner_representative/readme/CONTRIBUTORS.md b/survey_partner_representative/readme/CONTRIBUTORS.md
new file mode 100644
index 00000000..59e234a1
--- /dev/null
+++ b/survey_partner_representative/readme/CONTRIBUTORS.md
@@ -0,0 +1,3 @@
+- [Tecnativa](https://www.tecnativa.com)
+
+ - David Vidal
diff --git a/survey_partner_representative/readme/DESCRIPTION.md b/survey_partner_representative/readme/DESCRIPTION.md
new file mode 100644
index 00000000..bf387523
--- /dev/null
+++ b/survey_partner_representative/readme/DESCRIPTION.md
@@ -0,0 +1 @@
+Do surveys on behalf of others.
diff --git a/survey_partner_representative/readme/USAGE.md b/survey_partner_representative/readme/USAGE.md
new file mode 100644
index 00000000..f7e06afd
--- /dev/null
+++ b/survey_partner_representative/readme/USAGE.md
@@ -0,0 +1,4 @@
+A user acting on behalf of other can start a new survey from the share link:
+
+- On the survey backend form, click on *Share* and copy the survey URL.
+- Paste it in your browser and fill the survey with needed data.
diff --git a/survey_partner_representative/security/survey_partner_representative_security.xml b/survey_partner_representative/security/survey_partner_representative_security.xml
new file mode 100644
index 00000000..3bb1f3ed
--- /dev/null
+++ b/survey_partner_representative/security/survey_partner_representative_security.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ Representative on surveys
+
+
+
diff --git a/survey_partner_representative/static/description/index.html b/survey_partner_representative/static/description/index.html
new file mode 100644
index 00000000..7190d870
--- /dev/null
+++ b/survey_partner_representative/static/description/index.html
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+Survey Partner Representative
+
+
+
+
+
Survey Partner Representative
+
+
+
![Try me on Runboat](https://img.shields.io/badge/runboat-Try%20me-875A7B.png)
+
Do surveys on behalf of others.
+
Table of contents
+
+
+
+
When we have the modules survey_contact_generation,
+survey_sale_generation or survey_crm_generation a salesman or a
+portal users could want to act as a representative of another using the
+surveys that generate those documents as an entry point.
+
+
+
+
Users that can make surveys on behalf of others need to have the
+Representative on surveys special permission.
+
If you want to allow that a survey is filled on behalf of others by the
+authorized users:
+
+- Go to Surveys > Surveys and choose the survey you want to
+configure.
+- Go to the Options tab and in the Candidates section set the
+Allow Partner Representing option on.
+
+
+
+
+
A user acting on behalf of other can start a new survey from the share
+link:
+
+- On the survey backend form, click on Share and copy the survey URL.
+- Paste it in your browser and fill the survey with needed data.
+
+
+
+
+
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+
![Odoo Community Association](https://odoo-community.org/logo.png)
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
Current maintainer:
+
![chienandalu](https://github.com/chienandalu.png?size=40px)
+
This module is part of the OCA/survey project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
diff --git a/survey_partner_representative/static/tests/survey_representative_tour.esm.js b/survey_partner_representative/static/tests/survey_representative_tour.esm.js
new file mode 100644
index 00000000..c11d34f9
--- /dev/null
+++ b/survey_partner_representative/static/tests/survey_representative_tour.esm.js
@@ -0,0 +1,45 @@
+/** @odoo-module */
+
+import tour from "web_tour.tour";
+
+tour.register(
+ "test_survey_representative",
+ {
+ test: true,
+ url: "/survey/start/80e5f1e2-1a9d-4c51-8e23-4abc7534",
+ },
+ [
+ {
+ content: "Click on Start",
+ trigger: "button.btn:contains('Start Survey')",
+ },
+ {
+ content: "Name",
+ trigger: "div.js_question-wrapper:contains('Name') input",
+ run: "text Mr. Odoo",
+ },
+ {
+ content: "Email",
+ trigger: "div.js_question-wrapper:contains('Email') input",
+ run: "text mrodoo@test.com",
+ },
+ {
+ content: "What meal?",
+ trigger:
+ "div.js_question-wrapper:contains('What would you like for dinner') label:contains('Meat') i",
+ run: function () {
+ $(
+ "div.js_question-wrapper:contains('What would you like for dinner') label:contains('Meat') i"
+ ).prop("checked", true);
+ },
+ },
+ {
+ content: "Click Submit",
+ trigger: "button[value='finish']",
+ },
+ {
+ content: "Thank you",
+ trigger: "h1:contains('Thank you!')",
+ },
+ ]
+);
diff --git a/survey_partner_representative/tests/__init__.py b/survey_partner_representative/tests/__init__.py
new file mode 100644
index 00000000..ac4183dd
--- /dev/null
+++ b/survey_partner_representative/tests/__init__.py
@@ -0,0 +1,2 @@
+from . import test_survey_partner_representative
+from . import test_survey_representative_mixin
diff --git a/survey_partner_representative/tests/models.py b/survey_partner_representative/tests/models.py
new file mode 100644
index 00000000..44c975c6
--- /dev/null
+++ b/survey_partner_representative/tests/models.py
@@ -0,0 +1,6 @@
+from odoo import models
+
+
+class ResPartner(models.Model):
+ _inherit = ["res.partner", "survey.representative.mixin"]
+ _name = "res.partner"
diff --git a/survey_partner_representative/tests/test_survey_partner_representative.py b/survey_partner_representative/tests/test_survey_partner_representative.py
new file mode 100644
index 00000000..ff8c571f
--- /dev/null
+++ b/survey_partner_representative/tests/test_survey_partner_representative.py
@@ -0,0 +1,98 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo.tests import HttpCase, tagged
+
+from odoo.addons.survey.tests.common import SurveyCase
+
+
+@tagged("-at_install", "post_install")
+class SurveyRepresentativeCase(SurveyCase, HttpCase):
+ def setUp(self):
+ """We run the tour in the setup so we can share the tests case with other
+ modules"""
+ super().setUp()
+ self.portal_partner = self.env.ref("base.partner_demo_portal")
+ self.portal_user = self.env.ref("base.demo_user0")
+ self.representative_group = self.env.ref(
+ "survey_partner_representative.partner_representative"
+ )
+ self.survey = self.env.ref(
+ "survey_partner_representative.survey_representative_demo"
+ )
+
+ def _do_survey(self):
+ """Run the survey common method"""
+ initial_user_inputs = self.survey.user_input_ids
+ self.start_tour(
+ f"/survey/start/{self.survey.access_token}",
+ "test_survey_representative",
+ login="portal",
+ )
+ self.user_input = self.survey.user_input_ids - initial_user_inputs
+
+
+@tagged("-at_install", "post_install")
+class SurveyRepresentativeTests(SurveyRepresentativeCase):
+ def test_not_survey_representative_not_allowed_partner(self):
+ """A survey that can't be filled by representatives and a user who doesn't
+ have the permissions"""
+ self._do_survey()
+ self.assertEqual(
+ self.user_input.partner_id,
+ self.portal_partner,
+ "The partner should be the one filling the survey",
+ )
+ self.assertEqual(
+ self.user_input.representative_partner_id,
+ self.env["res.partner"],
+ "The representative partner should be empty",
+ )
+
+ def test_survey_allowed_representative_not_allowed_partner(self):
+ """A survey that can be filled by representatives and a user who doesn't have
+ the permissions"""
+ self.survey.allow_partner_representing = True
+ self._do_survey()
+ self.assertEqual(
+ self.user_input.partner_id,
+ self.portal_partner,
+ "The partner should be the one filling the survey",
+ )
+ self.assertEqual(
+ self.user_input.representative_partner_id,
+ self.env["res.partner"],
+ "The representative partner should be empty",
+ )
+
+ def test_survey_not_representative_not_allowed_partner(self):
+ """A survey that can't be filled by representatives and a user who has
+ the permissions"""
+ self.representative_group.users |= self.portal_user
+ self._do_survey()
+ self.assertEqual(
+ self.user_input.partner_id,
+ self.portal_partner,
+ "The partner should be the one filling the survey",
+ )
+ self.assertEqual(
+ self.user_input.representative_partner_id,
+ self.env["res.partner"],
+ "The representative partner should be empty",
+ )
+
+ def test_survey_allowd_representative_allowed_partner(self):
+ """A survey that can't be filled by representatives and a user who has
+ the permissions"""
+ self.representative_group.users |= self.portal_user
+ self.survey.allow_partner_representing = True
+ self._do_survey()
+ self.assertEqual(
+ self.user_input.partner_id,
+ self.env["res.partner"],
+ "he partner should be empty",
+ )
+ self.assertEqual(
+ self.user_input.representative_partner_id,
+ self.portal_partner,
+ "The representative partner should the one filling the survey",
+ )
diff --git a/survey_partner_representative/tests/test_survey_representative_mixin.py b/survey_partner_representative/tests/test_survey_representative_mixin.py
new file mode 100644
index 00000000..846a0594
--- /dev/null
+++ b/survey_partner_representative/tests/test_survey_representative_mixin.py
@@ -0,0 +1,50 @@
+# Copyright 2024 Tecnativa - David Vidal
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+from odoo_test_helper import FakeModelLoader
+
+from odoo.tests import tagged
+
+from .test_survey_partner_representative import SurveyRepresentativeCase
+
+
+@tagged("-at_install", "post_install")
+class SurveyRepresentativeMixinCase(SurveyRepresentativeCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
+ cls.loader = FakeModelLoader(cls.env, cls.__module__)
+ cls.loader.backup_registry()
+ from .models import ResPartner
+
+ cls.loader.update_registry((ResPartner,))
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.loader.restore_registry()
+ super().tearDownClass()
+
+ def test_create_partner_representative_mixin(self):
+ self.representative_group.users |= self.portal_user
+ self.survey.allow_partner_representing = True
+ self._do_survey()
+ self.assertEqual(
+ self.user_input.partner_id,
+ self.env["res.partner"],
+ "he partner should be empty",
+ )
+ self.assertEqual(
+ self.user_input.representative_partner_id,
+ self.portal_partner,
+ "The representative partner should the one filling the survey",
+ )
+ partner = self.env["res.partner"].create(
+ {
+ "name": "Test generated partner representative",
+ "survey_user_input_id": self.user_input.id,
+ }
+ )
+ self.assertEqual(
+ partner.survey_representative_partner_id,
+ self.portal_partner,
+ "The representative partner should the one filling the survey",
+ )
diff --git a/survey_partner_representative/views/survey_survey_views.xml b/survey_partner_representative/views/survey_survey_views.xml
new file mode 100644
index 00000000..e71887fe
--- /dev/null
+++ b/survey_partner_representative/views/survey_survey_views.xml
@@ -0,0 +1,12 @@
+
+
+
+ survey.survey
+
+
+
+
+
+
+
+
diff --git a/survey_partner_representative/views/survey_user_input_views.xml b/survey_partner_representative/views/survey_user_input_views.xml
new file mode 100644
index 00000000..145961f0
--- /dev/null
+++ b/survey_partner_representative/views/survey_user_input_views.xml
@@ -0,0 +1,15 @@
+
+
+
+ survey.user_input
+
+
+
+
+
+
+
+
From 53bff124e0bfa7592ba29505277fee203b799373 Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Tue, 16 Jan 2024 07:28:04 +0000
Subject: [PATCH 2/7] [UPD] Update survey_partner_representative.pot
---
.../i18n/survey_partner_representative.pot | 117 ++++++++++++++++++
1 file changed, 117 insertions(+)
create mode 100644 survey_partner_representative/i18n/survey_partner_representative.pot
diff --git a/survey_partner_representative/i18n/survey_partner_representative.pot b/survey_partner_representative/i18n/survey_partner_representative.pot
new file mode 100644
index 00000000..1251c51f
--- /dev/null
+++ b/survey_partner_representative/i18n/survey_partner_representative.pot
@@ -0,0 +1,117 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * survey_partner_representative
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,help:survey_partner_representative.field_survey_survey__allow_partner_representing
+msgid ""
+"A user with the proper permissions, could do the survey on behalf of other"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_survey__allow_partner_representing
+msgid "Allow Partner Representing"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q1
+msgid "Email"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug2
+msgid "Fish"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q0
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q1
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q5
+msgid "If other, please specify:"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.survey,title:survey_partner_representative.survey_representative_demo
+msgid "Meal preferences"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug1
+msgid "Meat"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q0
+msgid "Name"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_user_input__representative_partner_id
+msgid "Representative Partner"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:res.groups,name:survey_partner_representative.partner_representative
+msgid "Representative on surveys"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_survey
+msgid "Survey"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_representative_partner_id
+msgid "Survey Representative Partner"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_user_input
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_user_input_id
+msgid "Survey User Input"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q0
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q1
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q5
+msgid "The answer you entered is not valid."
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,help:survey_partner_representative.field_survey_user_input__representative_partner_id
+msgid "This partner filled this survey on behalf of other"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q0
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q1
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q5
+msgid "This question requires an answer."
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_representative_mixin
+msgid "Use this mixin in models that have a linked survey input"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug3
+msgid "Vegan"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q5
+msgid "What would you like for dinner?"
+msgstr ""
From 2065d6d81ab7b75a90f0e3638cb660c8f1075d88 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 16 Jan 2024 07:31:04 +0000
Subject: [PATCH 3/7] [BOT] post-merge updates
---
.../static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 survey_partner_representative/static/description/icon.png
diff --git a/survey_partner_representative/static/description/icon.png b/survey_partner_representative/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~!
zVpnB`o+K7|Al`Q_U;eD$B
zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA
z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__
zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_
zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I
z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U
z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)(
z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH
zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW
z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx
zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h
zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9
zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz#
z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA
zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K=
z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS
zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C
zuVl&0duN<;uOsB3%T9Fp8t{ED108)`y_~Hnd9AUX7h-H?jVuU|}My+C=TjH(jKz
zqMVr0re3S$H@t{zI95qa)+Crz*5Zj}Ao%4Z><+W(nOZd?gDnfNBC3>M8WE61$So|P
zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO
z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1
zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_
zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8
zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ>
zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN
z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h
zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d
zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB
zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz
z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I
zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X
zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD
z#z-)AXwSRY?OPefw^iI+
z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd
z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs
z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I
z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$
z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV
z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s
zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6
zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u
zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q
zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH
zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c
zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT
zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+
z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ
zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy
zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC)
zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a
zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x!
zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X
zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8
z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A
z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H
zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n=
z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK
z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z
zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h
z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD
z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW
zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@
zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz
z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y<
zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X
zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6
zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6%
z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(|
z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ
z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H
zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6
z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d}
z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A
zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
From 387d7e84d2eeeb82827404f61324316ded9e85b1 Mon Sep 17 00:00:00 2001
From: David Vidal
Date: Wed, 17 Jan 2024 09:45:43 +0000
Subject: [PATCH 4/7] Added translation using Weblate (Spanish)
---
survey_partner_representative/i18n/es.po | 118 +++++++++++++++++++++++
1 file changed, 118 insertions(+)
create mode 100644 survey_partner_representative/i18n/es.po
diff --git a/survey_partner_representative/i18n/es.po b/survey_partner_representative/i18n/es.po
new file mode 100644
index 00000000..273ed2eb
--- /dev/null
+++ b/survey_partner_representative/i18n/es.po
@@ -0,0 +1,118 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * survey_partner_representative
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 15.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,help:survey_partner_representative.field_survey_survey__allow_partner_representing
+msgid ""
+"A user with the proper permissions, could do the survey on behalf of other"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_survey__allow_partner_representing
+msgid "Allow Partner Representing"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q1
+msgid "Email"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug2
+msgid "Fish"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q0
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q1
+#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q5
+msgid "If other, please specify:"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.survey,title:survey_partner_representative.survey_representative_demo
+msgid "Meal preferences"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug1
+msgid "Meat"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q0
+msgid "Name"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_user_input__representative_partner_id
+msgid "Representative Partner"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:res.groups,name:survey_partner_representative.partner_representative
+msgid "Representative on surveys"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_survey
+msgid "Survey"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_representative_partner_id
+msgid "Survey Representative Partner"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_user_input
+#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_user_input_id
+msgid "Survey User Input"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q0
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q1
+#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q5
+msgid "The answer you entered is not valid."
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model.fields,help:survey_partner_representative.field_survey_user_input__representative_partner_id
+msgid "This partner filled this survey on behalf of other"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q0
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q1
+#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q5
+msgid "This question requires an answer."
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:ir.model,name:survey_partner_representative.model_survey_representative_mixin
+msgid "Use this mixin in models that have a linked survey input"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug3
+msgid "Vegan"
+msgstr ""
+
+#. module: survey_partner_representative
+#: model:survey.question,title:survey_partner_representative.survey_representative_q5
+msgid "What would you like for dinner?"
+msgstr ""
From cebbafd6b988ed1ae7e1a37ef139929d0adf9cbc Mon Sep 17 00:00:00 2001
From: David Vidal
Date: Wed, 17 Jan 2024 09:46:38 +0000
Subject: [PATCH 5/7] Translated using Weblate (Spanish)
Currently translated at 100.0% (19 of 19 strings)
Translation: survey-15.0/survey-15.0-survey_partner_representative
Translate-URL: https://translation.odoo-community.org/projects/survey-15-0/survey-15-0-survey_partner_representative/es/
---
survey_partner_representative/i18n/es.po | 40 +++++++++++++-----------
1 file changed, 22 insertions(+), 18 deletions(-)
diff --git a/survey_partner_representative/i18n/es.po b/survey_partner_representative/i18n/es.po
index 273ed2eb..f7cc818b 100644
--- a/survey_partner_representative/i18n/es.po
+++ b/survey_partner_representative/i18n/es.po
@@ -6,113 +6,117 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2024-01-17 12:36+0000\n"
+"Last-Translator: David Vidal \n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
#. module: survey_partner_representative
#: model:ir.model.fields,help:survey_partner_representative.field_survey_survey__allow_partner_representing
msgid ""
"A user with the proper permissions, could do the survey on behalf of other"
msgstr ""
+"Un usuario con los permisos pertinentes puede hacer la encuesta por otro"
#. module: survey_partner_representative
#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_survey__allow_partner_representing
msgid "Allow Partner Representing"
-msgstr ""
+msgstr "Permitir representación de contacto"
#. module: survey_partner_representative
#: model:survey.question,title:survey_partner_representative.survey_representative_q1
msgid "Email"
-msgstr ""
+msgstr "Correo electrónico"
#. module: survey_partner_representative
#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug2
msgid "Fish"
-msgstr ""
+msgstr "Pescado"
#. module: survey_partner_representative
#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q0
#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q1
#: model:survey.question,comments_message:survey_partner_representative.survey_representative_q5
msgid "If other, please specify:"
-msgstr ""
+msgstr "Si es otra, especifique por favor:"
#. module: survey_partner_representative
#: model:survey.survey,title:survey_partner_representative.survey_representative_demo
msgid "Meal preferences"
-msgstr ""
+msgstr "Preferencias para la comida"
#. module: survey_partner_representative
#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug1
msgid "Meat"
-msgstr ""
+msgstr "Carne"
#. module: survey_partner_representative
#: model:survey.question,title:survey_partner_representative.survey_representative_q0
msgid "Name"
-msgstr ""
+msgstr "Nombre"
#. module: survey_partner_representative
#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_user_input__representative_partner_id
msgid "Representative Partner"
-msgstr ""
+msgstr "Contacto representante"
#. module: survey_partner_representative
#: model:res.groups,name:survey_partner_representative.partner_representative
msgid "Representative on surveys"
-msgstr ""
+msgstr "Representante en encuestas"
#. module: survey_partner_representative
#: model:ir.model,name:survey_partner_representative.model_survey_survey
msgid "Survey"
-msgstr ""
+msgstr "Encuesta"
#. module: survey_partner_representative
#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_representative_partner_id
msgid "Survey Representative Partner"
-msgstr ""
+msgstr "Contacto representante en la encuesta"
#. module: survey_partner_representative
#: model:ir.model,name:survey_partner_representative.model_survey_user_input
#: model:ir.model.fields,field_description:survey_partner_representative.field_survey_representative_mixin__survey_user_input_id
msgid "Survey User Input"
-msgstr ""
+msgstr "Respuesta de usuario"
#. module: survey_partner_representative
#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q0
#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q1
#: model:survey.question,validation_error_msg:survey_partner_representative.survey_representative_q5
msgid "The answer you entered is not valid."
-msgstr ""
+msgstr "La respuesta que ha introducido no es válida."
#. module: survey_partner_representative
#: model:ir.model.fields,help:survey_partner_representative.field_survey_user_input__representative_partner_id
msgid "This partner filled this survey on behalf of other"
-msgstr ""
+msgstr "Este contacto relleno la encuesta en representación de otro"
#. module: survey_partner_representative
#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q0
#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q1
#: model:survey.question,constr_error_msg:survey_partner_representative.survey_representative_q5
msgid "This question requires an answer."
-msgstr ""
+msgstr "Esta pregunta requiere una respuesta."
#. module: survey_partner_representative
#: model:ir.model,name:survey_partner_representative.model_survey_representative_mixin
msgid "Use this mixin in models that have a linked survey input"
msgstr ""
+"Utilice este mixin en modelos que tengan ligada una respuesta de encuesta"
#. module: survey_partner_representative
#: model:survey.question.answer,value:survey_partner_representative.survey_representative_q5_sug3
msgid "Vegan"
-msgstr ""
+msgstr "Vegano"
#. module: survey_partner_representative
#: model:survey.question,title:survey_partner_representative.survey_representative_q5
msgid "What would you like for dinner?"
-msgstr ""
+msgstr "¿Qué le gustaría para cenar?"
From 484ae5cc878f87ef44d02c32e95e2be7ec5bdfa3 Mon Sep 17 00:00:00 2001
From: pilarvargas-tecnativa
Date: Wed, 15 Jan 2025 18:30:16 +0100
Subject: [PATCH 6/7] [IMP] survey_partner_representative: pre-commit auto
fixes
---
survey_partner_representative/pyproject.toml | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 survey_partner_representative/pyproject.toml
diff --git a/survey_partner_representative/pyproject.toml b/survey_partner_representative/pyproject.toml
new file mode 100644
index 00000000..4231d0cc
--- /dev/null
+++ b/survey_partner_representative/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
From 1ed5639703bd691f8c39d411a89b5fe5acdb796e Mon Sep 17 00:00:00 2001
From: pilarvargas-tecnativa
Date: Mon, 27 Jan 2025 11:43:46 +0100
Subject: [PATCH 7/7] [MIG] survey_partner_representative: Migration to version
17.0
TT51953
---
survey_partner_representative/README.rst | 12 ++++-----
survey_partner_representative/__manifest__.py | 2 +-
.../controllers/main.py | 2 +-
.../models/survey_representative_mixin.py | 2 +-
.../models/survey_survey.py | 7 ++---
.../models/survey_user_input.py | 2 +-
.../readme/CONFIGURE.md | 2 +-
...survey_partner_representative_security.xml | 2 +-
.../static/description/index.html | 20 +++++++-------
.../tests/survey_representative_tour.esm.js | 27 +++++++++++--------
.../views/survey_survey_views.xml | 4 +--
.../views/survey_user_input_views.xml | 2 +-
test-requirements.txt | 1 +
13 files changed, 47 insertions(+), 38 deletions(-)
create mode 100644 test-requirements.txt
diff --git a/survey_partner_representative/README.rst b/survey_partner_representative/README.rst
index 1026faf7..1e56d12f 100644
--- a/survey_partner_representative/README.rst
+++ b/survey_partner_representative/README.rst
@@ -17,13 +17,13 @@ Survey Partner Representative
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsurvey-lightgray.png?logo=github
- :target: https://github.com/OCA/survey/tree/15.0/survey_partner_representative
+ :target: https://github.com/OCA/survey/tree/17.0/survey_partner_representative
:alt: OCA/survey
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/survey-15-0/survey-15-0-survey_partner_representative
+ :target: https://translation.odoo-community.org/projects/survey-17-0/survey-17-0-survey_partner_representative
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
- :target: https://runboat.odoo-community.org/builds?repo=OCA/survey&target_branch=15.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/survey&target_branch=17.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -54,7 +54,7 @@ authorized users:
1. Go to *Surveys > Surveys* and choose the survey you want to
configure.
-2. Go to the *Options* tab and in the *Candidates* section set the
+2. Go to the *Options* tab and in the *Participants* section set the
*Allow Partner Representing* option on.
Usage
@@ -72,7 +72,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -112,6 +112,6 @@ Current `maintainer `__:
|maintainer-chienandalu|
-This module is part of the `OCA/survey `_ project on GitHub.
+This module is part of the `OCA/survey `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/survey_partner_representative/__manifest__.py b/survey_partner_representative/__manifest__.py
index 6cbe77a1..c6df8890 100644
--- a/survey_partner_representative/__manifest__.py
+++ b/survey_partner_representative/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Survey Partner Representative",
"summary": "Fill the survey on behalf of others",
- "version": "15.0.1.0.0",
+ "version": "17.0.1.0.0",
"development_status": "Beta",
"category": "Marketing/Survey",
"website": "https://github.com/OCA/survey",
diff --git a/survey_partner_representative/controllers/main.py b/survey_partner_representative/controllers/main.py
index 8cc14874..2632465d 100644
--- a/survey_partner_representative/controllers/main.py
+++ b/survey_partner_representative/controllers/main.py
@@ -9,7 +9,7 @@ class Survey(Survey):
def _check_validity(
self, survey_token, answer_token, ensure_token=True, check_partner=True
):
- """Avoid partner mismatching error"""
+ # Avoid partner mismatching error
survey_sudo, _answer_sudo = self._fetch_from_access_token(
survey_token, answer_token
)
diff --git a/survey_partner_representative/models/survey_representative_mixin.py b/survey_partner_representative/models/survey_representative_mixin.py
index b40570b0..c84ffdd1 100644
--- a/survey_partner_representative/models/survey_representative_mixin.py
+++ b/survey_partner_representative/models/survey_representative_mixin.py
@@ -25,5 +25,5 @@ def _compute_survey_representative_partner_id(self):
"""Users can set the field independently of the answer, but the answer rules"""
for record in self:
record.survey_representative_partner_id = (
- self.survey_user_input_id.representative_partner_id
+ record.survey_user_input_id.representative_partner_id
)
diff --git a/survey_partner_representative/models/survey_survey.py b/survey_partner_representative/models/survey_survey.py
index 09fefd62..af861fa2 100644
--- a/survey_partner_representative/models/survey_survey.py
+++ b/survey_partner_representative/models/survey_survey.py
@@ -7,12 +7,13 @@ class SurveySurvey(models.Model):
_inherit = "survey.survey"
allow_partner_representing = fields.Boolean(
- help="A user with the proper permissions, could do the survey on behalf of other"
+ help="A user with the proper permissions, could do the survey on "
+ "behalf of other"
)
def _create_answer(self, *args, **kwargs):
- """Inject the context so the partner representation is only done on a normal
- survey workflow"""
+ # Inject the context so the partner representation is only done on a normal
+ # survey workflow
if self.allow_partner_representing:
self = self.with_context(survey_partner_representative=True)
return super()._create_answer(*args, **kwargs)
diff --git a/survey_partner_representative/models/survey_user_input.py b/survey_partner_representative/models/survey_user_input.py
index 6b9aac51..b57a8362 100644
--- a/survey_partner_representative/models/survey_user_input.py
+++ b/survey_partner_representative/models/survey_user_input.py
@@ -14,7 +14,7 @@ class SurveyUserInput(models.Model):
@api.model_create_multi
def create(self, vals_list):
- """Remove the user information so the survey is made anonymously"""
+ # Remove the user information so the survey is made anonymously
answers = super().create(vals_list)
if (
self.env.context.get("survey_partner_representative")
diff --git a/survey_partner_representative/readme/CONFIGURE.md b/survey_partner_representative/readme/CONFIGURE.md
index 51f818b2..1cf1fd27 100644
--- a/survey_partner_representative/readme/CONFIGURE.md
+++ b/survey_partner_representative/readme/CONFIGURE.md
@@ -4,5 +4,5 @@ Users that can make surveys on behalf of others need to have the
If you want to allow that a survey is filled on behalf of others by the authorized users:
1. Go to *Surveys > Surveys* and choose the survey you want to configure.
-2. Go to the *Options* tab and in the *Candidates* section set the *Allow Partner Representing*
+2. Go to the *Options* tab and in the *Participants* section set the *Allow Partner Representing*
option on.
diff --git a/survey_partner_representative/security/survey_partner_representative_security.xml b/survey_partner_representative/security/survey_partner_representative_security.xml
index 3bb1f3ed..3e46a87e 100644
--- a/survey_partner_representative/security/survey_partner_representative_security.xml
+++ b/survey_partner_representative/security/survey_partner_representative_security.xml
@@ -1,7 +1,7 @@
-
+
Representative on surveys
diff --git a/survey_partner_representative/static/description/index.html b/survey_partner_representative/static/description/index.html
index 7190d870..16aae856 100644
--- a/survey_partner_representative/static/description/index.html
+++ b/survey_partner_representative/static/description/index.html
@@ -1,4 +1,3 @@
-
@@ -9,10 +8,11 @@
/*
:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
+:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
+Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
@@ -275,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }
-pre.code .ln { color: grey; } /* line numbers */
+pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
@@ -301,7 +301,7 @@
span.pre {
white-space: pre }
-span.problematic {
+span.problematic, pre.problematic {
color: red }
span.section-subtitle {
@@ -369,7 +369,7 @@ Survey Partner Representative
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:32924103c7ee99139f60cb1d89ae02a2085ced8d944a379da91f5d3a2426cf11
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
![Try me on Runboat](https://img.shields.io/badge/runboat-Try%20me-875A7B.png)
+
![Try me on Runboat](https://img.shields.io/badge/runboat-Try%20me-875A7B.png)
Do surveys on behalf of others.
Table of contents
@@ -402,7 +402,7 @@
- Go to Surveys > Surveys and choose the survey you want to
configure.
-- Go to the Options tab and in the Candidates section set the
+
- Go to the Options tab and in the Participants section set the
Allow Partner Representing option on.
@@ -420,7 +420,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
-feedback.
+feedback.
Do not contact contributors directly about support or help with technical issues.
@@ -443,13 +443,15 @@
This module is maintained by the OCA.
-
![Odoo Community Association](https://odoo-community.org/logo.png)
+
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
Current maintainer:
![chienandalu](https://github.com/chienandalu.png?size=40px)
-
This module is part of the OCA/survey project on GitHub.
+
This module is part of the OCA/survey project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/survey_partner_representative/static/tests/survey_representative_tour.esm.js b/survey_partner_representative/static/tests/survey_representative_tour.esm.js
index c11d34f9..ac3751aa 100644
--- a/survey_partner_representative/static/tests/survey_representative_tour.esm.js
+++ b/survey_partner_representative/static/tests/survey_representative_tour.esm.js
@@ -1,28 +1,33 @@
/** @odoo-module */
-import tour from "web_tour.tour";
+import {registry} from "@web/core/registry";
-tour.register(
- "test_survey_representative",
- {
- test: true,
- url: "/survey/start/80e5f1e2-1a9d-4c51-8e23-4abc7534",
- },
- [
+registry.category("web_tour.tours").add("test_survey_representative", {
+ test: true,
+ url: "/survey/start/80e5f1e2-1a9d-4c51-8e23-4abc7534",
+ steps: () => [
{
content: "Click on Start",
- trigger: "button.btn:contains('Start Survey')",
+ trigger: 'button.btn:contains("Start")',
},
{
content: "Name",
trigger: "div.js_question-wrapper:contains('Name') input",
run: "text Mr. Odoo",
},
+ {
+ content: "Submit and go to Next Page",
+ trigger: 'button[value="next"]',
+ },
{
content: "Email",
trigger: "div.js_question-wrapper:contains('Email') input",
run: "text mrodoo@test.com",
},
+ {
+ content: "Submit and go to Next Page",
+ trigger: 'button[value="next"]',
+ },
{
content: "What meal?",
trigger:
@@ -41,5 +46,5 @@ tour.register(
content: "Thank you",
trigger: "h1:contains('Thank you!')",
},
- ]
-);
+ ],
+});
diff --git a/survey_partner_representative/views/survey_survey_views.xml b/survey_partner_representative/views/survey_survey_views.xml
index e71887fe..60e01b9b 100644
--- a/survey_partner_representative/views/survey_survey_views.xml
+++ b/survey_partner_representative/views/survey_survey_views.xml
@@ -2,9 +2,9 @@
survey.survey
-
+
-
+
diff --git a/survey_partner_representative/views/survey_user_input_views.xml b/survey_partner_representative/views/survey_user_input_views.xml
index 145961f0..80872a42 100644
--- a/survey_partner_representative/views/survey_user_input_views.xml
+++ b/survey_partner_representative/views/survey_user_input_views.xml
@@ -7,7 +7,7 @@
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 00000000..66bc2cba
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1 @@
+odoo_test_helper