Find a file
Laetitia Getti f4c08a3a23 duplicate grouped order
closes #7
2023-07-07 17:15:03 +02:00
la_chariotte duplicate grouped order 2023-07-07 17:15:03 +02:00
.coveragerc create gitlab-ci.yml 2023-04-18 16:03:57 +02:00
.gitignore static-root in settings 2023-04-27 17:19:39 +02:00
.gitlab-ci.yml try to fix diff-cover 2023-07-07 16:01:51 +02:00
chariotte-v0-data.sql dump data for v0 2023-06-05 14:33:30 +02:00
conftest.py tests and test fixtures 2023-04-19 18:13:44 +02:00
dev-requirements.txt move xhtml dependency to requirements.txt 2023-06-05 14:35:57 +02:00
Dockerfile enhance some versions and fix some settings 2023-05-30 15:30:38 +02:00
LICENSE license file and info 2023-03-30 16:54:42 +02:00
manage.py install black and format files 2023-04-18 16:01:10 +02:00
pyproject.toml add semantic versionning 2023-07-07 15:06:43 +02:00
README.md add semantic versionning 2023-07-07 15:06:43 +02:00
requirements.txt enhance some versions and fix some settings 2023-05-30 15:30:38 +02:00

La Chariotte | 1.1.1

Présentation

La Chariotte est une application web sous licence libre Affero GPL, développée et maintenue par Hashbang.

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 !

Développement

Cloner le projet :

git clone https://gitlab.com/hashbangfr/la_chariotte.git

Installer les dépendances :

pip install -r requirements.txt
pip install -r dev-requirements.txt

Travailler sur le frontend

install bulma

npm install bulma

check sass version

sass --version
# used for developement: 1.59.3 compiled with dart2js 2.19.4

watch for changes when updating scss files (from project root)

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)

sass --no-source-map ./la_chariotte/static/sass/style.sass:./la_chariotte/static/css/app.css

Lancer les tests

Lancer les tests avec pytest :

pytest

Si il y a des erreurs ISORT, on peut lancer isort pour trier les fichiers :

isort .

Si il y a des erreurs BLACK, on peut lancer black pour linter le code :

black .

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.

A l'état actuel, le diagramme de classes est le suivant :

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
    }
    class OrderedItem{
        order : Order
        nb 
        item : Item
    }
    class OrderAuthor {
        first_name
        last_name
        phone
        email
    }
    class CustomUser{
        first_name
        last_name
        email
    }