idg_trayek.py 2.51 KB
from datetime import datetime, timedelta
from odoo import api, fields, models, _
import logging
import re
_logger = logging.getLogger(__name__)


class IdgTrayek(models.Model):
    _name = 'idg.trayek.route'
    _description = 'Public Route'
    # _inherit = ['mail.thread', 'mail.activity.mixin']
    # _sequence_field = "code"
    # _sequence_date_field = "date"
    code = fields.Char(index=True, string='Code')
    name = fields.Char(index=True, string='Name', size=255, required=True)
    active = fields.Boolean(default=True, string='Active')
    # geom = field.Geom()
    trayek_line = fields.One2many('idg.trayek.route.line', 'trayek_id',
                                  string='Trayek Lines',
                                  copy=True, auto_join=True)
    geom = fields.GeoLine(srid=4326)


class IdgTrayekLine(models.Model):
    _name = 'idg.trayek.route.line'
    _description = 'Public Route Line'
    # _inherit = ['mail.thread', 'mail.activity.mixin', ]
    trayek_id = fields.Many2one('idg.trayek.route')
    road_id = fields.Many2one('idg.road')


class IdgVehicle(models.Model):
    _name = 'idg.vehicle'
    _description = 'Vehicle Merek'
    # _inherit = ['mail.thread', 'mail.activity.mixin']
    # _sequence_field = "code"
    # _sequence_date_field = "date"
    # code = fields.Char(index=True, string='Code')
    name = fields.Char(index=True, string='Name', size=255, required=True)


class IdgTrayekVehicle(models.Model):
    _name = 'idg.trayek.vehicle'
    _description = 'Public Transport Route'
    # _inherit = ['mail.thread', 'mail.activity.mixin', ]
    code = fields.Char(index=True, string='Code', compute='_compute_code',
                       store=True, copy=False, tracking=True)
    name = fields.Char(string='Name', index=True)
    partner_id = fields.Many2one('res.partner')
    vehicle_id = fields.Many2one('idg.vehicle')
    route_id = fields.Many2one('idg.trayek.route')
    permit_no = fields.Char(index=True, string='Permit')
    permit_due = fields.Date(string='Due Date')
    production_year = fields.Char(size=4, string='Production Year')
    active = fields.Boolean(default=True, string='Active')

    @api.depends('name')
    def _compute_code(self):
        for rec in self:
            rec_str = re.sub('[0-9]', " ", rec.name).split()
            if len(rec_str) == 1:
                rec_str.append(" ")
            rec_num = re.sub("[a-zA-Z]", " ", rec.name)
            rec.code = f"{rec_str[0].ljust(2)}{rec_str[1].ljust(3)}{rec_num.strip()}"