# Comptabilité d'indépendant complémentaire ## Installation Créez un environnement virtuel `python3 -m venv /path/to/new/virtual/environment` Installez les requirements `pip install -r requirements/dev.txt` ## Application de comptabilité Elle permet de gérer sa comptabilité (mouvement d'argent) d'indépendant complémentaire. ## Application de facturation Elle permet de gerer ses clients, ses contrats et ses prestations. Elle permet également d'exporter un PDF généré automatiquement pour facturer un client. La génération est assez simple : elle prend toutes les prestations d'un contrat (pour un seul client) et en fait un PDF avec le détail des prestations, l'acompte, … et indique sur quel compte payer ainsi que la communication à utiliser lors de ce versement. ## Déploiement en local (Docker) - installer Docker (+ drivers PGSQL) - créer un fichier `docker-compose.yml` : ``` version: "3" services: db: image: "postgres:14" restart: always container_name: "compta_inde_db_container" environment: POSTGRES_DB: "compta_inde_db" POSTGRES_USER: "Greg&Arnaud" POSTGRES_PASSWORD: "K&kP4t4t0r1!" ports: - "5432:5432" volumes: - ./data:/var/lib/postgresql/data ``` - tapez la commande `docker-compose up -d` - `pip install -r requirements.txt` - `python manage.py createsuperuser` - `python manage.py runserver` Aller dans l'administration de django -> Group. Là, il faut créer deux groupes : "trainer" et "gymnast". Ensuite, attribuer au super user créé le groupe "trainer". ### Installation de weasyprint En plus du `pip install weasyprint` et `pip install django-weasyprint`, il faut installer weasyprint (via homebrew, …) puis, **pour les mac M1** exécuter les commandes : ```bash sudo ln -s /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib /usr/local/lib/gobject-2.0 sudo ln -s /opt/homebrew/opt/pango/lib/libpango-1.0.dylib /usr/local/lib/pango-1.0 sudo ln -s /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib /usr/local/lib/harfbuzz sudo ln -s /opt/homebrew/opt/fontconfig/lib/libfontconfig.1.dylib /usr/local/lib/fontconfig-1 sudo ln -s /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib /usr/local/lib/pangoft2-1.0 ``` ### Tests ### Pylint Dans le répertoire racine, tapez la commande suivante : ```bash pylint ./jarvis/followup ``` ### Djlint (à venir) ### Coverage ```bash pip install coverage ``` #### Configuration ```bash touch .coveragerc vim .coveragerc ``` Ajoutez les lignes suivantes : ```bash omit = *__init__.py,*/migrations/*,*test*,*settings*,*urls*,*wsgi*,manage.py,*apps* ``` #### Utilisation ```bash coverage run -m pytest ``` ## Déploiement sur Heroku - Créer l'application sur Heroku - Ajouter le Buildpacks : heroku/python - Créer les variables d'environnement : - ALLOWED_HOSTS : - DATABASE_NAME : compta_inde_db - DISABLE_COLLECTSTATIC : 1 - SECRET_KEY : mvu)=%+ocv3n9dljxq0===$v!01@rw2j$++i&h6#65cu1#0ff@ - DATABASE_URL : créé automatiquement lorsqu'on ajoute l' `element` PostgreSQL Exemple : ``` heroku config:set DISABLE_COLLECTSTATIC="1" heroku config:set ALLOWED_HOSTS="" heroku config:set SECRET_KEY="mvu)=%+ocv3n9dljxq0===$v!01@rw2j$++i&h6#65cu1#0ff@" heroku config:set DATABASE_NAME="compta_inde_db" ``` - Se connecter à Héroku (via l'invite de commande) : `heroku login` - Ajouter Heroku à Git : `git remote add heroku https://git.heroku.com/comptainde.git` - Push de l'application : `git push heroku master` - Création du super user : `heroku run python manage.py createsuperuser` ## Récupération des données : Pour transferer des données d'un site à un autre, le plus simple est d'utiliser la commande `./manage.py dumpdata > db.json`. Pour ne pas récupérer les user, les authorisation et les content-type, utilisez la commande : ```bash python manage.py dumpdata --natural-foreign --exclude contenttypes --exclude auth.permission --exclude admin.logentry --exclude sessions.session --indent 4 > save.json ``` Pour charger les données, tapez ensuite : ```bash python manage.py loaddata save.json ```