diff --git a/setup/website_event_questions_multiple/odoo/addons/website_event_questions_multiple b/setup/website_event_questions_multiple/odoo/addons/website_event_questions_multiple new file mode 120000 index 000000000..6755578f9 --- /dev/null +++ b/setup/website_event_questions_multiple/odoo/addons/website_event_questions_multiple @@ -0,0 +1 @@ +../../../../website_event_questions_multiple \ No newline at end of file diff --git a/setup/website_event_questions_multiple/setup.py b/setup/website_event_questions_multiple/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/website_event_questions_multiple/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/website_event_questions_multiple/README.rst b/website_event_questions_multiple/README.rst new file mode 100644 index 000000000..ec55dea30 --- /dev/null +++ b/website_event_questions_multiple/README.rst @@ -0,0 +1,88 @@ +=================================== +Questions on Events - Type multiple +=================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:de10ccad1e53385cb3c9aa56bc533e4cd053db148e2d5fec32a0a0e04ac0e690 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |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%2Fevent-lightgray.png?logo=github + :target: https://github.com/OCA/event/tree/16.0/website_event_questions_multiple + :alt: OCA/event +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/event-16-0/event-16-0-website_event_questions_multiple + :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/event&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to add new question type : Selection multiple which allows +attendees to select multiple answers to a question. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +On an event, when creating a new question, you can select new type : Selection multiple + +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 +~~~~~~~ + +* Le Filament + +Contributors +~~~~~~~~~~~~ + +* Juliana Poudou +* Benjamin Rivier + +Other credits +~~~~~~~~~~~~~ + +* Le Filament + +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/event `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/website_event_questions_multiple/__init__.py b/website_event_questions_multiple/__init__.py new file mode 100644 index 000000000..f7209b171 --- /dev/null +++ b/website_event_questions_multiple/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import controllers diff --git a/website_event_questions_multiple/__manifest__.py b/website_event_questions_multiple/__manifest__.py new file mode 100644 index 000000000..33a36fb71 --- /dev/null +++ b/website_event_questions_multiple/__manifest__.py @@ -0,0 +1,18 @@ +{ + "name": "Questions on Events - Type multiple", + "version": "16.0.1.0.0", + "category": "Marketing", + "website": "https://github.com/OCA/event", + "development_status": "Production/Stable", + "author": "Le Filament, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "depends": ["website_event_questions"], + "data": [ + "templates/event_template.xml", + "views/event_questions_views.xml", + "views/event_registration_views.xml", + ], + "installable": True, + "auto_install": False, +} diff --git a/website_event_questions_multiple/controllers/__init__.py b/website_event_questions_multiple/controllers/__init__.py new file mode 100644 index 000000000..12a7e529b --- /dev/null +++ b/website_event_questions_multiple/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/website_event_questions_multiple/controllers/main.py b/website_event_questions_multiple/controllers/main.py new file mode 100644 index 000000000..09200377d --- /dev/null +++ b/website_event_questions_multiple/controllers/main.py @@ -0,0 +1,44 @@ +# Copyright 2023 Le Filament (https://le-filament.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo.http import request + +from odoo.addons.website_event_questions.controllers.main import WebsiteEvent + + +class WebsiteEvent(WebsiteEvent): + def _process_attendees_form(self, event, form_details): + """Process data posted from the attendee details form. + Extracts question answers: + - For questions of type 'multiple_choice', extracting the suggested answer id""" + registrations = super(WebsiteEvent, self)._process_attendees_form( + event, form_details + ) + + general_answer_ids = [] + for key, _value in form_details.items(): + if "question_multi_answer" in key: + dummy, registration_index, question_answer = key.split("-") + question_id, answer_id = question_answer.split("_") + question_sudo = request.env["event.question"].browse(int(question_id)) + answer_sudo = request.env["event.question.answer"].browse( + int(answer_id) + ) + answer_values = None + if question_sudo.question_type == "multiple_choice": + answer_values = { + "question_id": int(question_id), + "value_text_box": answer_sudo.name, + } + + if answer_values and not int(registration_index): + general_answer_ids.append((0, 0, answer_values)) + elif answer_values: + registrations[int(registration_index) - 1][ + "registration_answer_ids" + ].append((0, 0, answer_values)) + + for registration in registrations: + registration["registration_answer_ids"].extend(general_answer_ids) + + return registrations diff --git a/website_event_questions_multiple/models/__init__.py b/website_event_questions_multiple/models/__init__.py new file mode 100644 index 000000000..e58037731 --- /dev/null +++ b/website_event_questions_multiple/models/__init__.py @@ -0,0 +1,4 @@ +# © 2023 Le Filament () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import event_question diff --git a/website_event_questions_multiple/models/event_question.py b/website_event_questions_multiple/models/event_question.py new file mode 100644 index 000000000..be9a79289 --- /dev/null +++ b/website_event_questions_multiple/models/event_question.py @@ -0,0 +1,13 @@ +# Copyright 2023 Le Filament (https://le-filament.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo import fields, models + + +class EventQuestion(models.Model): + _inherit = "event.question" + + question_type = fields.Selection( + selection_add=[("multiple_choice", "Multiple Selection")], + ondelete={"multiple_choice": "cascade"}, + ) diff --git a/website_event_questions_multiple/readme/CONFIGURE.rst b/website_event_questions_multiple/readme/CONFIGURE.rst new file mode 100644 index 000000000..4c76ef6ad --- /dev/null +++ b/website_event_questions_multiple/readme/CONFIGURE.rst @@ -0,0 +1 @@ +On an event, when creating a new question, you can select new type : Multiple Selection diff --git a/website_event_questions_multiple/readme/CONTRIBUTORS.rst b/website_event_questions_multiple/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..f6f2d20cd --- /dev/null +++ b/website_event_questions_multiple/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Juliana Poudou +* Benjamin Rivier diff --git a/website_event_questions_multiple/readme/CREDITS.rst b/website_event_questions_multiple/readme/CREDITS.rst new file mode 100644 index 000000000..286b299c8 --- /dev/null +++ b/website_event_questions_multiple/readme/CREDITS.rst @@ -0,0 +1 @@ +* Le Filament diff --git a/website_event_questions_multiple/readme/DESCRIPTION.rst b/website_event_questions_multiple/readme/DESCRIPTION.rst new file mode 100644 index 000000000..529103e4b --- /dev/null +++ b/website_event_questions_multiple/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows to add new question type : Multiple Selection which allows +attendees to select multiple answers to a question. diff --git a/website_event_questions_multiple/static/description/icon.png b/website_event_questions_multiple/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/website_event_questions_multiple/static/description/icon.png differ diff --git a/website_event_questions_multiple/static/description/index.html b/website_event_questions_multiple/static/description/index.html new file mode 100644 index 000000000..07cc77b75 --- /dev/null +++ b/website_event_questions_multiple/static/description/index.html @@ -0,0 +1,437 @@ + + + + + +Questions on Events - Type multiple + + + +
+

