Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

2.d. Gestion des comptes

tizot edited this page Jan 20, 2016 · 2 revisions

Gestion des comptes

Modèle Account

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).

Vues principales

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é.

Statistiques et classements

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 compte pk 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 des SellItems les plus consommés par le compte pk ;
  • magicbar_ranking(self, request, pk) : renvoie le classement des SellItems 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.

Compte de l'utilisateur Bar

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).