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
예제 #4
0
 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
예제 #5
0
 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
예제 #7
0
 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
예제 #10
0
 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
예제 #11
0
    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
예제 #12
0
    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
예제 #13
0
    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
예제 #15
0
 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
예제 #19
0
    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
예제 #22
0
 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
예제 #24
0
 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
예제 #29
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
예제 #30
0
    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