Skip to content

Commit

Permalink
Merge pull request #35 from guivaloz/guivaloz/paso-cinco
Browse files Browse the repository at this point in the history
Guivaloz/paso cinco
  • Loading branch information
guivaloz authored Nov 27, 2024
2 parents 01a2a14 + 9aa6a8f commit 2f7489b
Show file tree
Hide file tree
Showing 12 changed files with 133 additions and 188 deletions.
12 changes: 11 additions & 1 deletion carina/core/exh_exhortos_actualizaciones/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from datetime import datetime

from sqlalchemy import DateTime, ForeignKey, String
from sqlalchemy import DateTime, Enum, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.sql.functions import now

Expand All @@ -15,6 +15,11 @@
class ExhExhortoActualizacion(Base, UniversalMixin):
"""ExhExhortoActualizacion"""

REMITENTES = {
"INTERNO": "Interno",
"EXTERNO": "Externo",
}

# Nombre de la tabla
__tablename__ = "exh_exhortos_actualizaciones"

Expand Down Expand Up @@ -45,6 +50,11 @@ class ExhExhortoActualizacion(Base, UniversalMixin):
# Este puede ser: "Turnado al Juzgado Tercero Familiar (Municipio)", "Radicado con Número de Exhorto 99999/2024"
descripcion: Mapped[str] = mapped_column(String(256))

# Campo para saber si es un proceso interno o extorno
remitente: Mapped[str] = mapped_column(
Enum(*REMITENTES, name="exh_exhortos_actualizaciones_remitentes", native_enum=False), index=True
)

def __repr__(self):
"""Representación"""
return f"<ExhExhortoActualizacion {self.id}>"
125 changes: 1 addition & 124 deletions carina/v4/exh_exhortos/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,122 +15,42 @@
class ExhExhortoIn(BaseModel):
"""Esquema para recibir exhortos"""

# exhortoOrigenId: Es el identificador con el que el Poder Judicial exhortante identifica el exhorto que envía.
# Este dato puede ser un número consecutivo si así el Poder Judicial exhortante (de origen) identifica
# el registro del Exhorto, también puede ser un GUID/UUID u otro valor que sea único para el Poder Judicial exhortante.
# Este dato es importante porque se utilizará para poder hacer la devolución/respuesta del exhorto por el Juzgado exhortado.
exhortoOrigenId: str | None = None

# municipioDestinoId: Identificador del municipio del Estado del Poder Judical exhortado al que se quiere enviar el Exhorto.
# Este debe corresponder al identificador definido por el catálogo de municipios y estados del INEGI
municipioDestinoId: str | None = None

# materiaClave string SI Clave de la materia (el que se obtuvo en la consulta de materias del Poder Judicial exhortado)
# al que el Exhorto hace referencia. Este contiene la materia actuál del registro del Exhorto
municipioDestinoId: int | None = None
materiaClave: str | None = None

# estadoOrigenId: Identificador del estado de origen del municipio donde se ubica el Juzgado del Poder Judicial exhortante.
# Este dato debe ser uno de los valores correspondientes al catálogo de estados del INEGI.
estadoOrigenId: int | None = None

# municipioOrigenId int SI Identificador del municipio donde está localizado el Juzgado/Área del Poder Judicial exhortante.
# Este identificador debe coincidir con el del catálogo del INEGI de municipios y estados.
municipioOrigenId: int | None = None

# juzgadoOrigenId: Identificador propio del Juzgado/Área que envía el Exhorto.
# Identificador con el que el Poder Judicial exhortante identifica al Juzgado/Área
juzgadoOrigenId: str | None = None

# juzgadoOrigenNombre: Nombre del Juzgado/Área que envía el Exhorto.
juzgadoOrigenNombre: str | None = None

# numeroExpedienteOrigen: El número de expediente (o carpeta procesal, carpeta...)
# que tiene el asunto en el Juzgado de Origen.
numeroExpedienteOrigen: str | None = None

# numeroOficioOrigen: El número del oficio con el que se envía el exhorto,
# el que corresponde al control interno del Juzgado de origen
numeroOficioOrigen: str | None = None

# tipoJuicioAsuntoDelitos: Nombre del tipo de Juicio, o asunto, listado de los delitos (para materia Penal)
# que corresponde al Expediente del cual el Juzgado envía el Exhorto
tipoJuicioAsuntoDelitos: str | None = None

# juezExhortante: Nombre completo del Juez del Juzgado o titular del Área que envía el Exhorto
juezExhortante: str | None = None

# partes: Contiene la definición de las partes del Expediente
partes: list[ExhExhortoParteIn] | None = None

# fojas: Número de fojas que contiene el exhorto. El valor 0 significa "No Especificado".
fojas: int | None = None

