From f2da40afebf258662668e2396c9bbe5e92f81ff5 Mon Sep 17 00:00:00 2001 From: clementthomas Date: Mon, 24 Feb 2025 18:04:15 +0100 Subject: [PATCH] [IMP] survey_record_generation: manage filling of answers --- .../models/survey_question.py | 26 +++++++++++++++++-- .../views/survey_question_views.xml | 11 ++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/survey_record_generation/models/survey_question.py b/survey_record_generation/models/survey_question.py index 7e0f9ff..6767727 100644 --- a/survey_record_generation/models/survey_question.py +++ b/survey_record_generation/models/survey_question.py @@ -1,7 +1,8 @@ import logging +import ast -from odoo import api, fields, models, _ +from odoo import api, fields, models, _, Command from odoo.exceptions import UserError _logger = logging.getLogger(__name__) @@ -11,10 +12,13 @@ class SurveyQuestion(models.Model): _inherit = 'survey.question' model_id = fields.Many2one('ir.model', string="Model") - answer_values_type = fields.Selection([('no', 'No values'),('value','Value'),('record','Record')], string="Associate value to answer", default="no", required=True) + model_name = fields.Char(related="model_id.model") + fill_domain = fields.Char("Domain", default="[]") + answer_values_type = fields.Selection([('no', 'No values'),('value','Value'),('record','Record')], string="Associate value to answer", default="no", required=True) @api.onchange('model_id') def onchange_model_id(self): + self.fill_domain = "[]" if self.model_id: rec = self.env[self.model_id.model].search([], limit=1) if not rec: @@ -23,3 +27,21 @@ class SurveyQuestion(models.Model): for answer in self.suggested_answer_ids: answer.record_id = f"{self.model_id.model},{rec.id}" + + def fill(self): + for question in self: + if question.model_id: + new_suggested_answer_ids = [Command.clear()] + record_model = question.model_id.model + + if question.fill_domain: + domain = ast.literal_eval(question.fill_domain) + else: + domain = [] + + records = self.env[record_model].search(domain) + + new_suggested_answer_ids += [Command.create({'value':record.display_name, 'record_id':f"{record_model},{record.id}" +}) for record in records] + question.suggested_answer_ids = new_suggested_answer_ids + diff --git a/survey_record_generation/views/survey_question_views.xml b/survey_record_generation/views/survey_question_views.xml index 5366994..992f49a 100644 --- a/survey_record_generation/views/survey_question_views.xml +++ b/survey_record_generation/views/survey_question_views.xml @@ -8,6 +8,13 @@ + + +