# La Chariotte | 1.0.0 ## Présentation La Chariotte est une application web sous licence libre Affero GPL, développée et maintenue par [Hashbang](https://hashbang.fr/). ## Contribuer Si vous souhaitez contribuer au projet de la Chariotte, merci beaucoup ! Pour cela, une fois que vous avez cloné le projet et obtenu le statut de développeur sur le projet GitLab, vous pouvez : - choisir une tâche dans le board que vous voulez réaliser, et vous l'assigner - si vous ne savez pas quelle tâche faire, n'hésitez pas à écrire à laetitia@chariotte.fr - créer une nouvelle branche **à partir de develop** dont le nom dira ce que vous voulez faire - réaliser la tâche, sans oublier d'écrire et de lancer les tests (voir plus bas) - créer une Merge Request, contenant le plus de détails possible sur ce que vous avez fait Ensuite, un mainteneur de la Chariotte pourra relire votre code et proposer des améliorations/poser des questions si nécessaire. Seuls les mainteneurs peuvent merger dans develop et main. Encore merci, et bon code ! ## Versions - semantic versionning Les fonctionnalités développées dans les différentes versions sont listées dans le fichier [CHANGELOG.md](https://gitlab.com/hashbangfr/la_chariotte/-/blob/main/CHANGELOG.md). Étant donné un numéro de version MAJEUR.MINEUR.CORRECTIF, il faut incrémenter : le numéro de version MAJEUR quand il y a des changements non rétrocompatibles, le numéro de version MINEUR quand il y a des ajouts de fonctionnalités rétrocompatibles, le numéro de version de CORRECTIF quand il y a des corrections d’anomalies rétrocompatibles. La version est à mettre à jour dans le CHANGELOG, README, dans le pyproject.toml, dans le footer (base.html), seulement lorsque develop est mergé dans main. ## Développement Cloner le projet : ```bash git clone https://gitlab.com/hashbangfr/la_chariotte.git ``` Installer les dépendances : ```bash pip install -r requirements.txt pip install -r dev-requirements.txt ``` ### Installation d'un environnement virtuel Pour éviter que les bibliothèques nécessaires au projet ne rentrent en conflit avec celles de votre système, il peut être utile d'installer un environnement virtuel : ```bash python3 -m venv .venv ``` Une fois l'environnement virtuel installé, vous pouvez l'activer : ```bash source .venv/bin/activate ``` ### Installation de la base de données La Chariotte nécessite une base de données, et est actuellement compatible avec PostgreSQL ([instructions d'installation ici](https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart)). Pour le développement, nous vous conseillons de créer une base de données nommée ```chariotte``` accessible par l'utilisateur et le mot de passe du même nom. ```SQL CREATE ROLE chariotte WITH LOGIN NOSUPERUSER CREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'xxxxxx'; ``` ```SQL CREATE DATABASE chariotte WITH OWNER = chariotte ENCODING = 'UTF8' CONNECTION LIMIT = -1 IS_TEMPLATE = False; ``` ### Création du fichier de configuration Créez un fichier de configuration dans lequel vous pourrez spécifier la configuration qui est utile pour vous. Nous allons le nommer ici ```local_settings.py```. ```python from la_chariotte.settings import * DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'chariotte', 'USER': 'chariotte', 'PASSWORD': 'chariotte', 'HOST': 'localhost', } } ``` ### Lancement du serveur Tout devrait être maintenant prêt pour pouvoir lancer le serveur : ```shell python manage.py runserver --settings=local_settings ``` Pour créer un superutilisateur, qui aura accès à l'interface admin (/admin) : ```shell python manage.py createsuperuser ``` ### Travailler sur le frontend install bulma ```bash npm install bulma ``` check sass version ```bash sass --version # used for developement: 1.59.3 compiled with dart2js 2.19.4 ``` watch for changes when updating scss files (from project root) ```bash sass --watch --no-source-map ./la_chariotte/static/sass/style.sass:./la_chariotte/static/css/app.css ``` OR compile css only once (from project root) ```bash sass --no-source-map ./la_chariotte/static/sass/style.sass:./la_chariotte/static/css/app.css ``` ### Lancer les tests Lancer les tests avec pytest : ```bash pytest ``` Si il y a des erreurs ISORT, on peut lancer isort pour trier les fichiers : ```bash isort . ``` Si il y a des erreurs BLACK, on peut lancer black pour linter le code : ```bash black . ``` ## Tests de l'envoi de mails Pour tester l'apparence des mails, on peut utiliser Sendria : ```bash pip install sendria sendria --db mails.sqlite $NAVIGATOR http://127.0.0.1:1080 ``` ## Architecture de l'application Les différentes applications Django créées sont : - ``order``, pour gérer tout ce qui tourne autour des commandes - ``accounts``, pour gérer la création de comptes. Pour la connexion, la déconnexion et le changement de mot de passe, on utilise l'application auth intégrée à Django. - ``mail``, pour l'envoi des mails. A l'état actuel, le diagramme de classes est le suivant : ```mermaid classDiagram GroupedOrder "item_set" <-- Item GroupedOrder "order_set" <-- Order Order "ordered_items" <-- OrderedItem Item "orders" <-- OrderedItem OrderAuthor "author" <-- Order CustomUser "grouped_orders" <-- GroupedOrder class GroupedOrder{ name deadline : DateTime delivery_date : Date place description orga : CustomUser total_price } class Item{ name grouped_order : GroupedOrder ordered_nb total_price max_limit } class Order{ grouped_order : GroupedOrder author : OrderAuthor price created_date note } class OrderedItem{ order : Order nb item : Item } class OrderAuthor { first_name last_name phone email } class CustomUser{ first_name last_name email } ```