[IMP] survey_event_generation: add event selection in surveys depending on event stage boolean

This commit is contained in:
clementthomas
2023-10-03 12:13:03 +02:00
parent 96d2055903
commit cb474958d5
8 changed files with 102 additions and 13 deletions

View File

@@ -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': {

View File

@@ -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

View File

@@ -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 "<option>Please select...</option>"
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"

View File

@@ -1,4 +1,7 @@
from . import survey_question
from . import survey_user_input
from . import survey_user_input_line
from . import survey_survey
from . import survey_survey
from . import event_stage
from . import event_event
from . import product_product

View File

@@ -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)])

View File

@@ -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')

View File

@@ -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)

View File

@@ -0,0 +1,27 @@
<?xml version="1.0"?>
<odoo>
<data>
<record id="event_stage_view_form_survey_event_registration_generation" model="ir.ui.view">
<field name="name">event.stage.view.form.survey.event.registration.generation</field>
<field name="model">event.stage</field>
<field name="inherit_id" ref="event.event_stage_view_form" />
<field name="arch" type="xml">
<field name="pipe_end" position="after">
<field name="visible_in_survey" />
</field>
</field>
</record>
<record id="event_stage_view_tree_survey_event_registration_generation" model="ir.ui.view">
<field name="name">event.stage.view.tree.survey.event.registration.generation</field>
<field name="model">event.stage</field>
<field name="inherit_id" ref="event.event_stage_view_tree" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="visible_in_survey" />
</field>
</field>
</record>
</data>
</odoo>