[IMP] survey_record_generation: manage filling of answers
This commit is contained in:
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user