07. Portal Admin¶
Repositorio: aclimate_v3_admin Stack: HTML (49.4%), Python (41.9%), JavaScript (7.2%), Flask
Visión General¶
El portal admin es una aplicación web basada en Flask diseñada para administradores del sistema e investigadores para configurar y gestionar la plataforma AClimate. Mientras el frontend se enfoca en que los usuarios finales consuman datos climáticos, el portal admin es donde el sistema se configura, ajusta y mantiene.
Los administradores usan este portal para gestionar entidades geográficas (países, departamentos, municipios), configurar parámetros de cultivos y suelos, importar datos climáticos históricos y controlar el acceso de usuarios y permisos en todo el sistema.
Stack Tecnológico¶
El portal está construido con Flask como framework web, usando plantillas Jinja2 para el renderizado del lado del servidor. Los formularios se construyen con WTForms para validación y protección CSRF. La autenticación se maneja mediante integración OAuth con Keycloak, y el portal se comunica con la WebAPI a través de un cliente API dedicado. La interfaz soporta traducciones en inglés y español usando Flask-Babel, con scripts de gestión de traducciones incluidos en el repositorio.
Estructura de la Aplicación¶
La aplicación sigue el patrón MVC de Flask con rutas, formularios, servicios y plantillas organizados por entidad:
- Rutas: 27 archivos de rutas, uno por entidad, manejando operaciones CRUD
- Formularios: 24 definiciones de WTForm con validación de campos
- Servicios: 7 módulos de servicios para lógica de negocio (auth, usuarios, roles, API Keycloak, OAuth, importación de ubicaciones, grupos)
- Plantillas: Directorios de plantillas Jinja2 para cada entidad, cada uno con vistas de lista, detalle, creación y edición
- Traducciones: Catálogos de traducción Babel para inglés y español
- Decoradores: Decoradores de autenticación y control de permisos
Control de Acceso¶
El portal implementa un sistema de control de acceso de dos capas. Primero, la autenticación se maneja mediante OAuth de Keycloak, donde los usuarios inician sesión con sus credenciales de Keycloak. Segundo, un sistema de decoradores de permisos controla el acceso a rutas específicas basado en los roles de usuario. Esto asegura que solo administradores autorizados puedan modificar las configuraciones del sistema.
Internacionalización¶
El portal admin soporta inglés y español mediante traducciones Flask-Babel. Los archivos de traducción se gestionan a través de scripts dedicados incluidos en el repositorio:
update_translations_dev.ps1yupdate_translations.shpara extraer y actualizar los catálogos de traducciónsrc/translations/en_US/ysrc/translations/es_CO/contienen los archivos de traducción reales
Secciones¶
- Configuración Geográfica — Países, divisiones administrativas y gestión de estaciones meteorológicas
- Configuración de Producción — Cultivos, cultivares, suelos, temporadas y parámetros de configuración
- Configuración de Clima — Medidas climáticas, indicadores, categorías y características
- Fenología y Estrés — Etapas fenológicas y definiciones de factores de estrés
- Fuentes de Datos e Importación — Fuentes de datos externas e importación de datos de ubicaciones
- Gestión de Usuarios y Roles — Cuentas de usuario, roles e integración con Keycloak