What problem are we trying to solve?
The Assignment Management API fue diseñado para optimizar las diferentes asignaciones que se producen durante el cuatrimestre de la cursada.
Ademas, a través de sus diferentes endpoints se puede crear cuatrimestres, crear grupos, realizar seguimiento, enviar notificaciones por mail y mucho mas
Posee tres asignaciones principales
Para realizar estas asignaciones, se utilizan algoritmos de programacion lineal y redes de flujo.
Es necesario para este proyecto, tener instalado Python 3.11.*
y Poetry (version 1.8.3)
para un correcto manejo de dependencias y entornos virtuales.
Podes instalar python en el siguiente link
Para las dependencias del projecto se utiliza Poetry .
Segui las intrucciones para saber si instalaste correctamente la herramienta
$ poetry --version
Poetry (version 1.8.3)
Poetry crea un entorno virtual donde maneja todas las dependencias, esto evita que las instalemos en nuestra computadora y tengamos problemas con las versiones. Debido a que estamos usando un entorno virtual, el interprete de python tiene que ser cambiado para ejecutar comandos de poetry sin invocar poetry
Si estas usando vscode
como editor de texto, te recomentamos cambiar el interpreter de python
Y seleccionando el python que se encuentra de el entorno virtual de poetry.
De esta manera, ya dentro del entorno virtual podras correr pytest
en vez de poetry run pytest
A la hora de desarrollar, es necesario mantener una consistencia, para eso hemos realizado unos code guidelines que proponen una
Es necesario descargar los archivos .env.development
verificando que este consistente con .env.example
. Los desarrolladores deberian tener las credenciales
Para correr el servicio de backend unsando Docker
docker compose -f docker-compose.dev.yml up --build -d
--build is for build the images (not always necessary)
and
docker compose -f docker-compose.dev.yml down -v
-v remove volumes (not always necessary)
Notice: Tenes que tener instalado docker
para poder levantar una imagen de PostgresSQL
# if you want to start a postgres db using Docker
.\InitTestDatabase.ps1
# if you want to stop the db
.\InitTestDatabase.ps1 -StopDatabase
Asegurate de que el contenedor de PostgreSQL este en funcionamiento de antemano, ya que las pruebas de integracion requieren acceso a la base de datos PostgreSQL.
poetry run pytest or just pytest if env is activated.
Para formatear nuestro código, el equipo eligió usar black. Para formatear el código usando Poetry, ejecuta el siguiente comando en tu terminal:
poetry run black . or just black . if env is activated.
Para validar que el formato es el esperado
poetry run flake8 or just flake8 is env is activated.
Esta seccion se puede encontrar en Migrations
Los despiegues de los entornos de staging
y prod
se encuentran en Microsoft Azure. En el tenemos dos servidores de linux
ASP-fiubatpp-8afd Es lo que conocemos como prod
.Posee 2 aplicaciones y actualmente corre en un pricing plan de P0v3.
test-linux Es lo que conocemos como staging
.Posee 1 aplicacion y actualmente corre en un pricing plan de F1(Free Tier).
Primero en una terminal linux, como puede ser Git bash
corremos el comando
sed -i -e 's/\r$//' start_app.sh
Esto lo corremos porque si estamos trabajando con Windows, git cambia los LF -> CRLF,
Luego creamos la carpeta de Build ejecutando el Powershell
.\MakeDeploymentFolder.ps1 -Enviroment staging|prod
Una vez que la carpeta se cree deployamos (Actualmente el proceso es manual por el plan de subscripcion que se tiene). Utilizando el plugin de Azure
Seleccionamos el App Service correspondiente
Deploy Web App y elegimos la carpeta Build