# diasResponder: Cantidad de dias a partir del día que se recibió en el Poder Judicial exhortado que se tiene para
# responder el Exhorto. El valor de 0 significa "No Especificado".
diasResponder: int | None = None

# tipoDiligenciacionNombre: Nombre del tipo de diligenciación que le corresponde al exhorto enviado.
# Este puede contener valores como "Oficio", "Petición de Parte"
tipoDiligenciacionNombre: str | None = None

# fechaOrigen: Fecha y hora en que el Poder Judicial exhortante registró que se envió el exhorto en su hora local.
# En caso de no enviar este dato, el Poder Judicial exhortado puede tomar su fecha hora local.
fechaOrigen: datetime | None = None

# observaciones: Texto simple que contenga información extra o relevante sobre el exhorto.
observaciones: str | None = None

# archivos: Colección de los datos correspondientes a los archivos recibidos del Exhorto
archivos: list[ExhExhortoArchivoIn] | None = None


class ExhExhortoOut(ExhExhortoIn):
"""Esquema para entregar exhortos"""

# folioSeguimiento: Folio de seguimiento generado para el Exhorto que recibió el Poder Judicial Exhortado
folioSeguimiento: str | None = None

# estadoDestinoId: Identificador del estado de destino del Exhorto
estadoDestinoId: int | None = None

# estadoDestinoNombre: Nombre del estado de destino del Exhorto
estadoDestinoNombre: str | None = None

# municipioDestinoNombre: Nombre del municipio de destino al que se envió el Exhorto
municipioDestinoNombre: str | None = None

# materiaNombre: Nombre de la materia
materiaNombre: str | None = None

# estadoOrigenNombre: Nombre del Estado de origen del Exhorto
estadoOrigenNombre: str | None = None

# municipioOrigenNombre: Nombre del municipio de origen del Juzgado/Área que envió el Exhorto
municipioOrigenNombre: str | None = None

# fechaHoraRecepcion: Fecha hora local en el que el Poder Judicial exhortado marca que se recibió el Exhorto.
fechaHoraRecepcion: datetime | None = None

# municipioTurnadoId: Identificador del municipio que corresponde al Juzgado/Área al que se turnó el Exhorto
municipioTurnadoId: int | None = None

# municipioTurnadoNombre: Nombre del municipio del Juzgado/Área al que se turnó el Exhorto
municipioTurnadoNombre: str | None = None

# areaTurnadoId: Identificador propio del Poder Judicial Exhortado que corresponde al Juzgado/Área al que se turna el
# Exhorto y hará el correspondiente proceso de este.
areaTurnadoId: str | None = None

# areaTurnadoNombre: Nombre del Juzgado/Área al Exhorto y hará el correspondiente proceso de este.
areaTurnadoNombre: str | None = None

# numeroExhorto: Número de Exhorto con el que se radica en el Juzgado/Área que se turnó el exhorto.
# Este número sirve para que el usuario pueda indentificar su exhorto dentro del Juzgado/Área donde se turnó.
numeroExhorto: str | None = None

# urlInfo: Contiene una URL para abrir una página con la información referente a la recepción del exhorto que se realizó.
# Esta página el Juzgado que envió el exhorto la puede imprimir como acuse de recibido y evidencia de que el exhorto fue
# enviado correctamente al Poder Judicial exhortado o también una página que muestre el estatus del exhorto.
urlInfo: str | None = None


Expand All @@ -156,66 +76,23 @@ class OneExhExhortoConfirmacionDatosExhortoRecibidoOut(OneBaseOut):
class ExhExhortoRecibirRespuestaIn(BaseModel):
"""Esquema para recibir la respuesta de un exhorto que el Juzgado envió previamente al PJ exhortante"""

# Identificador del Exhorto. Este dato es el identificador con el que el Poder Judicial exhortante identifica su exhorto,
# y el Poder Judicial exhortado recibe en en endpoint "Recibir Exhorto" en "exhortoOrigenId",
# ya que el exhorto se responde sobre el identificador del origen. Obligatorio y string.
exhortoId: str | None = None

# Identificador propio del Poder Judicial exhortado con el que identifica la respuesta del exhorto.
# Este dato puede ser un número consecutivo (ej "1", "2", "3"...), un GUID/UUID o
# cualquíer otro valor con que se identifique la respuesta. Obligatorio y string.
respuestaOrigenId: str | None = None

# Identificador del municipio que corresponde al Juzgado/Área al que se turnó el Exhorto y que realiza la respuesta de este.
# Obligatorio y entero.
municipioTurnadoId: int | None = None

# Identificador propio del Poder Judicial exhortado que corresponde al Juzgado/Área
# al que se turna el Exhorto y está respondiendo. Opcional y string.
areaTurnadoId: str | None = None

# Nombre del Juzgado/Área al que el Exhorto se turnó y está respondiendo. Obligatorio y string.
areaTurnadoNombre: str | None = None

