Skip to content

Commit

Permalink
Merge pull request #7 from guivaloz/guivaloz/edictos-listas-de-acuerd…
Browse files Browse the repository at this point in the history
…os-web

Mejoras en todo
  • Loading branch information
guivaloz authored Feb 3, 2025
2 parents e63e006 + 6c7d7ed commit a2ee04b
Show file tree
Hide file tree
Showing 54 changed files with 1,104 additions and 234 deletions.
4 changes: 2 additions & 2 deletions pjecz_hercules_api_oauth2/dependencies/authentications.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from sqlalchemy.exc import MultipleResultsFound, NoResultFound

from ..models.usuarios import Usuario
from ..schemas.usuario import UsuarioInDB
from ..schemas.usuarios import UsuarioInDB
from ..settings import Settings, get_settings
from .database import Session, get_db
from .exceptions import MyAnyError, MyAuthenticationError, MyIsDeletedError, MyNotExistsError, MyNotValidParamError
Expand Down Expand Up @@ -94,7 +94,7 @@ def decode_token(token: str, settings: Settings) -> dict:
return payload


async def get_current_user(
async def get_current_active_user(
database: Annotated[Session, Depends(get_db)],
settings: Annotated[Settings, Depends(get_settings)],
token: Annotated[str, Depends(oauth2_scheme)],
Expand Down
10 changes: 9 additions & 1 deletion pjecz_hercules_api_oauth2/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from .dependencies.exceptions import MyAnyError
from .routers.autoridades import autoridades
from .routers.distritos import distritos
from .routers.edictos import edictos
from .routers.listas_de_acuerdos import listas_de_acuerdos
from .routers.materias import materias
from .routers.materias_tipos_juicios import materias_tipos_juicios
from .routers.modulos import modulos
Expand All @@ -21,7 +23,9 @@
from .routers.sentencias import sentencias
from .routers.usuarios import usuarios
from .routers.usuarios_roles import usuarios_roles
from .schemas.usuario import Token
from .routers.web_paginas import web_paginas
from .routers.web_ramas import web_ramas
from .schemas.usuarios import Token
from .settings import Settings, get_settings

# FastAPI
Expand All @@ -35,6 +39,8 @@
# Rutas
app.include_router(autoridades)
app.include_router(distritos)
app.include_router(edictos)
app.include_router(listas_de_acuerdos)
app.include_router(materias)
app.include_router(materias_tipos_juicios)
app.include_router(modulos)
Expand All @@ -43,6 +49,8 @@
app.include_router(sentencias)
app.include_router(usuarios)
app.include_router(usuarios_roles)
app.include_router(web_paginas)
app.include_router(web_ramas)

# Paginación
add_pagination(app)
Expand Down
19 changes: 18 additions & 1 deletion pjecz_hercules_api_oauth2/models/autoridades.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ class Autoridad(Base, UniversalMixin):
directorio_sentencias: Mapped[str] = mapped_column(String(256))

# Hijos
edictos: Mapped[List["Edicto"]] = relationship("Edicto", back_populates="autoridad")
listas_de_acuerdos: Mapped[List["ListaDeAcuerdo"]] = relationship("ListaDeAcuerdo", back_populates="autoridad")
sentencias: Mapped[List["Sentencia"]] = relationship("Sentencia", back_populates="autoridad")
usuarios: Mapped[List["Usuario"]] = relationship("Usuario", back_populates="autoridad")

Expand All @@ -63,11 +65,26 @@ def distrito_clave(self):
"""Clave del distrito"""
return self.distrito.clave

@property
def distrito_nombre(self):
"""Nombre del distrito"""
return self.distrito.nombre

@property
def distrito_nombre_corto(self):
"""Nombre corto del distrito"""
return self.distrito.nombre_corto

@property
def materia_clave(self):
"""Clave de la materia"""
return self.materia.clave

@property
def materia_nombre(self):
"""Nombre de la materia"""
return self.materia.nombre

def __repr__(self):
"""Representación"""
return f"<Autoridad {self.nombre}>"
return f"<Autoridad {self.clave}>"
2 changes: 1 addition & 1 deletion pjecz_hercules_api_oauth2/models/distritos.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ class Distrito(Base, UniversalMixin):

def __repr__(self):
"""Representación"""
return f"<Distrito {self.nombre}>"
return f"<Distrito {self.clave}>"
77 changes: 77 additions & 0 deletions pjecz_hercules_api_oauth2/models/edictos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""
Edictos, modelos
"""

from datetime import date, datetime
from typing import Optional

from sqlalchemy import JSON, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from ..dependencies.database import Base
from ..dependencies.universal_mixin import UniversalMixin


class Edicto(Base, UniversalMixin):
"""Edicto"""

# Nombre de la tabla
__tablename__ = "edictos"

# Clave primaria
id: Mapped[int] = mapped_column(primary_key=True)

# Clave foránea
autoridad_id: Mapped[int] = mapped_column(ForeignKey("autoridades.id"))
autoridad: Mapped["Autoridad"] = relationship(back_populates="edictos")

# Columnas
fecha: Mapped[date] = mapped_column(index=True)
descripcion: Mapped[str] = mapped_column(String(256))
expediente: Mapped[str] = mapped_column(String(16))
numero_publicacion: Mapped[str] = mapped_column(String(16))
archivo: Mapped[str] = mapped_column(String(256), default="")
url: Mapped[str] = mapped_column(String(512), default="")
es_declaracion_de_ausencia: Mapped[bool] = mapped_column(default=False)

# Columnas para Retrieval-Augmented Generation (RAG)
rag_fue_analizado_tiempo: Mapped[Optional[datetime]]
rag_analisis: Mapped[Optional[dict]] = mapped_column(JSON)
rag_fue_sintetizado_tiempo: Mapped[Optional[datetime]]
rag_sintesis: Mapped[Optional[dict]] = mapped_column(JSON)
rag_fue_categorizado_tiempo: Mapped[Optional[datetime]]
rag_categorias: Mapped[Optional[dict]] = mapped_column(JSON)

@property
def distrito_clave(self):
"""Distrito clave"""
return self.autoridad.distrito.clave

@property
def distrito_nombre(self):
"""Distrito nombre"""
return self.autoridad.distrito.nombre

@property
def distrito_nombre_corto(self):
"""Distrito nombre corto"""
return self.autoridad.distrito.nombre_corto

@property
def autoridad_clave(self):
"""Autoridad clave"""
return self.autoridad.clave

@property
def autoridad_descripcion(self):
"""Autoridad descripción"""
return self.autoridad.descripcion

@property
def autoridad_descripcion_corta(self):
"""Autoridad descripción corta"""
return self.autoridad.descripcion_corta

def __repr__(self):
"""Representación"""
return f"<Edicto {self.id}>"
74 changes: 74 additions & 0 deletions pjecz_hercules_api_oauth2/models/listas_de_acuerdos.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""
Listas de Acuerdos, modelos
"""

from datetime import date, datetime
from typing import Optional

from sqlalchemy import JSON, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from ..dependencies.database import Base
from ..dependencies.universal_mixin import UniversalMixin


class ListaDeAcuerdo(Base, UniversalMixin):
"""ListaDeAcuerdo"""

# Nombre de la tabla
__tablename__ = "listas_de_acuerdos"

# Clave primaria
id: Mapped[int] = mapped_column(primary_key=True)

# Clave foránea
autoridad_id: Mapped[int] = mapped_column(ForeignKey("autoridades.id"))
autoridad: Mapped["Autoridad"] = relationship(back_populates="listas_de_acuerdos")

# Columnas
fecha: Mapped[date] = mapped_column(index=True)
descripcion: Mapped[str] = mapped_column(String(256))
archivo: Mapped[str] = mapped_column(String(256), default="")
url: Mapped[str] = mapped_column(String(512), default="")

# Columnas para Retrieval-Augmented Generation (RAG)
rag_fue_analizado_tiempo: Mapped[Optional[datetime]]
rag_analisis: Mapped[Optional[dict]] = mapped_column(JSON)
rag_fue_sintetizado_tiempo: Mapped[Optional[datetime]]
rag_sintesis: Mapped[Optional[dict]] = mapped_column(JSON)
rag_fue_categorizado_tiempo: Mapped[Optional[datetime]]
rag_categorias: Mapped[Optional[dict]] = mapped_column(JSON)

@property
def distrito_clave(self):
"""Distrito clave"""
return self.autoridad.distrito.clave

@property
def distrito_nombre(self):
"""Distrito nombre"""
return self.autoridad.distrito.nombre

@property
def distrito_nombre_corto(self):
"""Distrito nombre corto"""
return self.autoridad.distrito.nombre_corto

@property
def autoridad_clave(self):
"""Autoridad clave"""
return self.autoridad.clave

@property
def autoridad_descripcion(self):
"""Autoridad descripción"""
return self.autoridad.descripcion

@property
def autoridad_descripcion_corta(self):
"""Autoridad descripción corta"""
return self.autoridad.descripcion_corta

def __repr__(self):
"""Representación"""
return f"<ListaDeAcuerdo {self.id}>"
2 changes: 1 addition & 1 deletion pjecz_hercules_api_oauth2/models/materias.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,4 @@ class Materia(Base, UniversalMixin):

def __repr__(self):
"""Representación"""
return f"<Materia {self.nombre}>"
return f"<Materia {self.clave}>"
2 changes: 1 addition & 1 deletion pjecz_hercules_api_oauth2/models/materias_tipos_juicios.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ def materia_nombre(self):

def __repr__(self):
"""Representación"""
return f"<MateriaTipoJuicio {self.nombre}>"
return f"<MateriaTipoJuicio {self.id}>"
15 changes: 5 additions & 10 deletions pjecz_hercules_api_oauth2/models/sentencias.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class Sentencia(Base, UniversalMixin):
expediente: Mapped[str] = mapped_column(String(16))
expediente_anio: Mapped[int]
expediente_num: Mapped[int]
fecha: Mapped[date] = mapped_column(Date(), index=True)
fecha: Mapped[date] = mapped_column(index=True)
descripcion: Mapped[str] = mapped_column(String(1024))
es_perspectiva_genero: Mapped[bool] = mapped_column(default=False)
archivo: Mapped[str] = mapped_column(String(256), default="", server_default="")
Expand All @@ -47,11 +47,6 @@ class Sentencia(Base, UniversalMixin):
rag_fue_categorizado_tiempo: Mapped[Optional[datetime]]
rag_categorias: Mapped[Optional[dict]] = mapped_column(JSON)

@property
def distrito_id(self):
"""Distrito ID"""
return self.autoridad.distrito_id

@property
def distrito_clave(self):
"""Distrito clave"""
Expand Down Expand Up @@ -83,9 +78,9 @@ def autoridad_descripcion_corta(self):
return self.autoridad.descripcion_corta

@property
def materia_id(self):
"""Materia ID"""
return self.materia_tipo_juicio.materia_id
def materia_clave(self):
"""Clave de la materia"""
return self.materia_tipo_juicio.materia.clave

@property
def materia_nombre(self):
Expand All @@ -99,4 +94,4 @@ def materia_tipo_juicio_descripcion(self):

def __repr__(self):
"""Representación"""
return f"<Sentencia {self.nombre}>"
return f"<Sentencia {self.id}>"
50 changes: 50 additions & 0 deletions pjecz_hercules_api_oauth2/models/web_paginas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
"""
Web Páginas, modelos
"""

from datetime import date, datetime
from typing import Optional

from sqlalchemy import Enum, ForeignKey, String, Text
from sqlalchemy.orm import Mapped, mapped_column, relationship

from ..dependencies.database import Base
from ..dependencies.universal_mixin import UniversalMixin


class WebPagina(Base, UniversalMixin):
"""WebPagina"""

ESTADOS = {
"BORRADOR": "BORRADOR",
"PUBLICAR": "PUBLICAR",
"ARCHIVAR": "ARCHIVAR",
}

# Nombre de la tabla
__tablename__ = "web_paginas"

# Clave primaria
id: Mapped[int] = mapped_column(primary_key=True)

# Clave foránea
web_rama_id: Mapped[int] = mapped_column(ForeignKey("web_ramas.id"))
web_rama: Mapped["WebRama"] = relationship(back_populates="web_paginas")

# Columnas
clave: Mapped[str] = mapped_column(String(16), unique=True)
titulo: Mapped[str] = mapped_column(String(256))
resumen: Mapped[Optional[str]] = mapped_column(String(1024))
ruta: Mapped[str] = mapped_column(String(256))
fecha_modificacion: Mapped[date]
responsable: Mapped[Optional[str]] = mapped_column(String(256))
etiquetas: Mapped[Optional[str]] = mapped_column(String(256))
vista_previa: Mapped[Optional[str]] = mapped_column(String(256))
contenido: Mapped[str] = mapped_column(Text)
estado: Mapped[str] = mapped_column(Enum(*ESTADOS, name="web_paginas_estados", native_enum=False), index=True)
tiempo_publicar: Mapped[Optional[datetime]]
tiempo_archivar: Mapped[Optional[datetime]]

def __repr__(self):
"""Representación"""
return f"<WebPagina clave {self.clave}>"
32 changes: 32 additions & 0 deletions pjecz_hercules_api_oauth2/models/web_ramas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""
Web Ramas, modelos
"""

from typing import List

from sqlalchemy import String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from ..dependencies.database import Base
from ..dependencies.universal_mixin import UniversalMixin


class WebRama(Base, UniversalMixin):
"""WebRama"""

# Nombre de la tabla
__tablename__ = "web_ramas"

# Clave primaria
id: Mapped[int] = mapped_column(primary_key=True)

# Columnas
clave: Mapped[str] = mapped_column(String(16), unique=True)
nombre: Mapped[str] = mapped_column(String(256))

# Hijos
web_paginas: Mapped[List["WebPagina"]] = relationship("WebPagina", back_populates="web_rama")

def __repr__(self):
"""Representación"""
return f"<WebUnidad {self.clave}>"
Loading

0 comments on commit a2ee04b

Please sign in to comment.