Esta aplicación está diseñada para gestionar registros de infracciones de tránsito. Incluye una interfaz administrativa para manejar registros de personas, vehículos y oficiales. Adicionalmente, proporciona APIs para que los oficiales de policía registren infracciones y para consultar infracciones asociadas al correo electrónico de una persona.
Docker
Docker Compose
git clone
cd my-project
El proyecto ya tiene incluido un archivo .env de ejemplo, renombra de .env.template a .env
Si tienes docker corriendo, ejecuta el siguiente comando para inicializar el proyecto
docker-compose up --build
Una vez inicializado el proyecto, necesitaras ejecutar las migraciones Flask para instalar los datos de ejemplo.
docker-compose run web flask db upgrade
Usando flask-admin. La aplicación web tiene disponible una interfaz administrativa para gestionar registros de personas, vehículos y oficiales. Para esta demostración, no user/password es necesario para acceder.
http://localhost:5050/admin
Esta aplicación utiliza un sistema de autenticación basado en tokens para asegurar sus endpoints. El sistema de autenticación se basa en JSON Web Tokens (JWT) para verificar la identidad de los usuarios (oficiales). El badge_number de un oficial se utiliza como identidad dentro del token JWT. Este README explicará cómo funciona el sistema de tokens y cómo generar un nuevo token utilizando Flask-Admin.
Para generar un nuevo token desde Flask-Admin, sigue estos pasos:
- Abre Flask-Admin y navega a la vista de oficiales.
- Al crear o editar un oficial, el token JWT se generará automáticamente utilizando el badge_number del oficial.
- Puedes ver en la lista de oficiales, los token de cada oficial necesarios para autenticación del API.
POST /api/cargar_infraccion
Headers: Authorization: Bearer <token> (api_key del oficial)
Body:
{
"license_plate": "placa_del_vehiculo",
"timestamp": "marca_de_tiempo_de_la_infraccion",
"comments": "comentarios_libres"
}
No necesita Authorization
GET /api/generar_informe
Parameter | Type | Description |
---|---|---|
email |
string |
Required. Email para filtrar infracciones |
Ejecutar el siguiente comando de docker-compose para ejecutar 2 TestCase incluidos en el proyecto
docker-compose run -e FLASK_ENV=testing web pytest tests/test_infractions.py
docker-compose run -e FLASK_ENV=testing web pytest tests/test_reports.py
Ambos TestCases usan un entorno de pruebas con sqlite para los datos temporales.