From 792c4e0d5aecdcc941adbb0c5d19c90fc118320d Mon Sep 17 00:00:00 2001 From: RicVal Date: Thu, 25 Apr 2024 11:23:10 -0600 Subject: [PATCH 1/2] List y Detail para estados --- .../estados/templates/estados/detail.jinja2 | 23 ++++++ .../estados/templates/estados/list.jinja2 | 78 +++++++++++++++++++ plataforma_web/blueprints/estados/views.py | 6 +- 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 plataforma_web/blueprints/estados/templates/estados/detail.jinja2 create mode 100644 plataforma_web/blueprints/estados/templates/estados/list.jinja2 diff --git a/plataforma_web/blueprints/estados/templates/estados/detail.jinja2 b/plataforma_web/blueprints/estados/templates/estados/detail.jinja2 new file mode 100644 index 00000000..acd1a3fe --- /dev/null +++ b/plataforma_web/blueprints/estados/templates/estados/detail.jinja2 @@ -0,0 +1,23 @@ +{% extends 'layouts/app.jinja2' %} +{% import 'macros/detail.jinja2' as detail %} +{% import 'macros/modals.jinja2' as modals %} +{% import 'macros/topbar.jinja2' as topbar %} + +{% block title %}Estado{% endblock %} + +{% block topbar_actions %} + {% call topbar.page_buttons(estado.nombre) %} + {{ topbar.button_previous('Estados', url_for('estados.list_active')) }} + {% endcall %} +{% endblock %} + +{% block content %} + {% call detail.card(estatus=estado.estatus) %} + {{ detail.label_value('Clave', estado.clave) }} + {{ detail.label_value('Nombre', estado.nombre) }} + {{ detail.label_value('Fecha de creación', estado.creado.strftime('%Y-%m-%d %H:%M')) }} + {% endcall %} +{% endblock %} + +{% block custom_javascript %} +{% endblock %} diff --git a/plataforma_web/blueprints/estados/templates/estados/list.jinja2 b/plataforma_web/blueprints/estados/templates/estados/list.jinja2 new file mode 100644 index 00000000..a6a73851 --- /dev/null +++ b/plataforma_web/blueprints/estados/templates/estados/list.jinja2 @@ -0,0 +1,78 @@ +{% extends 'layouts/app.jinja2' %} +{% import 'macros/list.jinja2' as list %} +{% import 'macros/topbar.jinja2' as topbar %} + +{% block title %}Estados{% endblock %} + +{% block topbar_actions %} + {% call topbar.page_buttons(titulo) %} + {% endcall %} +{% endblock %} + +{% block content %} + {% call list.card() %} + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+
+
+ + + + + + + + +
ClavesNombres
+ {% endcall %} +{% endblock %} + +{% block custom_javascript %} + + + + +{% endblock %} diff --git a/plataforma_web/blueprints/estados/views.py b/plataforma_web/blueprints/estados/views.py index 84f512f7..0963fc6e 100644 --- a/plataforma_web/blueprints/estados/views.py +++ b/plataforma_web/blueprints/estados/views.py @@ -7,7 +7,7 @@ from flask_login import current_user, login_required from lib.datatables import get_datatable_parameters, output_datatable_json -from lib.safe_string import safe_string, safe_message +from lib.safe_string import safe_string from plataforma_web.blueprints.bitacoras.models import Bitacora from plataforma_web.blueprints.modulos.models import Modulo @@ -38,6 +38,10 @@ def datatable_json(): consulta = consulta.filter_by(estatus=request.form["estatus"]) else: consulta = consulta.filter_by(estatus="A") + if "clave" in request.form: + consulta = consulta.filter_by(clave=safe_string(request.form["clave"])) + if "nombre" in request.form: + consulta = consulta.filter(Estado.nombre.contains(safe_string(request.form["nombre"]))) registros = consulta.order_by(Estado.id).offset(start).limit(rows_per_page).all() total = consulta.count() # Elaborar datos para DataTable From 2a62e6bc42d680ba5208f2ea40d9e38ba1fa1bad Mon Sep 17 00:00:00 2001 From: RicVal Date: Thu, 25 Apr 2024 11:55:11 -0600 Subject: [PATCH 2/2] Detalle y listado de Municipios --- .../templates/municipios/detail.jinja2 | 25 +++++ .../templates/municipios/list.jinja2 | 96 +++++++++++++++++++ plataforma_web/blueprints/municipios/views.py | 15 ++- 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 plataforma_web/blueprints/municipios/templates/municipios/detail.jinja2 create mode 100644 plataforma_web/blueprints/municipios/templates/municipios/list.jinja2 diff --git a/plataforma_web/blueprints/municipios/templates/municipios/detail.jinja2 b/plataforma_web/blueprints/municipios/templates/municipios/detail.jinja2 new file mode 100644 index 00000000..f250a7ce --- /dev/null +++ b/plataforma_web/blueprints/municipios/templates/municipios/detail.jinja2 @@ -0,0 +1,25 @@ +{% extends 'layouts/app.jinja2' %} +{% import 'macros/detail.jinja2' as detail %} +{% import 'macros/modals.jinja2' as modals %} +{% import 'macros/topbar.jinja2' as topbar %} + +{% block title %}Municipio{% endblock %} + +{% block topbar_actions %} + {% call topbar.page_buttons(municipio.nombre) %} + {{ topbar.button_previous('Municipios', url_for('municipios.list_active')) }} + {% endcall %} +{% endblock %} + +{% block content %} + {% call detail.card(estatus=municipio.estatus) %} + {{ detail.label_value('Clave del Municipio', municipio.clave) }} + {{ detail.label_value('Nombre del Muncipio', municipio.nombre) }} + {{ detail.label_value('Clave del Estado', municipio.estado.clave) }} + {{ detail.label_value('Nombre del Estado', municipio.estado.nombre) }} + {{ detail.label_value('Fecha de creación', municipio.creado.strftime('%Y-%m-%d %H:%M')) }} + {% endcall %} +{% endblock %} + +{% block custom_javascript %} +{% endblock %} diff --git a/plataforma_web/blueprints/municipios/templates/municipios/list.jinja2 b/plataforma_web/blueprints/municipios/templates/municipios/list.jinja2 new file mode 100644 index 00000000..447cb997 --- /dev/null +++ b/plataforma_web/blueprints/municipios/templates/municipios/list.jinja2 @@ -0,0 +1,96 @@ +{% extends 'layouts/app.jinja2' %} +{% import 'macros/list.jinja2' as list %} +{% import 'macros/topbar.jinja2' as topbar %} + +{% block title %}Municipios{% endblock %} + +{% block topbar_actions %} + {% call topbar.page_buttons(titulo) %} + {% endcall %} +{% endblock %} + +{% block content %} + {% call list.card() %} + +
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+
+
+ + + + + + + + + + +
Claves del MunicipioNombres de los MunicipiosClaves de EstadosEstados
+ {% endcall %} +{% endblock %} + +{% block custom_javascript %} + + + + +{% endblock %} diff --git a/plataforma_web/blueprints/municipios/views.py b/plataforma_web/blueprints/municipios/views.py index e46c50e8..74c8971c 100644 --- a/plataforma_web/blueprints/municipios/views.py +++ b/plataforma_web/blueprints/municipios/views.py @@ -14,6 +14,7 @@ from plataforma_web.blueprints.permisos.models import Permiso from plataforma_web.blueprints.usuarios.decorators import permission_required from plataforma_web.blueprints.municipios.models import Municipio +from plataforma_web.blueprints.estados.models import Estado MODULO = "MUNICIPIOS" @@ -38,6 +39,16 @@ def datatable_json(): consulta = consulta.filter_by(estatus=request.form["estatus"]) else: consulta = consulta.filter_by(estatus="A") + if "municipio_clave" in request.form: + consulta = consulta.filter_by(clave=safe_string(request.form["municipio_clave"])) + if "municipio_nombre" in request.form: + consulta = consulta.filter(Municipio.nombre.contains(safe_string(request.form["municipio_nombre"]))) + if {"estado_clave", "estado_nombre"}.intersection(request.form): + consulta = consulta.join(Estado) + if "estado_clave" in request.form: + consulta = consulta.filter(Estado.clave==safe_string(request.form["estado_clave"])) + if "estado_nombre" in request.form: + consulta = consulta.filter(Estado.nombre.contains(safe_string(request.form["estado_nombre"]))) registros = consulta.order_by(Municipio.id).offset(start).limit(rows_per_page).all() total = consulta.count() # Elaborar datos para DataTable @@ -49,7 +60,9 @@ def datatable_json(): "clave": resultado.clave, "url": url_for("municipios.detail", municipio_id=resultado.id), }, - "nombre": resultado.nombre, + "municipio_nombre": resultado.nombre, + "estado_clave": resultado.estado.clave, + "estado_nombre": resultado.estado.nombre, } ) # Entregar JSON