# pyrefly: ignore [missing-import] from odoo import api, fields, models class EducationTransportIncident(models.Model): _name = 'education.transport.incident' _description = 'Transport Incident' _inherit = ['mail.thread', 'mail.activity.mixin'] name = fields.Char(string='Reference', required=True, copy=False, readonly=True, default=lambda self: self.env['ir.sequence'].next_by_code('education.transport.incident') or '/') trip_id = fields.Many2one('education.transport.trip', string='Trip', required=True, tracking=True) vehicle_id = fields.Many2one('education.transport.vehicle', string='Vehicle', required=True, tracking=True) driver_id = fields.Many2one('education.transport.driver', string='Driver', required=True, tracking=True) student_id = fields.Many2one('education.student', string='Student (Optional)', tracking=True) incident_type = fields.Char(string='Incident Type', required=True, tracking=True) description = fields.Text(string='Description', required=True) severity = fields.Selection([ ('low', 'Low'), ('medium', 'Medium'), ('high', 'High'), ('critical', 'Critical') ], string='Severity', required=True, default='low', tracking=True) incident_date = fields.Date(string='Incident Date', required=True, default=fields.Date.context_today, tracking=True) action_taken = fields.Text(string='Action Taken') state = fields.Selection([ ('reported', 'Reported'), ('investigating', 'Investigating'), ('resolved', 'Resolved'), ('closed', 'Closed') ], string='Status', default='reported', required=True, tracking=True) company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.company) @api.model_create_multi def create(self, vals_list): for vals in vals_list: if not vals.get('name') or vals.get('name') == '/': vals['name'] = self.env['ir.sequence'].next_by_code('education.transport.incident') or '/' return super().create(vals_list) @api.onchange('trip_id') def _onchange_trip_id(self): if self.trip_id: self.vehicle_id = self.trip_id.vehicle_id self.driver_id = self.trip_id.driver_id