From 6a9d9f495c27a65c1f02f3148bb998d39fd88a9e Mon Sep 17 00:00:00 2001 From: Andreu Orensanz Date: Thu, 2 Apr 2026 12:56:09 +0200 Subject: [PATCH] [ADD]survey_question_group --- .../odoo/addons/survey_question_group | 1 + setup/survey_question_group/setup.py | 6 + survey_question_group/README.rst | 105 ++++ survey_question_group/__init__.py | 5 + survey_question_group/__manifest__.py | 24 + survey_question_group/i18n/ca_ES.po | 136 ++++++ survey_question_group/i18n/es.po | 137 ++++++ survey_question_group/models/__init__.py | 6 + .../models/survey_question.py | 16 + .../models/survey_question_group.py | 17 + survey_question_group/models/survey_survey.py | 28 ++ survey_question_group/readme/CONTRIBUTORS.rst | 3 + survey_question_group/readme/DESCRIPTION.rst | 7 + survey_question_group/readme/USAGE.rst | 13 + .../security/ir.model.access.csv | 4 + .../static/description/index.html | 454 ++++++++++++++++++ .../views/survey_question_group_views.xml | 52 ++ .../views/survey_survey_views.xml | 27 ++ survey_question_group/wizards/__init__.py | 4 + .../survey_add_question_group_wizard.py | 36 ++ ...survey_add_question_group_wizard_views.xml | 26 + 21 files changed, 1107 insertions(+) create mode 120000 setup/survey_question_group/odoo/addons/survey_question_group create mode 100644 setup/survey_question_group/setup.py create mode 100644 survey_question_group/README.rst create mode 100644 survey_question_group/__init__.py create mode 100644 survey_question_group/__manifest__.py create mode 100644 survey_question_group/i18n/ca_ES.po create mode 100644 survey_question_group/i18n/es.po create mode 100644 survey_question_group/models/__init__.py create mode 100644 survey_question_group/models/survey_question.py create mode 100644 survey_question_group/models/survey_question_group.py create mode 100644 survey_question_group/models/survey_survey.py create mode 100644 survey_question_group/readme/CONTRIBUTORS.rst create mode 100644 survey_question_group/readme/DESCRIPTION.rst create mode 100644 survey_question_group/readme/USAGE.rst create mode 100644 survey_question_group/security/ir.model.access.csv create mode 100644 survey_question_group/static/description/index.html create mode 100644 survey_question_group/views/survey_question_group_views.xml create mode 100644 survey_question_group/views/survey_survey_views.xml create mode 100644 survey_question_group/wizards/__init__.py create mode 100644 survey_question_group/wizards/survey_add_question_group_wizard.py create mode 100644 survey_question_group/wizards/survey_add_question_group_wizard_views.xml diff --git a/setup/survey_question_group/odoo/addons/survey_question_group b/setup/survey_question_group/odoo/addons/survey_question_group new file mode 120000 index 00000000..40588d7a --- /dev/null +++ b/setup/survey_question_group/odoo/addons/survey_question_group @@ -0,0 +1 @@ +../../../../survey_question_group \ No newline at end of file diff --git a/setup/survey_question_group/setup.py b/setup/survey_question_group/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/survey_question_group/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/survey_question_group/README.rst b/survey_question_group/README.rst new file mode 100644 index 00000000..0296b731 --- /dev/null +++ b/survey_question_group/README.rst @@ -0,0 +1,105 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +===================== +Survey Question Group +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:11f944f8c292b472cbf0a5388b6be8d6688e2d4b83d310f61141323d6b308d2b + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-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/16.0/survey_question_group + :alt: OCA/survey +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/survey-16-0/survey-16-0-survey_question_group + :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=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Defines a **Question Group** model (``survey.question.group``) that holds a +set of reusable template questions not tied to any specific survey. Groups +can then be added to any survey via a wizard, which copies the template +questions into the survey. + +This is useful for standardising sections of questions across multiple +surveys, for example a recurring satisfaction block or a safety checklist. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Creating question groups: + +1. Go to **Surveys > Questions > Question Groups**. +2. Create a group and add template questions to it. + + +Adding a group to a survey: + +1. Open any survey form. +2. Click the **Add Question Group** link below the questions list. +3. Select the group in the wizard and click **Add Questions**. +4. The template questions are copied into the survey. You can then reorder + or customise them as needed. + +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 +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* `ForgeFlow `_: + + * Andreu Orensanz + +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. + +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_question_group/__init__.py b/survey_question_group/__init__.py new file mode 100644 index 00000000..ab1aa635 --- /dev/null +++ b/survey_question_group/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +from . import models +from . import wizards diff --git a/survey_question_group/__manifest__.py b/survey_question_group/__manifest__.py new file mode 100644 index 00000000..fadcbca4 --- /dev/null +++ b/survey_question_group/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +{ + "name": "Survey Question Group", + "version": "16.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/survey", + "license": "AGPL-3", + "category": "Marketing/Surveys", + "summary": "Group reusable template questions and add them to surveys", + "depends": [ + "survey", + ], + "data": [ + "security/ir.model.access.csv", + "wizards/survey_add_question_group_wizard_views.xml", + "views/survey_question_group_views.xml", + "views/survey_survey_views.xml", + ], + "installable": True, + "application": False, + "auto_install": False, +} diff --git a/survey_question_group/i18n/ca_ES.po b/survey_question_group/i18n/ca_ES.po new file mode 100644 index 00000000..3dc3cd48 --- /dev/null +++ b/survey_question_group/i18n/ca_ES.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * survey_question_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-10 08:08+0000\n" +"PO-Revision-Date: 2026-04-10 08:08+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: survey_question_group +#. odoo-python +#: code:addons/survey_question_group/models/survey_survey.py:0 +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_survey_view_form_inherit +#, python-format +msgid "Add Question Group" +msgstr "Afegeix un grup de preguntes" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_add_question_group_wizard +msgid "Add Question Group to Survey" +msgstr "Afegeix un grup de preguntes a l'enquesta" + +#. module: survey_question_group +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +msgid "Add Questions" +msgstr "Afegeix preguntes" + +#. module: survey_question_group +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +msgid "Cancel" +msgstr "Cancel·la" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__create_uid +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__create_uid +msgid "Created by" +msgstr "Creat per" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__create_date +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__create_date +msgid "Created on" +msgstr "Creat el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__display_name +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__display_name +msgid "Display Name" +msgstr "Nom" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__id +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__id +msgid "ID" +msgstr "ID" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard____last_update +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group____last_update +msgid "Last Modified on" +msgstr "Modificat el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__write_uid +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__write_uid +msgid "Last Updated by" +msgstr "Modificat per" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__write_date +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__write_date +msgid "Last Updated on" +msgstr "Modificat el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__name +msgid "Name" +msgstr "Nom" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__group_id +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question__group_id +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_question_group_view_form +msgid "Question Group" +msgstr "Grup de preguntes" + +#. module: survey_question_group +#: model:ir.actions.act_window,name:survey_question_group.survey_question_group_action +#: model:ir.model.fields,field_description:survey_question_group.field_survey_survey__question_group_ids +#: model:ir.ui.menu,name:survey_question_group.survey_question_group_menu +msgid "Question Groups" +msgstr "Grups de preguntes" + +#. module: survey_question_group +#: model:ir.model.fields,help:survey_question_group.field_survey_survey__question_group_ids +msgid "Question groups associated with this survey." +msgstr "" +"Grups de preguntes per a expandir per a cadascun dels pacients quan s'ha " +"creada a partir d'una plantilla." + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__question_ids +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_question_group_view_form +msgid "Questions" +msgstr "Preguntes" + +#. module: survey_question_group +#: model:ir.model.fields,help:survey_question_group.field_survey_question__group_id +msgid "Reusable group of template questions this question belongs to." +msgstr "" +"Grup de preguntes que es repetirà per a cada pacient associat a l'enquesta." + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_survey +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__survey_id +msgid "Survey" +msgstr "Enquesta" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_question +msgid "Survey Question" +msgstr "Pregunta de l'enquesta" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_question_group +msgid "Survey Question Group" +msgstr "Grup de preguntes de l'enquesta" diff --git a/survey_question_group/i18n/es.po b/survey_question_group/i18n/es.po new file mode 100644 index 00000000..d7ce3615 --- /dev/null +++ b/survey_question_group/i18n/es.po @@ -0,0 +1,137 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * survey_question_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-04-10 08:11+0000\n" +"PO-Revision-Date: 2026-04-10 08:11+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: survey_question_group +#. odoo-python +#: code:addons/survey_question_group/models/survey_survey.py:0 +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_survey_view_form_inherit +#, python-format +msgid "Add Question Group" +msgstr "Añade un grupo de preguntas" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_add_question_group_wizard +msgid "Add Question Group to Survey" +msgstr "Añade un grupo de preguntas a la encuesta" + +#. module: survey_question_group +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +msgid "Add Questions" +msgstr "Añade preguntas" + +#. module: survey_question_group +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_add_question_group_wizard_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__create_uid +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__create_uid +msgid "Created by" +msgstr "Creada por" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__create_date +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__create_date +msgid "Created on" +msgstr "Creada el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__display_name +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__display_name +msgid "Display Name" +msgstr "Nombre" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__id +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__id +msgid "ID" +msgstr "ID" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard____last_update +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group____last_update +msgid "Last Modified on" +msgstr "Modificada el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__write_uid +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__write_uid +msgid "Last Updated by" +msgstr "Modificada por" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__write_date +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__write_date +msgid "Last Updated on" +msgstr "Modificada el" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__name +msgid "Name" +msgstr "Nombre" + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__group_id +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question__group_id +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_question_group_view_form +msgid "Question Group" +msgstr "Grupo de preguntas" + +#. module: survey_question_group +#: model:ir.actions.act_window,name:survey_question_group.survey_question_group_action +#: model:ir.model.fields,field_description:survey_question_group.field_survey_survey__question_group_ids +#: model:ir.ui.menu,name:survey_question_group.survey_question_group_menu +msgid "Question Groups" +msgstr "Grupos de preguntas" + +#. module: survey_question_group +#: model:ir.model.fields,help:survey_question_group.field_survey_survey__question_group_ids +msgid "Question groups associated with this survey." +msgstr "" +"Grupos de preguntas para expandir por paciente cuando la encuesta se crea " +"desde una plantilla." + +#. module: survey_question_group +#: model:ir.model.fields,field_description:survey_question_group.field_survey_question_group__question_ids +#: model_terms:ir.ui.view,arch_db:survey_question_group.survey_question_group_view_form +msgid "Questions" +msgstr "Preguntas" + +#. module: survey_question_group +#: model:ir.model.fields,help:survey_question_group.field_survey_question__group_id +msgid "Reusable group of template questions this question belongs to." +msgstr "" +"Grupo de preguntas que se repetirá para cada paciente asociado a la " +"encuesta." + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_survey +#: model:ir.model.fields,field_description:survey_question_group.field_survey_add_question_group_wizard__survey_id +msgid "Survey" +msgstr "Encuesta" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_question +msgid "Survey Question" +msgstr "Pregunta de la encuesta" + +#. module: survey_question_group +#: model:ir.model,name:survey_question_group.model_survey_question_group +msgid "Survey Question Group" +msgstr "Grupo de preguntas de la encuesta" diff --git a/survey_question_group/models/__init__.py b/survey_question_group/models/__init__.py new file mode 100644 index 00000000..6546840e --- /dev/null +++ b/survey_question_group/models/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +from . import survey_question +from . import survey_question_group +from . import survey_survey diff --git a/survey_question_group/models/survey_question.py b/survey_question_group/models/survey_question.py new file mode 100644 index 00000000..bd871b73 --- /dev/null +++ b/survey_question_group/models/survey_question.py @@ -0,0 +1,16 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class SurveyQuestion(models.Model): + _inherit = "survey.question" + + group_id = fields.Many2one( + "survey.question.group", + string="Question Group", + ondelete="set null", + copy=False, + help="Reusable group of template questions this question belongs to.", + ) diff --git a/survey_question_group/models/survey_question_group.py b/survey_question_group/models/survey_question_group.py new file mode 100644 index 00000000..df3a24d9 --- /dev/null +++ b/survey_question_group/models/survey_question_group.py @@ -0,0 +1,17 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class SurveyQuestionGroup(models.Model): + _name = "survey.question.group" + _description = "Survey Question Group" + + name = fields.Char(required=True, translate=True) + question_ids = fields.One2many( + "survey.question", + "group_id", + string="Questions", + domain=[("survey_id", "=", False)], + ) diff --git a/survey_question_group/models/survey_survey.py b/survey_question_group/models/survey_survey.py new file mode 100644 index 00000000..2dc1cb79 --- /dev/null +++ b/survey_question_group/models/survey_survey.py @@ -0,0 +1,28 @@ +# Copyright 2026 ForgeFlow S.L. (https://www.forgeflow.com) +# Part of ForgeFlow. See LICENSE file for full copyright and licensing details. + +from odoo import _, fields, models + + +class SurveySurvey(models.Model): + _inherit = "survey.survey" + + question_group_ids = fields.Many2many( + "survey.question.group", + string="Question Groups", + help="Question groups associated with this survey.", + ) + + def action_add_question_group(self): + """Open wizard to select a question group and add its questions.""" + self.ensure_one() + return { + "name": _("Add Question Group"), + "type": "ir.actions.act_window", + "res_model": "survey.add.question.group.wizard", + "view_mode": "form", + "target": "new", + "context": { + "default_survey_id": self.id, + }, + } diff --git a/survey_question_group/readme/CONTRIBUTORS.rst b/survey_question_group/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..e19dd4ff --- /dev/null +++ b/survey_question_group/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `ForgeFlow `_: + + * Andreu Orensanz diff --git a/survey_question_group/readme/DESCRIPTION.rst b/survey_question_group/readme/DESCRIPTION.rst new file mode 100644 index 00000000..5e91dc60 --- /dev/null +++ b/survey_question_group/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +Defines a **Question Group** model (``survey.question.group``) that holds a +set of reusable template questions not tied to any specific survey. Groups +can then be added to any survey via a wizard, which copies the template +questions into the survey. + +This is useful for standardising sections of questions across multiple +surveys, for example a recurring satisfaction block or a safety checklist. diff --git a/survey_question_group/readme/USAGE.rst b/survey_question_group/readme/USAGE.rst new file mode 100644 index 00000000..a34d268a --- /dev/null +++ b/survey_question_group/readme/USAGE.rst @@ -0,0 +1,13 @@ +Creating question groups: + +1. Go to **Surveys > Questions > Question Groups**. +2. Create a group and add template questions to it. + + +Adding a group to a survey: + +1. Open any survey form. +2. Click the **Add Question Group** link below the questions list. +3. Select the group in the wizard and click **Add Questions**. +4. The template questions are copied into the survey. You can then reorder + or customise them as needed. diff --git a/survey_question_group/security/ir.model.access.csv b/survey_question_group/security/ir.model.access.csv new file mode 100644 index 00000000..533d8acb --- /dev/null +++ b/survey_question_group/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_survey_question_group_user,survey.question.group user,model_survey_question_group,survey.group_survey_user,1,1,1,1 +access_survey_question_group_manager,survey.question.group manager,model_survey_question_group,survey.group_survey_manager,1,1,1,1 +access_survey_add_question_group_wizard,survey.add.question.group.wizard,model_survey_add_question_group_wizard,survey.group_survey_user,1,1,1,1 diff --git a/survey_question_group/static/description/index.html b/survey_question_group/static/description/index.html new file mode 100644 index 00000000..503cfaf9 --- /dev/null +++ b/survey_question_group/static/description/index.html @@ -0,0 +1,454 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Survey Question Group

