ComptaInde/README.md

146 lines
4.2 KiB
Markdown

# 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 : <a-definir>
- 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="<a-definir>"
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
```