# Número de Exhorto con el que se radicó en el Juzgado/Área que se turnó el exhorto.
# Este número sirve para que el usuario pueda indentificar su exhorto dentro del Juzgado/Área donde se turnó.
# Opcional y string.
numeroExhorto: str | None = None

# Valor que representa si se realizó la diligenciación del Exhorto:
# 0 = No Diligenciado
# 1 = Parcialmente Dilgenciado
# 2 = Diligenciado
# Obligatorio y entero.
tipoDiligenciado: int | None = None

# Texto simple referenta a alguna observación u observaciones correspondientes a la respuesta del Exhorto.
# Opcional y string.
observaciones: str | None = None

# Array/Colección de objetos de tipo ArchivoARecibir que corresponden a
# los archivos de los documentos de la respuesta del Exhorto. Obligatorio
archivos: list[ExhExhortoArchivoIn] | None = None

# Array/Colección de objetos de tipo VideoAcceso que representan los accesos a
# los videos de las audiencias que forman parte de la respuesta. Opcional
videos: list[ExhExhortoVideoIn] | None = None


class ExhExhortoRecibirRespuestaOut(BaseModel):
"""Respuesta de la operacion Recibir Respuesta Exhorto"""

# Identificador del Exhorto. Este dato es el identificador con el que el Poder Judicial exhortante identifica su exhorto,
# y el Poder Judicial exhortado recibe en en endpoint "Recibir Exhorto" en "exhortoOrigenId",
# ya que el exhorto se responde sobre el identificador del origen. Obligatorio y string.
exhortoId: str | None = None

# Identificador propio del Poder Judicial exhortado con el que identifica la respuesta del exhorto.
# Este dato puede ser un número consecutivo (ej "1", "2", "3"...),
# un GUID/UUID o cualquíer otro valor con que se identifique la respuesta. Obligatorio y string.
respuestaOrigenId: str | None = None

# Fecha hora local del Poder Judicial que recibe la respuesta del Exhorto. Obligatorio y datetime.
fechaHora: datetime | None = None


