146 lines
4.2 KiB
Markdown
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
|
|
``` |