Questions on Events - Type multiple

+ + +

Production/Stable License: AGPL-3 OCA/event Translate me on Weblate Try me on Runboat

+

This module allows to add new question type : Selection multiple which allows +attendees to select multiple answers to a question.

+

Table of contents

+ +
+

Configuration

+

On an event, when creating a new question, you can select new type : Selection multiple

+
+
+

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

+
    +
  • Le Filament
  • +
+
+
+

Contributors

+
    +
  • Juliana Poudou <JulianaPoudou>
  • +
  • Benjamin Rivier <benj-filament>
  • +
+
+ +
+

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/event project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/website_event_questions_multiple/templates/event_template.xml b/website_event_questions_multiple/templates/event_template.xml new file mode 100644 index 000000000..30bb50248 --- /dev/null +++ b/website_event_questions_multiple/templates/event_template.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/website_event_questions_multiple/views/event_questions_views.xml b/website_event_questions_multiple/views/event_questions_views.xml new file mode 100644 index 000000000..95ffe56a8 --- /dev/null +++ b/website_event_questions_multiple/views/event_questions_views.xml @@ -0,0 +1,36 @@ + + + + + event.question.view.form.multiple + event.question + + + + {'invisible': ['&', ('question_type', '!=', 'simple_choice'), ('question_type', '!=', 'multiple_choice')]} + + + + + + event.event.view.form.inherit.multiple + event.event + + + + {'invisible': ['&', ('question_type', '!=', 'simple_choice'), ('question_type', '!=', 'multiple_choice')]} + + + + diff --git a/website_event_questions_multiple/views/event_registration_views.xml b/website_event_questions_multiple/views/event_registration_views.xml new file mode 100644 index 000000000..4b86fae54 --- /dev/null +++ b/website_event_questions_multiple/views/event_registration_views.xml @@ -0,0 +1,29 @@ + + + + + + event.registration.view.form.inherit.question + event.registration + + + + {} + + + {} + + + + +