-
Notifications
You must be signed in to change notification settings - Fork 6
2.d. Gestion des comptes
Le modèle Account
est défini dans le fichier bars_core/models/account.py
.
Un compte est lié à un User
et un Bar
; ce couple est unique.
Le champ money
correspond au solde du compte (l'argent ne peut pas circuler entre les bars). Le champ overdrawn_since
retient la date à laquelle le compte passe en négatif (et vaut None
si le compte est en positif).
Le champ money
est en lecture seule au niveau du serializer :
il est ainsi impossible, au travers de l'API REST, de modifier directement le solde d'un compte.
Ceci a été décidé pour conserver l'intégrité de la base de données :
les mouvements d'argent ne se font qu'à travers des Operations
définies dans des Transactions
(voir la documentation de bars_transactions
pour plus de détails).
Les vues concernant les comptes sont définies dans AccountViewSet
;
on retrouve évidemment les vues CRUD classiques.
Celles-ci possèdent des filtres : il est possible de filtrer la liste des comptes suivant les champs owner
, bar
et money
(par comparaison).
On a aussi la vue me
qui renvoie le compte de l'utilisateur connecté, dans le bar courant (paramètre GET bar
), ou tous ses comptes si aucun bar n'est spécifié.
Aux vues principales s'ajoutent un certain nombre de vues de statistiques et de classements. Le fonctionnement précis de ces outils est détaillé dans la documentation de bars_stats
.
Des détails d'implémentation se trouvent en commentaires dans le code source de ces vues.
-
stats(self, request, pk)
: renvoie les statistiques de consommation du comptepk
suivant les valeurs passées en paramètres de la requête (intervalle de temps, début et fin, etc.) ; -
total_spent(self, request, pk)
: renvoie le total dépensé (on peut préciser le type de transaction) ; -
ranking(self, request)
: renvoie un classement des comptes dans le bar passé en paramètre (obligatoire), selon les paramètres passés dans la requête ; -
coheze_ranking(self, request)
: renvoie un classement des comptes dans le bar selon les dépenses en "bouffes à plusieurs" (MealTransaction
) ; -
sellitem_ranking(self, request, pk)
: renvoie le classement desSellItems
les plus consommés par le comptepk
; -
magicbar_ranking(self, request, pk)
: renvoie le classement desSellItems
avec une certaine pondération déduite de la fréquence de consommation, afin d'afficher les résultats de recherche les plus pertinents possible dans la MagicBar™ du frontend ; -
items_ranking(self, request)
: renvoie un classement des comptes pour la consommation d'une liste d'ItemDetails
.
L'utilisateur (fictif) Bar dispose d'un compte dans chaque bar.
On récupère ce compte à l'aide de la fonction get_default_account(bar)
.