# La Chariotte | 0.5.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). Les versions sont de la forme vX.Y.Z Quand on merge sur develop, on incrémente Z. Quand on merge sur main, on incrémente Y. Quand une nouvelle version majeure de la Chariotte sort, avec la communication liée, on incrémente X. La version est à mettre à jour dans le README, dans le pyproject.toml et dans le footer (base.html). ## 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 } ```