carga_gtfs/webinterface/models/granconcepcion.py

132 lines
4.2 KiB
Python
Raw Normal View History

2023-03-01 14:18:49 -03:00
from sqlalchemy.sql import func
from sqlalchemy.dialects import postgresql, sqlite
from webinterface import db
class Agencia(db.Model):
__tablename__ = 'agencias'
id = db.Column(db.String(20), primary_key=True, nullable=False)
nombre = db.Column(db.String(100))
url = db.Column(db.String(100))
fono = db.Column(db.String(100))
class Paradero(db.Model):
__tablename__ = 'paraderos'
id = db.Column(db.String(20), primary_key=True, nullable=False)
codigo = db.Column(db.String(50), unique=True, nullable=True)
nombre = db.Column(db.Text)
longitud = db.Column(db.Float, nullable=False)
latitud = db.Column(db.Float, nullable=False)
comuna = db.Column(db.Text)
tamano = db.Column(db.Float)
capacidad = db.Column(db.Integer)
techo = db.Column(db.Text)
pared = db.Column(db.Text)
piso = db.Column(db.Text)
recorridos = db.Column(db.Text)
recorridos2 = db.Column(db.Text)
resumen = db.Column(db.Text)
paradas = db.Column(db.Integer, default=0)
paradasl = db.Column(db.Integer, default=0)
paradass = db.Column(db.Integer, default=0)
paradasd = db.Column(db.Integer, default=0)
lineas = db.Column(db.Integer, default=0)
@property
def recorridosz(self):
txtout = ""
for item in Parada.query.join(Itinerario).filter(Parada.paraderoid==self.id).distinct(Itinerario.lineaid).all():
txtout += "{}({}) - ".format(item.lineaTXT, item.secuencia)
if len(txtout) > 2:
return txtout[:-2]
else:
return txtout
class Ruta(db.Model):
__tablename__ = 'rutas'
id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
rutaid = db.Column(db.Integer, nullable=False)
secuencia = db.Column(db.Integer, nullable=False)
longitud = db.Column(db.Float, nullable=False)
latitud = db.Column(db.Float, nullable=False)
__table_args__ = (db.UniqueConstraint('rutaid', 'secuencia', name='_rutaid_secuencia_recorrido_uc'), )
class Linea(db.Model):
__tablename__ = 'lineas'
id = db.Column(db.Integer, primary_key=True, nullable=False)
agenciaid = db.Column(db.String(20), db.ForeignKey('agencias.id'), nullable=False)
codigo = db.Column(db.String(50), unique=True)
nombre = db.Column(db.Text)
color = db.Column(db.String(6))
class Servicio(db.Model):
__tablename__ = 'servicios'
id = db.Column(db.String(20), primary_key=True, nullable=False)
rutaid = db.Column(db.Integer, nullable=False) # Ruta.rutaid
lineaid = db.Column(db.Integer, db.ForeignKey('lineas.id'), nullable=False)
direccionid = db.Column(db.Integer, nullable=False)
destino = db.Column(db.Text)
dotw = db.Column(db.String(1), nullable=False)
linea = db.relationship('Linea')
@property
def lineatxt(self):
self.linea.codigo
@property
def color(self):
self.linea.color
class Parada(db.Model):
__tablename__ = 'paradas'
id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
servicioid = db.Column(db.String(20), db.ForeignKey('servicios.id'), nullable=False)
paraderoid = db.Column(db.String(20), db.ForeignKey('paraderos.id'), nullable=False)
secuencia = db.Column(db.Integer, nullable=False)
tipo = db.Column(db.Integer)
llegada = db.Column(db.Time, nullable=False)
salida = db.Column(db.Time, nullable=False)
otrodia = db.Column(db.Integer)
__table_args__ = (db.UniqueConstraint('servicioid', 'secuencia', name='_serviciosid_secuencia_paradas_uc'), )
servicio = db.relationship('Servicio')
paradero = db.relationship('Paradero')
@property
def longitud(self):
self.paradero.longitud
@property
def latitud(self):
self.paradero.latitud
@property
def linea(self):
self.servicio.linea
@property
def lineatxt(self):
self.servicio.lineatxt
# 4cc08782-c-76aabf89-b