30 lines
1.4 KiB
Python

# pyrefly: ignore [missing-import]
from odoo import api, fields, models
class EducationTransportRouteStop(models.Model):
_name = 'education.transport.route.stop'
_description = 'Route Stop Sequencing'
_order = 'route_id, sequence'
route_id = fields.Many2one('education.transport.route', string='Route', required=True, ondelete='cascade')
stop_id = fields.Many2one('education.transport.stop', string='Stop', required=True, ondelete='restrict')
sequence = fields.Integer(string='Sequence', default=10, required=True)
pickup_time = fields.Float(string='Pickup Time (HH:MM)')
drop_time = fields.Float(string='Drop Time (HH:MM)')
estimated_time = fields.Integer(string='Estimated Time from Start (min)')
from odoo.exceptions import ValidationError
@api.constrains('sequence', 'route_id')
def _check_sequence(self):
for rec in self:
if self.search_count([('sequence', '=', rec.sequence), ('route_id', '=', rec.route_id.id), ('id', '!=', rec.id)]):
raise ValidationError('Sequence must be unique per route!')
@api.constrains('stop_id', 'route_id')
def _check_stop(self):
for rec in self:
if self.search_count([('stop_id', '=', rec.stop_id.id), ('route_id', '=', rec.route_id.id), ('id', '!=', rec.id)]):
raise ValidationError('A stop cannot be added multiple times to the same route!')