132 lines
4.2 KiB
Python
132 lines
4.2 KiB
Python
|
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
|
||
|
|