Expand Down
35 changes: 30 additions & 5 deletions carina/v4/exh_exhortos_actualizaciones/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,45 @@
Exh Exhortos Actualizaciones v4, esquemas de pydantic
"""

from pydantic import BaseModel
from datetime import datetime

from pydantic import BaseModel, ConfigDict

from lib.schemas_base import OneBaseOut


class ExhExhortoActualizacionIn(BaseModel):
"""Esquema para recibir actualizaciones de exhortos"""
"""Esquema para recibir actualizaciones"""

exhortoId: str | None = None
actualizacionOrigenId: str | None = None
tipoActualizacion: str | None = None
fechaHora: datetime | None = None
descripcion: str | None = None


class ExhExhortoActualizacionOut(ExhExhortoActualizacionIn):
"""Esquema para entregar actualizaciones"""

class ExhExhortoActualizacionOut(OneBaseOut):
"""Esquema para entregar actualizaciones de exhortos"""
id: int | None = None
model_config = ConfigDict(from_attributes=True)


class OneExhExhortoActualizacionOut(OneBaseOut):
"""Esquema para entregar una actualización de exhorto"""
"""Esquema para entregar una actualización"""

data: ExhExhortoActualizacionOut | None = None


class ExhExhortoConfirmacionActualizacionOut(BaseModel):
"""Esquema para entregar la respuesta a la actualización"""

exhortoId: str | None = None
actualizacionOrigenId: str | None = None
fechaHora: datetime | None = None


class OneExhExhortoConfirmacionActualizacionOut(OneBaseOut):
"""Esquema para entregar la respuesta a la actualización"""

data: ExhExhortoConfirmacionActualizacionOut | None = None
6 changes: 4 additions & 2 deletions carina/v4/exh_exhortos_archivos/crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
from lib.exceptions import MyIsDeletedError, MyNotExistsError


def get_exh_exhortos_archivos(database: Session, exh_exhorto_id: int, es_respuesta: bool = None) -> Any:
def get_exh_exhortos_archivos(database: Session, exh_exhorto_id: int, estado: str = None, es_respuesta: bool = None) -> Any:
"""Consultar los archivos de un exhorto"""
exh_exhorto = get_exh_exhorto(database, exh_exhorto_id)
consulta = database.query(ExhExhortoArchivo).filter_by(exh_exhorto_id=exh_exhorto.id)
if estado is not None:
consulta = consulta.filter_by(estado=estado)
if es_respuesta is not None:
return consulta.filter_by(es_respuesta=es_respuesta)
consulta = consulta.filter_by(es_respuesta=es_respuesta)
return consulta.filter_by(estatus="A").order_by(ExhExhortoArchivo.id)


Expand Down
19 changes: 13 additions & 6 deletions carina/v4/exh_exhortos_archivos/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ async def recibir_exhorto_archivo_request(
except MyAnyError as error:
return OneExhExhortoArchivoFileDataOut(
success=False,
message="Hubo un error nuestro al subir el archivo a Google Storage",
message="Hubo un error al subir el archivo al storage",
errors=[str(error)],
)

Expand All @@ -306,8 +306,15 @@ async def recibir_exhorto_archivo_request(
tamaño=archivo_pdf_tamanio,
)

# Si pendientes_contador + 1 = total_contador
if pendientes_contador + 1 >= total_contador:
# Consultar los archivos PENDIENTES del exhorto
exh_exhorto_archivos_pendientes = get_exh_exhortos_archivos(
database=database,
exh_exhorto_id=exh_exhorto.id,
estado="PENDIENTE",
)

# Si YA NO HAY pendientes, entonces se manda contenido en el acuse
if exh_exhorto_archivos_pendientes.count() == 0:
# Generar el folio_seguimiento
folio_seguimiento = generar_identificador()
# Entonces ES EL ULTIMO ARCHIVO, se cambia el estado de exh_exhorto a RECIBIDO
Expand All @@ -319,7 +326,7 @@ async def recibir_exhorto_archivo_request(
)
# Y se va a elaborar el acuse
acuse = ExhExhortoArchivoFileDataAcuseOut(
exhortoOrigenId=str(exh_exhorto_actualizado.exhorto_origen_id),
exhortoOrigenId=exh_exhorto_actualizado.exhorto_origen_id,
folioSeguimiento=folio_seguimiento,
fechaHoraRecepcion=fecha_hora_recepcion,
municipioAreaRecibeId=exh_exhorto_actualizado.municipio_destino_id,
Expand All @@ -328,9 +335,9 @@ async def recibir_exhorto_archivo_request(
urlInfo="https://www.google.com.mx",
)
else:
# Definir el acuse VACIO, porque aun faltan archivos
# Aún faltan archivos, entonces el acuse no lleva contenido
acuse = ExhExhortoArchivoFileDataAcuseOut(
exhortoOrigenId="",
exhortoOrigenId="xxxx",
folioSeguimiento="",
fechaHoraRecepcion=None,
municipioAreaRecibeId=1,
Expand Down
19 changes: 0 additions & 19 deletions carina/v4/exh_exhortos_archivos/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,7 @@ class OneExhExhortoArchivoFileDataOut(OneBaseOut):
class ExhExhortoArchivoRecibirRespuestaExhortoIn(BaseModel):
"""Petición que se va a hacer por cada archivo que se quiere enviar en la respuesta del Exhorto"""

# Identificador el exhorto que se originó en el Poder Judicial exhortante y
# que se envió en RecibirExhortoRequest como parte de los datos generales del Exhorto.
# Obligatorio y string.
exhortoId: str | None = None

# Identificador propio del Poder Judicial exhortado con el que identifica la respuesta del exhorto.
# Este dato puede ser un número consecutivo (ej "1", "2", "3"...), un GUID/UUID o
# cualquier otro valor con que se identifique la respuesta. Obligatorio y string.
respuestaOrigenId: str | None = None


Expand All @@ -91,27 +84,15 @@ class ExhExhortoArchivoRecibirRespuestaExhortoOut(ExhExhortoArchivoRecibirRespue
class ExhExhortoArchivoRecibirRespuestaExhortoDataAcuseOut(BaseModel):
"""Data Acuse"""

# Identificador del Exhorto que se orignió en el Poder Judicial exhortante,
# el que el Poder Judicial exhortado recibió en RecibirExhortoRequest.exhortoOrigenId
exhortoId: str | None = None

# Identificador de la respuesta del Exhorto que el Poder Judicial exhortado genera y
# con el que identifica el registro de la respuesta del Exhorto enviada o a enviar
respuestaOrigenId: str | None = None

# Fecha hora local en el que el Poder Judicial exhortante marca la Respuesta del Exhorto como recibida
fechaHoraRecepcion: datetime | None = None


class ExhExhortoArchivoRecibirRespuestaExhortoDataOut(BaseModel):
"""Respuesta de la operación de Recibir Respuesta Exhorto Archivo"""

# Contiene los datos del archivo recibido en el proceso
archivo: ExhExhortoArchivoFileDataArchivoOut | None = None

# Acuse de recepción de la Respuesta del Exhorto.
# Este dato se envía cuando se recibe el último archivo de la respuesta del exhorto;
# si todavía no se han subido todos los archivos, este dato se regresa como null.
acuse: ExhExhortoArchivoRecibirRespuestaExhortoDataAcuseOut | None = None


Expand Down
Loading

0 comments on commit 2f7489b

Please sign in to comment.