Skip to content

Commit

Permalink
Merge pull request #23 from guivaloz:guivaloz/mejora-enviar-exhortos-…
Browse files Browse the repository at this point in the history
…archivos

Mejoras en recibir archivos
  • Loading branch information
guivaloz authored Jun 21, 2024
2 parents c42d5d1 + 0d768b1 commit 05fa975
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 8 deletions.
5 changes: 4 additions & 1 deletion carina/v4/exh_exhortos/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def get_exh_exhorto_by_exhorto_origen_id(database: Session, exhorto_origen_id: s
if exh_exhorto is None:
raise MyNotExistsError("No existe ese exhorto")
if exh_exhorto.estatus != "A":
raise MyIsDeletedError("No es activo ese exhorto, está eliminado")
raise MyIsDeletedError(f"No es activo ese exhorto, está eliminado con {exh_exhorto.estatus}")
return exh_exhorto


Expand Down Expand Up @@ -145,6 +145,9 @@ def create_exh_exhorto(database: Session, exh_exhorto_in: ExhExhortoIn) -> ExhEx
# Estado es PENDIENTE
exh_exhorto.estado = "PENDIENTE"

# Estatus es A
exh_exhorto.estatus = "A"

# Iniciar la transaccion, agregar el exhorto
database.add(exh_exhorto)

Expand Down
32 changes: 25 additions & 7 deletions carina/v4/exh_exhortos_archivos/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,21 @@ async def upload_exh_exhorto_archivo(

# Validar que el nombre del archivo termine en pdf
if not archivo.filename.lower().endswith(".pdf"):
return ExhExhortoArchivoFileOut(success=False, errors=["El archivo debe ser un PDF"])
return ExhExhortoArchivoFileOut(
success=False,
message="Tipo de archivo no permitido",
errors=["El nombre del archivo no termina en PDF"],
)

# Consultar y validar el exhorto a partir del exhortoOrigenId
try:
exh_exhorto = get_exh_exhorto_by_exhorto_origen_id(database, exhortoOrigenId)
except MyAnyError as error:
return ExhExhortoArchivoFileOut(success=False, errors=[str(error)])
return ExhExhortoArchivoFileOut(
success=False,
message="No se encontró el exhorto",
errors=[str(error)],
)

# Consultar los archivos del exhorto y buscar el archivo a partir del nombre del archivo
total_contador = 0
Expand All @@ -99,14 +107,22 @@ async def upload_exh_exhorto_archivo(

# Si NO se encontró el archivo, entonces entregar un error
if exh_exhorto_archivo is False:
return ExhExhortoArchivoFileOut(success=False, errors=["No se encontró el archivo"])
return ExhExhortoArchivoFileOut(
success=False,
message="No se encontró el archivo",
errors=["Al parecer el archivo ya fue recibido o no se declaró en el exhorto"],
)

# Determinar el tamano del archivo
archivo_pdf_tamanio = archivo.size

# Validar que el archivo no execeda el tamaño máximo permitido de 10MB
if archivo_pdf_tamanio > 10 * 1024 * 1024:
return ExhExhortoArchivoFileOut(success=False, errors=["El archivo no debe exceder los 10MB"])
return ExhExhortoArchivoFileOut(
success=False,
message="El archivo excede el tamaño máximo permitido",
errors=["El archivo no debe exceder los 10MB"],
)

# Cargar el archivo en memoria
archivo_en_memoria = archivo.file.read()
Expand All @@ -118,7 +134,8 @@ async def upload_exh_exhorto_archivo(
if exh_exhorto_archivo.hash_sha1 != hasher_sha1.hexdigest():
return ExhExhortoArchivoFileOut(
success=False,
errors=[f"El archivo no coincide con el hash SHA1 {exh_exhorto_archivo.hash_sha1}"],
message="El archivo está corrupto",
errors=["El archivo no coincide con el hash SHA1"],
)

# Validar la integridad del archivo con SHA256
Expand All @@ -128,7 +145,8 @@ async def upload_exh_exhorto_archivo(
if exh_exhorto_archivo.hash_sha256 != hasher_sha256.hexdigest():
return ExhExhortoArchivoFileOut(
success=False,
errors=[f"El archivo no coincide con el hash SHA256 {exh_exhorto_archivo.hash_sha256}"],
message="El archivo está corrupto",
errors=["El archivo no coincide con el hash SHA256"],
)

# Definir el nombre del archivo a subir a Google Storage
Expand All @@ -153,7 +171,7 @@ async def upload_exh_exhorto_archivo(
except MyAnyError as error:
return ExhExhortoArchivoFileOut(
success=False,
message="Error al recibir un archivo de un exhorto",
message="Hubo un error nuestro al subir el archivo a Google Storage",
errors=[str(error)],
)

Expand Down

0 comments on commit 05fa975

Please sign in to comment.