30 lines
1.4 KiB
Python
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!')
|