+ +

Beta License: AGPL-3 OCA/survey Translate me on Weblate Try me on Runboat

+

Defines a Question Group model (survey.question.group) that holds a +set of reusable template questions not tied to any specific survey. Groups +can then be added to any survey via a wizard, which copies the template +questions into the survey.

+

This is useful for standardising sections of questions across multiple +surveys, for example a recurring satisfaction block or a safety checklist.

+

Table of contents

+ +
+

Usage

+

Creating question groups:

+
    +
  1. Go to Surveys > Questions > Question Groups.
  2. +
  3. Create a group and add template questions to it.
  4. +
+

Adding a group to a survey:

+
    +
  1. Open any survey form.
  2. +
  3. Click the Add Question Group link below the questions list.
  4. +
  5. Select the group in the wizard and click Add Questions.
  6. +
  7. The template questions are copied into the survey. You can then reorder +or customise them as needed.
  8. +
+
+
+

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

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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.

+

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_question_group/views/survey_question_group_views.xml b/survey_question_group/views/survey_question_group_views.xml new file mode 100644 index 00000000..e63e3418 --- /dev/null +++ b/survey_question_group/views/survey_question_group_views.xml @@ -0,0 +1,52 @@ + + + + + survey.question.group.form + survey.question.group + +
+ + + + + + + + + + + + + + + +
+
+
+ + + survey.question.group.tree + survey.question.group + + + + + + + + + Question Groups + survey.question.group + tree,form + + + + +
diff --git a/survey_question_group/views/survey_survey_views.xml b/survey_question_group/views/survey_survey_views.xml new file mode 100644 index 00000000..942240ab --- /dev/null +++ b/survey_question_group/views/survey_survey_views.xml @@ -0,0 +1,27 @@ + + + + + survey.survey.form - survey_question_group + survey.survey + + + + + + +