Frontend de RRHH Personal hecho con Flask
Los requerimientos son
- Python 3.11
- PostgreSQL 15
- Redis
Crear el entorno virtual
python3.11 -m venv .venv
Ingresar al entorno virtual
source venv/bin/activate
Actualizar el gestor de paquetes pip
pip install --upgrade pip
Instalar el paquete wheel para compilar las dependencias
pip install wheel
Instalar poetry en el entorno virtual si no lo tiene desde el sistema operativo
pip install poetry
Configurar poetry para que use el entorno virtual dentro del proyecto
poetry config virtualenvs.in-project true
Instalar las dependencias por medio de poetry
poetry install
Crear un archivo .env
en la raíz del proyecto con las variables de entorno.
# Flask, para SECRET_KEY use openssl rand -hex 24
FLASK_APP=orion.app
FLASK_DEBUG=1
SECRET_KEY=XXXXXXXX
# Base de datos
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=pjecz_rrhh_personal
DB_USER=adminpjeczrrhhpersonal
DB_PASS=XXXXXXXX
SQLALCHEMY_DATABASE_URI="postgresql+psycopg2://adminpjeczrrhhpersonal:[email protected]:5432/pjecz_rrhh_personal"
# Google Cloud Storage
CLOUD_STORAGE_DEPOSITO=
# Host
HOST=http://127.0.0.1:5000
# Redis
REDIS_URL=redis://127.0.0.1:6379
TASK_QUEUE=pjecz_orion
# Salt sirve para cifrar el ID con HashID, debe ser igual en la API
SALT=XXXXXXXX
# Si esta en PRODUCTION se evita reiniciar la base de datos
DEPLOYMENT_ENVIRONMENT=develop
# Google AI Studio
AI_STUDIO_API_KEY=
Crear un archivo .bashrc
que se ejecute al iniciar la terminal.
if [ -f ~/.bashrc ]
then
. ~/.bashrc
fi
if command -v figlet &> /dev/null
then
figlet Orion Flask
else
echo "== Orion Flask"
fi
echo
if [ -f .env ]
then
echo "-- Variables de entorno"
# export $(grep -v '^#' .env | xargs)
source .env && export $(sed '/^#/d' .env | cut -d= -f1)
echo " CLOUD_STORAGE_DEPOSITO: ${CLOUD_STORAGE_DEPOSITO}"
echo " DB_HOST: ${DB_HOST}"
echo " DB_PORT: ${DB_PORT}"
echo " DB_NAME: ${DB_NAME}"
echo " DB_USER: ${DB_USER}"
echo " DB_PASS: ${DB_PASS}"
echo " DEPLOYMENT_ENVIRONMENT: ${DEPLOYMENT_ENVIRONMENT}"
echo " FLASK_APP: ${FLASK_APP}"
echo " HOST: ${HOST}"
echo " REDIS_URL: ${REDIS_URL}"
echo " SALT: ${SALT}"
echo " SECRET_KEY: ${SECRET_KEY}"
echo " SQLALCHEMY_DATABASE_URI: ${SQLALCHEMY_DATABASE_URI}"
echo " TASK_QUEUE: ${TASK_QUEUE}"
echo
export PGHOST=$DB_HOST
export PGPORT=$DB_PORT
export PGDATABASE=$DB_NAME
export PGUSER=$DB_USER
export PGPASSWORD=$DB_PASS
fi
if [ -d .venv ]
then
echo "-- Python Virtual Environment"
source .venv/bin/activate
echo " $(python3 --version)"
export PYTHONPATH=$(pwd)
echo " PYTHONPATH: ${PYTHONPATH}"
echo
echo "-- Poetry"
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
echo " $(poetry --version)"
echo
if [ -f cli/app.py ]
then
echo "-- Ejecutar el CLI"
alias cli="python3 ${PWD}/cli/app.py"
echo " cli --help"
echo
fi
echo "-- Flask 127.0.0.1:5000"
alias arrancar="flask run --port=5000"
echo " arrancar = flask run --port=5000"
echo
echo "-- RQ Worker ${TASK_QUEUE}"
alias fondear="rq worker ${TASK_QUEUE}"
echo " fondear"
echo
fi
if [ -f .github/workflows/gcloud-app-deploy.yaml ]
then
echo "-- Si cambia pyproject.toml reconstruya requirements.txt para el deploy en GCP via GitHub Actions"
echo " poetry export -f requirements.txt --output requirements.txt --without-hashes"
echo
fi
Antes de usar el CLI o de arrancar el servidor de Flask debe cargar las variables de entorno y el entorno virtual.
source .bashrc
Tendrá el alias al Command Line Interface
cli --help
Para hacer tareas en el fondo, abrir una terminal, cargar source .bashrc
y ejecutar
fondear
Para lanzar el front-end Flask, abrir una terminal, cargar source .bashrc
y ejecutar
arrancar