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