Saltar a contenido

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.ps1 y update_translations.sh para extraer y actualizar los catálogos de traducción
  • src/translations/en_US/ y src/translations/es_CO/ contienen los archivos de traducción reales

Secciones