diff --git a/yuthon_ai_agent/models/ai_report_template.py b/yuthon_ai_agent/models/ai_report_template.py index 14fbe9ccb..2272fd5ba 100644 --- a/yuthon_ai_agent/models/ai_report_template.py +++ b/yuthon_ai_agent/models/ai_report_template.py @@ -225,6 +225,34 @@ class AiReportTemplate(models.Model): if self.model_id: self.model_name = self.model_id.model + @api.onchange('field_ids') + def _onchange_field_ids(self): + if self.field_ids: + self.field_list = json.dumps([f.name for f in self.field_ids], ensure_ascii=False) + self.field_labels = json.dumps( + {f.name: f.field_description for f in self.field_ids}, + ensure_ascii=False + ) + + # ===== create / write ===== + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('model_id') and not vals.get('model_name'): + model = self.env['ir.model'].browse(vals['model_id']) + vals['model_name'] = model.model + if vals.get('field_ids'): + self._sync_field_list_from_ids(vals) + return super().create(vals_list) + + def write(self, vals): + if vals.get('model_id') and 'model_name' not in vals: + model = self.env['ir.model'].browse(vals['model_id']) + vals['model_name'] = model.model + if vals.get('field_ids'): + self._sync_field_list_from_ids(vals) + return super().write(vals) + @api.model def _sync_field_list_from_ids(self, vals): import json