diff --git a/survey_event_registration_generation/__manifest__.py b/survey_event_registration_generation/__manifest__.py index 217ec42..b39fc28 100644 --- a/survey_event_registration_generation/__manifest__.py +++ b/survey_event_registration_generation/__manifest__.py @@ -14,6 +14,7 @@ 'views/survey_question_views.xml', 'views/survey_survey_views.xml', 'views/survey_templates.xml', + 'views/event_stage_views.xml', 'security/ir.model.access.csv', ], 'assets': { diff --git a/survey_event_registration_generation/controllers/main.py b/survey_event_registration_generation/controllers/main.py index 21e6197..ab45bd6 100644 --- a/survey_event_registration_generation/controllers/main.py +++ b/survey_event_registration_generation/controllers/main.py @@ -9,25 +9,22 @@ class Survey(main.Survey): @http.route(['/survey_event/get_events_from_product'], type='json', auth="public", methods=['POST']) def get_events_from_product(self, product_id, **kw): - tickets = request.env['event.event.ticket'].sudo().search([('product_id','=',product_id)]) - events = set([ticket.event_id for ticket in tickets]) + if not product_id: + return [] + events = request.env['event.event'].sudo().get_events_visible_in_survey(product_id) return [{'id':event.id,'name':event.name} for event in events] def _prepare_survey_data(self, survey_sudo, answer_sudo, **post): result = super(Survey, self)._prepare_survey_data(survey_sudo, answer_sudo, **post) - result['event_products'] = request.env['product.product'].sudo().search([('detailed_type','=','event')]) + result['event_products'] = request.env['product.product'].sudo().get_event_products_visible_in_survey() next_event_question = self._get_next_event_question(answer_sudo) if next_event_question: - event_product = None + event_product_id = None if next_event_question.event_product_question_id: - event_product = self._get_answer_event_product(next_event_question.event_product_question_id, answer_sudo) - if event_product: - event_tickets = request.env['event.event.ticket'].sudo().search([('product_id','=',event_product.id)]) - result['events'] = event_tickets.event_id - else: - result['events'] = request.env['event.event'].sudo().search([]) + event_product_id = self._get_answer_event_product(next_event_question.event_product_question_id, answer_sudo).id + result['events'] = request.env['event.event'].sudo().get_events_visible_in_survey(event_product_id) return result diff --git a/survey_event_registration_generation/i18n/fr.po b/survey_event_registration_generation/i18n/fr.po index fb8c9b0..250ed3a 100644 --- a/survey_event_registration_generation/i18n/fr.po +++ b/survey_event_registration_generation/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-20 07:01+0000\n" -"PO-Revision-Date: 2023-09-20 07:01+0000\n" +"POT-Creation-Date: 2023-10-03 10:07+0000\n" +"PO-Revision-Date: 2023-10-03 10:07+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,12 +15,19 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: survey_event_registration_generation +#: model_terms:ir.ui.view,arch_db:survey_event_registration_generation.question_event +#: model_terms:ir.ui.view,arch_db:survey_event_registration_generation.question_event_product +msgid "" +msgstr "" + #. module: survey_event_registration_generation #: model:ir.model.fields,field_description:survey_event_registration_generation.field_survey_user_input_line__answer_type msgid "Answer Type" msgstr "Type de réponse" #. module: survey_event_registration_generation +#: model:ir.model,name:survey_event_registration_generation.model_event_event #: model:ir.model.fields,field_description:survey_event_registration_generation.field_survey_user_input_line__value_event #: model:ir.model.fields.selection,name:survey_event_registration_generation.selection__survey_question__question_type__event #: model:ir.model.fields.selection,name:survey_event_registration_generation.selection__survey_user_input_line__answer_type__event @@ -32,6 +39,11 @@ msgstr "Événement" msgid "Event Registration Allowed Field" msgstr "Champs autorisés des inscrptions aux événements" +#. module: survey_event_registration_generation +#: model:ir.model,name:survey_event_registration_generation.model_event_stage +msgid "Event Stage" +msgstr "Étape de session de formation" + #. module: survey_event_registration_generation #: model:ir.model.fields,field_description:survey_event_registration_generation.field_survey_user_input_line__value_event_product #: model:ir.model.fields.selection,name:survey_event_registration_generation.selection__survey_question__question_type__event_product @@ -85,6 +97,18 @@ msgstr "" "Si vous indiquez la question du produit d'événement, seuls les événements " "correspondants seront proposés" +#. module: survey_event_registration_generation +#. odoo-javascript +#: code:addons/survey_event_registration_generation/static/src/js/survey_form.js:0 +#, python-format +msgid "Please select..." +msgstr "" + +#. module: survey_event_registration_generation +#: model:ir.model,name:survey_event_registration_generation.model_product_product +msgid "Product Variant" +msgstr "Variante de produit" + #. module: survey_event_registration_generation #: model:ir.model.fields,field_description:survey_event_registration_generation.field_survey_question__question_type msgid "Question Type" @@ -122,3 +146,8 @@ msgstr "Entrée utilisateur du questionnaire" #: model:ir.model,name:survey_event_registration_generation.model_survey_user_input_line msgid "Survey User Input Line" msgstr "Ligne d'entrée pour l'utilisateur du questionnaire" + +#. module: survey_event_registration_generation +#: model:ir.model.fields,field_description:survey_event_registration_generation.field_event_stage__visible_in_survey +msgid "Visible in surveys" +msgstr "Visible dans les sondages" diff --git a/survey_event_registration_generation/models/__init__.py b/survey_event_registration_generation/models/__init__.py index 12bd654..a27213e 100644 --- a/survey_event_registration_generation/models/__init__.py +++ b/survey_event_registration_generation/models/__init__.py @@ -1,4 +1,7 @@ from . import survey_question from . import survey_user_input from . import survey_user_input_line -from . import survey_survey \ No newline at end of file +from . import survey_survey +from . import event_stage +from . import event_event +from . import product_product \ No newline at end of file diff --git a/survey_event_registration_generation/models/event_event.py b/survey_event_registration_generation/models/event_event.py new file mode 100644 index 0000000..a17c27d --- /dev/null +++ b/survey_event_registration_generation/models/event_event.py @@ -0,0 +1,12 @@ +from odoo import models, fields, api + + +class EventEvent(models.Model): + _inherit = 'event.event' + + def get_events_visible_in_survey(self, product_id=False): + if product_id: + event_tickets = self.env['event.event.ticket'].search([('product_id','=',product_id)]) + return self.env['event.event'].search([('stage_id.visible_in_survey','=',True),('event_ticket_ids','in',event_tickets.id)]) + return self.env['event.event'].search([('stage_id.visible_in_survey','=',True)]) + \ No newline at end of file diff --git a/survey_event_registration_generation/models/event_stage.py b/survey_event_registration_generation/models/event_stage.py new file mode 100644 index 0000000..b5dae9a --- /dev/null +++ b/survey_event_registration_generation/models/event_stage.py @@ -0,0 +1,7 @@ +from odoo import models, fields, api + + +class EventStage(models.Model): + _inherit = 'event.stage' + + visible_in_survey = fields.Boolean('Visible in surveys') \ No newline at end of file diff --git a/survey_event_registration_generation/models/product_product.py b/survey_event_registration_generation/models/product_product.py new file mode 100644 index 0000000..0d6510d --- /dev/null +++ b/survey_event_registration_generation/models/product_product.py @@ -0,0 +1,13 @@ +from odoo import models, fields, api + + +class ProductProduct(models.Model): + _inherit = 'product.product' + + def get_event_products_visible_in_survey(self): + events = self.env['event.event'].get_events_visible_in_survey() + products = set() + for event in events: + for ticket in event.event_ticket_ids: + products.add(ticket.product_id) + return list(products) \ No newline at end of file diff --git a/survey_event_registration_generation/views/event_stage_views.xml b/survey_event_registration_generation/views/event_stage_views.xml new file mode 100644 index 0000000..f416b57 --- /dev/null +++ b/survey_event_registration_generation/views/event_stage_views.xml @@ -0,0 +1,27 @@ + + + + + event.stage.view.form.survey.event.registration.generation + event.stage + + + + + + + + + + event.stage.view.tree.survey.event.registration.generation + event.stage + + + + + + + + + +