Skip to main content

Instalación con Python

La instalación y ejecución del proyecto mediante Python se hace siguiendo la instalación normal de un proyecto de Django.

Requerimientos

  • Python version >= 3.8.5 ó mayor (se puede chequear corriendo el comando python --version).
Cuidado

Normalmente Python instala el manejador de paquetes pip automáticamente. En caso contrario es necesario la instalación de este manejador. Para chequear si tiene este manejador instalado puede usar el comando pip --version.

  • Virtualenv version >= 20.8.0 ó mayor (se puede chequear corriendo el comando virtualenv --version). También se puede instalar cualquier otro entorno virtual que se prefiera.

Clonación de Repositorio

El repositorio se encuentra ubicado en Github, se necesitan las credenciales de Darient para poder acceder. Se puede hacer a través de este link.

Estructuración del Proyecto

Dentro del repositorio se podrá encontrar el proyecto con la siguiente estructuración (solo resaltando las carpetas y archivos importantes):

dthive_auto
├── .envs
├── .github
├── compose
├── config
| ├── settings
| | ├── base.py
| | ├── local.py
| | ├── production.py
| └── urls.py
├── dthive_api
├── dthive_auto
| ├── apps
| ├── media
| ├── static
| ├── templates
| ├── utils
| └── conftest.py
├── fixtures
├── requeriments
| ├── base.txt
| ├── local.txt
| ├── production.txt
├── .gitignore
├── Dockerfile
├── development.yml
├── testing.yml
├── staging.yml
├── production.yml
├── requirements.txt
├── Procfile
├── entrypoint.sh
└── manage.py
  • /.envs/ - En esta carpeta se definen las variables de entornos del proyecto según su ambiente (/.local/, /.production/, /.staging/ o /.testing/), en donde cada una de ellas tendrá un archivo .django en el cual se definen todas la variables que se usan con Django, y un archivo .postgres en el cuál se encuentran las variables correspondientes a la base de datos. El ambiente /.testing/ solo hace uso de las variables de .postgres.

  • /.github/ - El proyecto cuenta con el workflow CI de Github Actions, el cual está configurado para ejecutarse mediante un pull request o push en algunas de estas ramas: develop, staging o main.

  • /compose/ - Este directorio contiene la configuración del Dockerfile según el entorno (en este proyecto solo se define en esta carpeta el de testing).

  • /config/ - La configuración del proyecto en Django se estructura según el entorno en que se esté trabajando. En el subdirectorio settings se encuentra el archivo base.py, siendo la base de todos los entornos posibles. En base.py se encuentran todas las configuraciones que se tendrán en común en todos los ambientes, donde se pueden encontrar la configuraciones de las librerías y apps a usar en el proyecto, los middlewares, etc. En local.py se definen algunas configuraciones diferentes a otros entornos para el desarrollo de forma local. Respectivamente lo mismo aplica para el caso de production.py, aquí se definen configuraciones más importantes ya que es la que se ejecturá en el servidor de producción. En producción estan las especificaciones necesarias para usar el storage y servidor de correo de AWS, así como las configuraciones de recolección de estáticos y de Sentry.

  • urls.py - En este archivo están definidas todas las rutas generales del proyecto.

  • /dthive_api/ - Esta es la aplicación correspondiente al modulo del API, aquí se encuentra todo lo correspondiente a la misma.

  • /dthive_auto/ - En esta carpeta están todos los módulos funcionales del proyecto.

    • /dthive_auto/apps/ - Aquí se encuentran todos los módulos funcionales, donde se incluyen usuarios, posiciones, entidades, flujos de viewflow, etc.

    • /dthive_auto/media/ - Esta carpeta es autogenerada por Django. Se generará cada vez que se guarde un archivo localmente y en ella podrás encontrar dicho archivo en la ruta específicada (en este caso la configuración es application/{id}/{file} ).

    • /dthive_auto/static/ - En esta carpeta se guardan todos los estáticos del proyecto, desde los templates usados externamente (en este caso se usa Material Pro y dichos archivos se encuentran en la carpeta /dthive_auto/static/main/), como también archivos CSS, JS e imágenes.

    • /dthive_auto/templates/ - Mediante este directorio se pueden encontrar todos los archivos HTML que definen las interfaces del proyecto. Algunos de los componentes importantes son:

      • /dthive_auto/templates/account/ - Se establecen las interfaces de correos, login y el flujo de cambiar contraseña (casi todas las que empiezan por password).

      • /dthive_auto/templates/application/proposal/ - En esta carpeta específica se encuentra el archivo desde el cuál Viewflow toma por defecto para empezar el flujo de Propuestas.

      • /dthive_auto/templates/proposal/viewflow/ - En esta carpeta específica se encuentran todas las interfaces que se usan en las vistas personalizadas de Viewflow.

      • /dthive_auto/templates/hr/ - En esta carpeta específica se encuentran los componentes de interfaces para las selecciones de listas.

      • /dthive_auto/templates/share/ - En esta carpeta específica se encuentran algunos componentes que tienen en común varias interfaces.

      • /dthive_auto/templates/base.html - En este archivo se encuentra el template base que se usa en la mayoría de los componentes de interfaces del cuerpo del proyecto.

      Los demás directorios contienen los archivos de interfaces correspondientes al nombre de la misma.

    • /dthive_auto/utils/ - Aquí se encuentran algunas utilidades del proyecto, como es el caso de los storages de AWS.

    • /dthive_auto/conftest.py - En este archivo se encuentran las configuraciones generales para los tests de Django.

    • /fixtures/ - En este directorio se encuentran todos los JSON con las intancias de base de datos necesarias para la inicialización del proyecto.

    • /requirements/ - En este directorio están todos los archivos de dependencias del proyecto separadas por ambiente: base.txt tiene todas las librerías que se usan en común en todos los entornos, local.txt tiene solo las librerías necesarias para el entorno de desarrollo y production.txt respectivamente las de producción.

    • .gitignore - Archivo que le especifíca a Github que archivos y directorios ignorar.

    • Dockerfile - Archivo de configuración de Docker donde se especifícan todas las instrucciones de contenerización del proyecto. Este archivo se hizo de manera generalizada de tal forma que pueda ser ejecutada por cualquier docker-compose sin importar su entorno (exceptuando testing.yml). Este Dockerfile sirve para: development.yml, staging.yml y production.yml.

    • development.yml, staging.yml, testing.yml y production.yml - Son archivos de Compose en el cuál se configura la forma en que se ejecutará el proyecto según el entorno en que se encuentren.

    • requirements.txt - Archivo que al ejecutarse instala automáticamente las dependencias de producción. Este archivo es necesario para Heroku.

    • Procfile - Archivo de instrucción de ejecución solo utilizado por Heroku.

    • entrypoint.sh - Script que se usa en el Dockerfile para esperar por el levantamiento de Postgres.

Build

Una vez se tenga activado el entorno virtual, para instalar las dependencias y levantar el proyecto se hace a través de estos comandos:

pip install -r requirements/file_name

En este caso el file_name dependerá del entorno en el que se quiera levantar el proyecto. Los archivos posibles son: local.txt o production.txt.

Cuidado

Antes se deben haber configurado las variables de entorno según sea el caso en la carpeta /.envs/.

Levantamiento del Proyecto

Para levantar el proyecto se hace uso de estos comandos:

  • Levantar las migraciones de Django.
python manage.py makemigrations
  • Realizar las migraciones.
python manage.py migrate
  • Levantar el proyecto.
python manage.py runserver

Automáticamente debería poder acceder desde localhost:8000 en caso de ser el entorno local.