diff --git a/survey_event_speaker_generation/__init__.py b/survey_event_speaker_generation/__init__.py new file mode 100644 index 0000000..9a7e03e --- /dev/null +++ b/survey_event_speaker_generation/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/survey_event_speaker_generation/__manifest__.py b/survey_event_speaker_generation/__manifest__.py new file mode 100644 index 0000000..ae11061 --- /dev/null +++ b/survey_event_speaker_generation/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2016-2020 Akretion France () +# @author: Alexis de Lattre +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +{ + "name": "Survey event speaker generation", + "version": "16.0.0.0.0", + "license": "AGPL-3", + "author": "Elabore", + "website": "https://www.elabore.coop", + "category": "", + "depends": ["survey", "event_speaker"], + "data": [ + 'views/mail_templates_chatter.xml', + 'views/survey_survey_views.xml', + ], + "installable": True, +} diff --git a/survey_event_speaker_generation/models/__init__.py b/survey_event_speaker_generation/models/__init__.py new file mode 100644 index 0000000..6eda04e --- /dev/null +++ b/survey_event_speaker_generation/models/__init__.py @@ -0,0 +1,2 @@ +from . import survey_user_input +from . import survey_survey \ No newline at end of file diff --git a/survey_event_speaker_generation/models/survey_survey.py b/survey_event_speaker_generation/models/survey_survey.py new file mode 100644 index 0000000..60dc572 --- /dev/null +++ b/survey_event_speaker_generation/models/survey_survey.py @@ -0,0 +1,11 @@ +# Copyright 2023 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" + + generate_speaker = fields.Boolean( + help="Generate speaker for selected event", + ) diff --git a/survey_event_speaker_generation/models/survey_user_input.py b/survey_event_speaker_generation/models/survey_user_input.py new file mode 100644 index 0000000..49e6886 --- /dev/null +++ b/survey_event_speaker_generation/models/survey_user_input.py @@ -0,0 +1,44 @@ + +import logging +import textwrap +import uuid + +from dateutil.relativedelta import relativedelta + +from odoo import api, fields, models, _, Command +from odoo.exceptions import ValidationError +from odoo.tools import float_is_zero + +_logger = logging.getLogger(__name__) + + +class SurveyUserInput(models.Model): + _inherit = 'survey.user_input' + + speaker_id = fields.Many2one('res.partner', 'Event speaker') + + def _get_event(self): + for line in self.user_input_line_ids: + if line.question_id.question_type == 'event' and not line.skipped \ + and line.answer_type != "suggestion" \ + and line.question_id.event_registration_field.name != "comment": + return line.value_event + + + def _create_speaker_post_process(self, speaker): + speaker.message_post_with_view( + "survey_event_speaker_generation.message_event_speaker_assigned", + values={"speaker": speaker, "user_input": self, "event":self._get_event()}, + subtype_id=self.env.ref("mail.mt_note").id, + ) + + def _mark_done(self): + """Attach partner as speaker of event""" + + res = super()._mark_done() + for user_input in self.filtered(lambda r: r.survey_id.generate_speaker and not r.speaker_id and r.partner_id): + user_input.update({"speaker_id": user_input.partner_id.id}) + user_input._get_event().speakers = [Command.link(user_input.speaker_id.id)] + user_input._create_speaker_post_process(user_input.speaker_id) + + return res diff --git a/survey_event_speaker_generation/views/mail_templates_chatter.xml b/survey_event_speaker_generation/views/mail_templates_chatter.xml new file mode 100644 index 0000000..4f6c77f --- /dev/null +++ b/survey_event_speaker_generation/views/mail_templates_chatter.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/survey_event_speaker_generation/views/survey_survey_views.xml b/survey_event_speaker_generation/views/survey_survey_views.xml new file mode 100644 index 0000000..e8ad51a --- /dev/null +++ b/survey_event_speaker_generation/views/survey_survey_views.xml @@ -0,0 +1,14 @@ + + + + survey.survey + + + + + + + + + +