50 lines
2.3 KiB
Python
50 lines
2.3 KiB
Python
# 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
|