class precioCanchaModel(bd.Model): __tablename__ = "t_precioCancha" pc_id = bd.Column(bd.Integer, primary_key=True) pc_desc = bd.Column(bd.String(45)) pc_monto = bd.Column(bd.DECIMAL(5, 2)) pc_disponibilidad = bd.Column(bd.Boolean) can_id = bd.Column(bd.Integer, bd.ForeignKey('t_canchita.can_id'), nullable=False) reservas = bd.relationship('reservaModel', lazy=True, backref='reserva') def __init__(self, descripcion, monto, disponibilidad, cancha_id): self.pc_desc = descripcion self.pc_monto = monto self.pc_disponibilidad = disponibilidad self.can_id = cancha_id def retornar_json(self): return { 'id': self.pc_id, 'descripcion': self.pc_desc, 'monto': str(self.pc_monto), 'id_cancha': self.can_id } def guardar_en_la_bd(self): bd.session.add(self) bd.session.commit() def actualizar_estado(self, nuevo_estado): self.pc_disponibilidad = nuevo_estado bd.session.commit()
class reservaModel(bd.Model): __tablename__ = "t_reserva" res_id = bd.Column(bd.Integer, primary_key=True) res_fechin = bd.Column(bd.DateTime) res_fechfin = bd.Column(bd.DateTime) res_monto = bd.Column(bd.DECIMAL(5, 2)) res_adelanto = bd.Column(bd.DECIMAL(5, 2)) usu_id = bd.Column(bd.Integer, bd.ForeignKey('t_usuario.usu_id')) pc_id = bd.Column(bd.Integer, bd.ForeignKey('t_precioCancha.pc_id')) valoraciones = bd.relationship('valoracionesModel', backref='valoraciones', lazy=True) def __init__(self, fecha_inicio, fecha_fin, monto, adelanto, id_usu, id_precio): self.res_fechin = fecha_inicio self.res_fechfin = fecha_fin self.res_monto = monto self.res_adelanto = adelanto self.usu_id = id_usu self.pc_id = id_precio def retornar_json(self): return { 'id': self.tipo_id, 'descripcion': { 'fecha inicio': self.res_fechin, 'fecha fin': self.res_fechfin } } def guardar_en_la_bd(self): bd.session.add(self) bd.session.commit()
class TipoModel(bd.Model): __tablename__ = "t_tipo" tipo_id = bd.Column(bd.Integer, primary_key=True) tipo_desc = bd.Column(bd.String(45), nullable=True) canchitas = bd.relationship('CanchitaModel', lazy=True, backref='t_tipo') # es una manera simple de declara una nueva propiedad en la clase CanchitasModel para poder ingresar a sus valores solamente necesitaria canchita.tipo para acceder a todos los valores del tipo def __init__(self, descripcion): self.tipo_desc = descripcion def retornar_json(self): return {'id': self.tipo_id, 'descripcion': self.tipo_desc} def retornar_json_con_nombre_local(self): locales = [] for canchita in self.canchitas: locales.append({ 'nombre': canchita.local.loc_nombre, 'latitud': str(canchita.local.loc_lat), 'longitud': str(canchita.local.loc_lng) }) listanuevalocales = [] for local in locales: if local not in listanuevalocales: listanuevalocales.append(local) return {'descripcion': self.tipo_desc, 'locales': listanuevalocales} def guardar_en_la_bd(self): bd.session.add(self) bd.session.commit()
class CanchitaModel(bd.Model): __tablename__ = "t_canchita" can_id = bd.Column(bd.Integer, primary_key=True) can_tam = bd.Column(bd.String(45)) can_foto = bd.Column(bd.Text) # RELACIONES loc_id = bd.Column(bd.Integer, bd.ForeignKey('t_local.loc_id'), nullable=False) tipo_id = bd.Column(bd.Integer, bd.ForeignKey('t_tipo.tipo_id'), nullable=False) # ESTO NO CREA LA RELACION ( LO QUE CREA LA RELACION ES # EL FOREIGN KEY) local = bd.relationship('LocalModel', lazy=True) tipos = bd.relationship('TipoModel', lazy=True) preciocancha = bd.relationship('precioCanchaModel', lazy=True) def __init__(self, tamanio, foto, local, tipo): self.can_tam = tamanio self.can_foto = foto self.loc_id = local self.tipo_id = tipo def retornar_json(self): return { 'id': self.can_id, 'tamaño': self.can_tam, 'foto': self.can_foto, 'local': self.local.loc_nombre, 'tipo': self.tipos.tipo_desc } def guardar_en_la_bd(self): bd.session.add(self) bd.session.commit()
class LocalModel(bd.Model): __tablename__ = "t_local" loc_id = bd.Column(bd.Integer, primary_key=True) loc_nombre = bd.Column(bd.String(45)) loc_lat = bd.Column(bd.DECIMAL(10, 8)) loc_lng = bd.Column(bd.DECIMAL(10, 8)) loc_direccion = bd.Column(bd.String(45)) loc_fono = bd.Column(bd.String(15)) usu_id = bd.Column(bd.Integer, bd.ForeignKey('t_usuario.usu_id'), nullable=False) canchitas = bd.relationship('CanchitaModel', lazy=True, backref='cancha') # parametros para el lazy puede ser # 'select'/True => que va a cargar la data de su hijo # 'joined'/False => es como usar un inner join cuando vamos a hacer un select # 'subquery' => es igual que joined pero x detras usa una subquery para jalar los datos del hijo # 'dynamic' => retorna los objetos del join de la consulta def __init__(self, nombre, latitud, longitud, direccion, telefono, id_usu): self.loc_nombre = nombre self.loc_lat = latitud self.loc_lng = longitud self.loc_direccion = direccion self.loc_fono = telefono self.usu_id = id_usu def retornar_json(self): return { 'id': self.loc_id, 'nombre': self.loc_nombre, 'latitud': str(self.loc_lat), 'longitud': str(self.loc_lng), 'direccion': self.loc_direccion, 'telefono': self.loc_fono } def guardar_en_la_bd(self): bd.session.add(self) bd.session.commit()