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):

dtmood-web
├── .well-known
├── .github
├── compose
├── config
| ├── settings
| | ├── base.py
| | ├── local.py
| | ├── production.py
| └── urls.py
├── dtmood_api
├── dtmood_web_app
| ├── apps
| ├── media
| ├── static
| ├── templates
| └── utils
├── fixture
├── requeriments
| ├── base.txt
| ├── local.txt
| ├── production.txt
├── .gitignore
├── .development.env
├── development.yml
├── staging.yml
├── production.yml
├── runtime.txt
├── requirements.txt
├── Procfile
├── DOKKU_SCALE
└── manage.py
  • /.well-known/ - Directorio que contiene un archivo específico para las configuraciones particulares en el ambiente de Apple.

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

  • /compose/ - Este directorio contiene la configuración del Dockerfile según el entorno. En esta carpeta también se encuentra el archivo entrypoint.sh, que es un Script que se usa en el Dockerfile para esperar por el levantamiento de Postgres.

  • /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.

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

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

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

    • /dtmood_web_app/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} ).

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

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

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

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

      • /dtmood_web_app/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.

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

    • /fixture/ - 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.

    • development.yml, staging.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 Dokku.

    • runtime.txt - Archivo que contiene la versión de Python en la que se ejecutará el proyecto en Dokku.

    • Procfile - Archivo de instrucción de ejecución solo utilizado por Dokku, donde se especifican como se levantara el proyecto como también se levantarán los workers.

    • DOKKU_SCALE - Archivo que indica cuantos containers se crearan por proceso dentro del proyecto.

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.

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.