Docker Python Django Postgres

Bastet Accounting Backend 💲📊💸

a_minimalist_logo_for_a_software_development_company_cal_24c7dd5b-1999-43ce-b65a-52e872362794

Aplicacion web con el objetivo de facilitar las labores realizadas por contadores auditores

Comenzando 🚀

Estas instrucciones te permitirán obtener una copia del proyecto en funcionamiento en tu máquina local para propósitos de desarrollo y pruebas.

Pre-requisitos 📋

  • Docker 19.03^
  • Docker Compose 1.25^


Instalación 🔧

1. Clonar el repositorio

	https://github.com/raebeb/bastet-accounting-django.git

ó

	git@github.com:raebeb/bastet-accounting-django.git

2. Levantar el contenedor

	docker-compose up

Si es primera vez que se levanta el proyecto, este se buildeara e instalara todas las dependencias necesarias

Si en la terminal aparece un mensaje como el siguiente, el proyecto se ha levantado con éxito

	Container bastet-accounting-django-db-1  Running
	Container bastet-accounting-django-web-1  Created
	Attaching to bastet-accounting-django-web-1
	bastet-accounting-django-web-1  | Watching for file changes with StatReloader
	bastet-accounting-django-web-1  | Performing system checks...
	bastet-accounting-django-web-1  | 
	bastet-accounting-django-web-1  | System check identified no issues (0 silenced).
	bastet-accounting-django-web-1  | February 10, 2023 - 19:05:29
	bastet-accounting-django-web-1  | Django version 4.1.4, using settings 'bastet.settings'
	bastet-accounting-django-web-1  | Starting development server at http://0.0.0.0:8000/
	bastet-accounting-django-web-1  | Quit the server with CONTROL-C.

La primera vez que se levanta el proyecto es posible que falle, ya que se levanta web antes que db, si esto ocurre es necesario detener el contenedor con Ctrl + C y volver a levantarlo con docker-compose up


Poblar base de datos

Antes de hacer cualquier cambio en la base de datos es necesario correr la migraciones con este comando

python manage.py migrate

Cada vez que se haga algun cambio en los modelos es necesario ejecutar python manage.py makemigrations y luego el comando de arriba

Una vez ejecutadas las migraciones es necesario generar la data inicial para la base de datos, para eso es necesario ejecutar el siguiente comando

python manage.py seed

a este comando se le pueden agregar las siguientes flags: --mode=initial (genera datos iniciales) --mode=refresh (eliminara los datos existentes y generara nueva data en todos los modelos) --mode=clear (elimina la data existente y no genera nueva data)

En caso de que surja algun problema a base de datos es necesario eliminarla por completo SOLO EN AMBIENTE DE DEVELOPMENT

Esto se logra mediante el siguiente comando:

python manage.py reset_db

Luego de ejecutarlo nos pedira una confirmacion, una vez reseteada la base de datos es necesario volver a correr migraciones y ejecutar el seed

Si existiera algun problema con el comando anterior se recomienda ejecuar lo siguiente

docker-compose stop db
docker-compose start db

Ejecutando las pruebas ⚙

El proyecto cuenta con una serie de tests, para ejecutarlos el primer paso es tener contenedor levantado, luego seguir con los siguientes pasos

  1. Ejecutar el siguiente comando en una terminal diferente:
    docker-compose exec web sh -c "python manage.py test"
    

En este paso se llevara a cabo la ejecución de los test unitarios desarrollados, al finalizar se visualizara un mensaje como el siguiente, indicando que todas las pruebas se ejecutaron con éxito

Ran 14 tests in 518.023s

OK
Destroying test database for alias 'default'...
  1. Para verificar la covertura de codigo testeado es necesario seguir los siguientes pasos

2.1 Ejecutar el siguiente comando docker-compose exec web sh -c "coverage run manage.py test"

Este comando ejecutara los test y actualizara el conocimiento de ellos a la libreria coverage

2.2 Luego, ejecutar el siguiente comando

docker-compose exec web sh -c "coverage report -m"

Este comando mostrara un mensaje como el siguiente (siempre y cuando no existan problemas con los tests)

Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
my_program.py                20      4    80%   33-35, 39
my_other_module.py           56      6    89%   17-23
-------------------------------------------------------
TOTAL                        76     10    87%

Tambien es posible ver la covertura de los test en una pagina web estatica, para esto debemos ejecutar el punto 2.1 y luego el siguiente comando

docker-compose exec web sh -c "coverage html"

Este comando creara en nuestro proyecto un directorio llamado coverage_html_reports

image

dentro de esta estara el archivo index.html el cual podremos ver en cualquier navegador image


Construido con 🛠️


Autores ✒️


⌨️ con ❤️ por Francisca Osores & Larva👩‍💻

          />  フ
         |  _ _| 
       /` ミ_xノ 
      /     |
     /  ヽ   ノ
    │  | | |
/ ̄|   | | |
( ̄ヽ__  ヽ_)__)
\二)