def getId(self) -> int: id_recuperado = -1 query = "SELECT idMiembro FROM MiembroOfercompas WHERE email = %s;" values = [self.email] conexion = EasyConnection() resultados = conexion.select(query, values) id_recuperado = resultados[0]["idMiembro"] return id_recuperado
def obtener_miembros_mas_denunciados(): query = "SELECT nickname, idMiembro, denuncias FROM MiembroOfercompas INNER JOIN" \ " (SELECT publicador, COUNT(idPublicacion) AS denuncias FROM Publicacion WHERE" \ " numeroDenuncias > 0 GROUP BY publicador ORDER BY COUNT(idPublicacion) DESC LIMIT 10)" \ " AS DENUNCIAS ON idMiembro = DENUNCIAS.publicador;" conexion = EasyConnection() resultado = conexion.select(query) return resultado
def obtener_autor_por_id(self): conexion = EasyConnection() query = "SELECT publicador FROM Publicacion WHERE idPublicacion = %s" values = [self.idPublicacion] resultado = conexion.select(query, values) respuesta = resultado[0]["publicador"] return respuesta
def actualizar_video(self, ruta: str, id_publicacion: int) -> int: resultado = HTTPStatus.INTERNAL_SERVER_ERROR conexion = EasyConnection() query = "UPDATE Multimedia SET ruta = %s WHERE idOferta = %s AND tipo = 'video'" values = [ruta, id_publicacion] conexion.send_query(query, values) resultado = HTTPStatus.CREATED return resultado
def registrar_imagen(self, ruta: str, id_publicacion: int) -> int: resultado = HTTPStatus.INTERNAL_SERVER_ERROR conexion = EasyConnection() query = "INSERT INTO Multimedia(ruta, idOferta, tipo) VALUES (%s, %s, 'foto');" values = [ruta, id_publicacion] conexion.send_query(query, values) resultado = HTTPStatus.CREATED return resultado
def expulsar(self) -> int: status = CodigosRespuesta.ERROR_INTERNO conexion = EasyConnection() query = "UPDATE MiembroOfercompas SET estado = 2 WHERE idMiembro = %s;" values = [self.idMiembro] resultado = conexion.send_query(query, values) status = CodigosRespuesta.OK return status
def obtener_ruta_video_id(self, id_publicacion: int) -> str: conexion = EasyConnection() query = "SELECT ruta FROM Multimedia WHERE idOferta = %s AND tipo = 'video'" values = [id_publicacion] ruta = conexion.select(query, values) ruta_retorno = "not" if len(ruta) > 0: ruta_retorno = ruta[0]["ruta"] return ruta_retorno
def obtener_id(self) -> int: id = None conexion = EasyConnection() query = "SELECT idPublicacion FROM Publicacion WHERE titulo = %s AND descripcion = %s AND publicador = %s;" values = [self.titulo, self.descripcion, self.publicador] resultado = conexion.select(query, values) if len(resultado) > 0: id = resultado[0][0] return id
def nickname_registrado(self) -> bool: status = False conexion = EasyConnection() query = "SELECT * FROM MiembroOfercompas WHERE nickname = %s;" values = [self.nickname] resultado = conexion.select(query, values) if len(resultado) > 0: status = True return status
def calcular_puntuacion(id_publicacion: int) -> int: conexion = EasyConnection() query = "SELECT COUNT(*) AS conteo FROM Puntuacion WHERE idPublicacion = %s AND esPositiva = 1" values = [id_publicacion] positivas = conexion.select(query, values) query = "SELECT COUNT(*) AS conteo FROM Puntuacion WHERE idPublicacion = %s AND esPositiva = 0" negativas = conexion.select(query, values) total = positivas[0]["conteo"] - negativas[0]["conteo"] return total
def existe_denuncia(self) -> bool: existe = False query = "SELECT * FROM Denuncia WHERE idPublicacion = %s and idMiembro = %s;" values = [self.id_publicacion, self.id_denunciante] conexion = EasyConnection() resultado = conexion.select(query, values) if len(resultado) > 0: existe = True return existe
def existe_publicacion(self) -> bool: existe = False query = "SELECT * FROM Publicacion WHERE idPublicacion = %s AND estado = 1;" values = [self.id_publicacion] conexion = EasyConnection() resultado = conexion.select(query, values) if len(resultado) > 0: existe = True return existe
def existe_miembro(self) -> bool: existe = False query = "SELECT * FROM MiembroOfercompas WHERE idMiembro = %s;" values = [self.id_denunciante] conexion = EasyConnection() resultado = conexion.select(query, values) if len(resultado) > 0: existe = True return existe
def email_registrado_actualizar(self) -> bool: status = False conexion = EasyConnection() self.idMiembro = self.getId() query = "SELECT * FROM MiembroOfercompas WHERE email = %s AND idMiembro <> %s;" values = [self.email, self.idMiembro] resultado = conexion.select(query, values) if len(resultado) > 0: status = True return status
def aumentar_numero_denuncias(self) -> bool: aumentado = False query_aumentar_denuncias = "UPDATE Publicacion set numeroDenuncias=numeroDenuncias+1 where " \ "idPublicacion = %s; " values_aumentar_denuncias = [self.id_publicacion] conexion = EasyConnection() conexion.send_query(query_aumentar_denuncias, values_aumentar_denuncias) aumentado = True return aumentado
def prohibir_publicacion(id_publicacion: int) -> int: respuesta = 500 conexion = EasyConnection() query = "CALL SPE_prohibirPublicacion(%s)" values = [id_publicacion] if conexion.send_query(query, values): respuesta = 200 else: respuesta = 400 return respuesta
def actualizar(self, old_email: str): actualizado = CodigosRespuesta.ERROR_INTERNO if not self.email_registrado_actualizar(): query = "UPDATE MiembroOfercompas SET nickname = %s, email = %s, contrasenia = %s WHERE email = %s" values = [self.nickname, self.email, self.contrasenia, old_email] conexion = EasyConnection() conexion.send_query(query, values) actualizado = CodigosRespuesta.OK else: actualizado = CodigosRespuesta.CONFLICTO return actualizado
def registrar(self) -> int: status = HTTPStatus.INTERNAL_SERVER_ERROR if self.existe_publicacion() and self.existe_miembro(): conexion = EasyConnection() query = "INSERT INTO Comentario(idMiembro, idPublicacion, contenido) VALUES" \ "(%s, %s, %s)" values = [self.id_miembro, self.id_publicacion, self.contenido] conexion.send_query(query, values) status = HTTPStatus.CREATED else: status = HTTPStatus.NOT_FOUND return status
def actualizar_oferta(self, id_publicacin: int) -> int: respuesta = HTTPStatus.INTERNAL_SERVER_ERROR conexion = EasyConnection() query = "CALL SPA_actualizarOferta(%s, %s, %s, %s, %s, %s, %s, %s)" values = [ id_publicacin, self.titulo, self.descripcion, self.precio, self.fechaCreacion, self.fechaFin, self.categoria, self.vinculo ] if conexion.send_query(query, values): respuesta = HTTPStatus.OK else: respuesta = HTTPStatus.BAD_REQUEST return respuesta
def iniciar_sesion(self) -> int: status = CodigosRespuesta.ERROR_INTERNO conexion = EasyConnection() query = "SELECT * FROM MiembroOfercompas WHERE email = %s and contrasenia = %s and estado = 1;" values = [self.email, self.contrasenia] resultado = conexion.select(query, values) if len(resultado) > 0: self.idMiembro = int(resultado[0]["idMiembro"]) self.tipoMiembro = resultado[0]["tipoMiembro"] self.nickname = resultado[0]["nickname"] status = CodigosRespuesta.OK else: status = CodigosRespuesta.NO_ENCONTRADO return status
def obtener_comentarios(idPublicacion: int): conexion = EasyConnection() query = "SELECT Comentario.contenido,MiembroOfercompas.nickname FROM Comentario INNER JOIN " \ "MiembroOfercompas ON Comentario.idMiembro=MiembroOfercompas.idMiembro " \ "WHERE idPublicacion = %s;" values = [idPublicacion] comentarios_obtenidos = conexion.select(query, values) resultado = [] if comentarios_obtenidos: for comentario_invididual in comentarios_obtenidos: comentario_aux = Comentario() comentario_aux.contenido = comentario_invididual["contenido"] comentario_aux.nickname = comentario_invididual["nickname"] resultado.append(comentario_aux) print(resultado) return resultado
def registrar_oferta(self) -> int: respuesta = HTTPStatus.INTERNAL_SERVER_ERROR conexion = EasyConnection() query = "CALL SPI_registrarOferta (%s, %s, %s, %s, %s, %s, %s, %s)" values = [ self.titulo, self.descripcion, self.precio, self.fechaCreacion, self.fechaFin, self.categoria, self.vinculo, self.publicador ] print(values) resultado = conexion.select(query, values) if resultado: self.idPublicacion = resultado[0]["idPublicacion"] respuesta = HTTPStatus.CREATED else: respuesta = HTTPStatus.BAD_REQUEST return respuesta
def registrar(self) -> int: registrado = CodigosRespuesta.ERROR_INTERNO if not self.email_registrado() and not self.nickname_registrado(): query = "INSERT INTO MiembroOfercompas(email, contrasenia, estado, tipoMiembro, nickname) VALUES " \ "(%s, %s, %s, %s, %s) ;" values = [ self.email, self.contrasenia, self.estado, self.tipoMiembro, self.nickname ] conexion = EasyConnection() conexion.send_query(query, values) self.idMiembro = self.getId() registrado = CodigosRespuesta.RECURSO_CREADO else: registrado = CodigosRespuesta.CONFLICTO return registrado
def registrar(self) -> int: status = HTTPStatus.INTERNAL_SERVER_ERROR if self.existe_publicacion() and self.existe_miembro(): if not self.existe_denuncia(): conexion = EasyConnection() query = "INSERT INTO Denuncia(idMiembro, idPublicacion, comentario, motivo) VALUES" \ "(%s,%s, %s, %s);" values = [ self.id_denunciante, self.id_publicacion, self.comentario, self.motivo ] conexion.send_query(query, values) self.aumentar_numero_denuncias() status = HTTPStatus.CREATED else: status = HTTPStatus.CONFLICT else: status = HTTPStatus.NOT_FOUND return status
def obtener_codigo(pagina: int, categoria: int): conexion = EasyConnection() query = "CALL SPS_obtenerCodigosDescuento(%s, %s)" values = [pagina, categoria] codigos_obtenidos = conexion.select(query, values) resultado = [] if codigos_obtenidos: for codigo_individual in codigos_obtenidos: codigo_aux = CodigoDescuento() codigo_aux.idPublicacion = codigo_individual["idPublicacion"] codigo_aux.titulo = codigo_individual["titulo"] codigo_aux.descripcion = codigo_individual["descripcion"] codigo_aux.fechaCreacion = str( codigo_individual["fechaCreacion"]) codigo_aux.fechaFin = str(codigo_individual["fechaFin"]) codigo_aux.codigo = codigo_individual["codigo"] codigo_aux.obtener_puntuacion() resultado.append(codigo_aux) return resultado
def registrar_codigo(self) -> int: respuesta = 500 conexion = EasyConnection() query = "CALL SPI_registrarCodigoDescuento (%s, %s, %s, %s, %s, %s, %s)" values = [ self.titulo, self.descripcion, self.fechaCreacion, self.fechaFin, self.categoria, self.codigo, self.publicador ] resultado = conexion.select(query, values) print("caca") print(resultado) if resultado: self.idPublicacion = resultado[0]["idPublicacion"] respuesta = HTTPStatus.CREATED else: respuesta = 400 return respuesta
def obtener_publicaciones_denunciadas(pagina: int): conexion = EasyConnection() query = "CALL SPS_obtenerOfertasDenunciadas(%s)" values = [pagina] ofertas_obtenidas = conexion.select(query, values) resultado = [] if ofertas_obtenidas: for oferta_individual in ofertas_obtenidas: oferta_aux = Publicacion() oferta_aux.idPublicacion = oferta_individual["idPublicacion"] oferta_aux.titulo = oferta_individual["titulo"] oferta_aux.descripcion = oferta_individual["descripcion"] oferta_aux.fechaCreacion = str( oferta_individual["fechaCreacion"]) oferta_aux.fechaFin = str(oferta_individual["fechaFin"]) oferta_aux.precio = oferta_individual["precio"] oferta_aux.vinculo = oferta_individual["vinculo"] oferta_aux.obtener_puntuacion() resultado.append(oferta_aux) return resultado
def __init__(self): self.idPublicacion = 0 self.titulo = None self.descripcion = None self.estado = EstadoPublicacion.ACTIVA.value self.fechaCreacion = None self.fechaFin = None self.publicador = None self.categoria = 1 self.conexion = EasyConnection() self.puntuacion = 0
def obtener_oferta(pagina: int, categoria: int): conexion = EasyConnection() query = "CALL SPS_obtenerOfertasGeneral(%s, %s)" values = [pagina, categoria] ofertas_obtenidas = conexion.select(query, values) resultado = [] if ofertas_obtenidas: for oferta_individual in ofertas_obtenidas: oferta_aux = Oferta() oferta_aux.idPublicacion = oferta_individual["idPublicacion"] oferta_aux.titulo = oferta_individual["titulo"] oferta_aux.descripcion = oferta_individual["descripcion"] oferta_aux.fechaCreacion = str( oferta_individual["fechaCreacion"]) oferta_aux.fechaFin = str(oferta_individual["fechaFin"]) oferta_aux.precio = oferta_individual["precio"] oferta_aux.vinculo = oferta_individual["vinculo"] oferta_aux.publicador = oferta_individual["publicador"] oferta_aux.puntuacion = oferta_individual["puntuacion"] resultado.append(oferta_aux) return resultado
def puntuar_publicacion(self) -> int: respuesta = HTTPStatus.CONFLICT if not Puntuacion.ha_puntuado(self.id_puntuador, self.id_publicacion): conexion = EasyConnection() query = "INSERT INTO Puntuacion (idPuntuador, idPublicacion, esPositiva) VALUES (%s, %s, %s)" values = [self.id_puntuador, self.id_publicacion, self.es_positiva] if conexion.send_query(query, values): query = "" if self.es_positiva: query = "UPDATE Publicacion SET puntuacion = puntuacion+1 WHERE idPublicacion = %s" else: query = "UPDATE Publicacion SET puntuacion = puntuacion-1 WHERE idPublicacion = %s" values = [self.id_publicacion] if conexion.send_query(query, values): respuesta = HTTPStatus.CREATED else: respuesta = HTTPStatus.CONFLICT else: respuesta = HTTPStatus.INTERNAL_SERVER_ERROR return respuesta