gwift-book/specs.md

73 lines
3.2 KiB
Markdown
Raw Normal View History

2015-09-16 15:05:18 +02:00
Single App
==========
2015-09-16 13:20:55 +02:00
Pour commencer, nous allons nous concentrer sur la création d'un site ne contenant qu'une seule application, même si en pratique le site contiendra déjà plusieurs applications fournies pas django, comme nous le verrons plus loin.
2015-09-16 13:40:08 +02:00
Pour prendre un exemple concret, nous allons créer un site permettant de gérer des listes de souhaits, que nous appellerons `gwift` (pour `GiFTs and WIshlisTs` :)).
La première chose à faire est de définir nos besoins du point de vue de l'utilisateur, c'est-à-dire ce que nous souhaitons qu'un utilisateur puisse faire avec l'application.
2015-09-16 13:20:55 +02:00
Ensuite, nous pourrons traduire ces besoins en fonctionnalités et finalement effectuer le développement
Besoins utilisateur du site gwift
---------------------------------
2015-09-16 13:40:08 +02:00
Nous souhaitons développer un site où un utilisateur donné peut créer une liste contenant des souhaits et où d'autres utilisateurs peuvent choisir les souhaits qu'il souhaite réaliser.
2015-09-16 15:05:18 +02:00
Il sera nécessaire de s'authentifier pour :
2015-09-16 13:20:55 +02:00
2015-09-16 15:05:18 +02:00
1. Créer une liste associée à son utilisateur
2. Ajouter un nouvel élément à une liste
3. Faire une promesse d'offre pour un élément appartenant à une liste, associée à un utilisateur.
2015-09-16 13:20:55 +02:00
2015-09-16 15:05:18 +02:00
L'utilisateur ayant créé une liste pourra envoyer un email ou une notification aux utilisateurs enregistrés directement depuis le site aux personnes avec qui il souhaite partager sa liste, ce dernier contenant la manière d'y accéder.
2015-09-16 13:20:55 +02:00
2015-09-16 15:05:18 +02:00
A chaque souhait, on pourrait de manière facultative ajouter un prix. Dans ce cas, le souhait pourrait aussi être subdivisé en plusieurs parts, de manière à ce que plusieurs personnes puissent participer à son acquisition.
Un souhait pourrait aussi être réalisé plusieurs fois.
2015-09-16 13:20:55 +02:00
Besoins fonctionnels du site gwift
----------------------------------
### Gestion des utilisateurs
2015-09-16 13:40:08 +02:00
2015-09-16 15:05:18 +02:00
Pour gérer les utilisateurs, nous utiliserons ce que Django met par défaut à notre disposition.
2015-09-16 13:20:55 +02:00
### Gestion des listes
2015-09-16 13:40:08 +02:00
#### Modèlisation
2015-09-16 13:20:55 +02:00
Les données suivantes doivent être associées à une liste:
2015-09-16 13:40:08 +02:00
* un identifiant
2015-09-16 13:20:55 +02:00
* un nom
* une description
2015-09-16 13:40:08 +02:00
#### Fonctionnalités
2015-09-16 13:20:55 +02:00
2015-09-16 13:40:08 +02:00
1. Il faut pouvoir créer, modifier, désactiver et supprimer une liste, avec un utilisateur authentifié
2. Il faut pouvoir y associer ou retirer des souhaits avec un utilisateur authentifié
3. Il faut pouvoir accéder à une liste, avec un utilisateur authentifier ou non, via le uid.
4. Il faut pouvoir envoyer un email avec le lien vers la liste, contenant l'uid.
5. L'utilisateur doit pouvoir voir toutes les listes qui lui appartiennent
2015-09-16 13:20:55 +02:00
2015-09-16 13:40:08 +02:00
### Gestion des souhaits
2015-09-16 13:20:55 +02:00
2015-09-16 13:40:08 +02:00
#### Modélisation
2015-09-16 13:20:55 +02:00
Les données suivantes peuvent être associées à un souhait:
* un nom
* une description
* une image
* un prix facultatif
* un nombre (1 par défaut)
* un nombre de part facultatif, si un prix est fourni
* la liste à laquelle il appartient
2015-09-16 13:40:08 +02:00
#### Fonctionnalités
2015-09-16 13:20:55 +02:00
2015-09-16 13:40:08 +02:00
1. Il faut pouvoir créer, modifier, désactiver et supprimer un souhait, avec un utilisateur authentifié
2. On ne peut créer un souahit sans liste associée
3. Il faut pouvoir fractionner un souhait uniquement si un prix est donné.
4. Il faut pouvoir accéder à un souhait, avec un utilisateur authentifier ou non.
5. Il faut pouvoir réaliser un souhait ou une partie seulement, avec un utilisateur authentifier ou non.