-
Notifications
You must be signed in to change notification settings - Fork 6
2.a. Gestion des bars
Le modèle Bar
est défini dans le fichier bars_core/models/bar.py
.
Il ne contient que deux champs : id
et name
. L'id
est de type string
est identifie le bar (il sert notamment pour avoir des URLs jolies sur le client).
Le modèle comporte une méthode pour appliquer les agios aux comptes en négatifs (apply_agios(self, account)
). Cette méthode est appelée dans le script scripts/agios.py
qui est lui-même exécuté quotidiennement par un cron. Les paramètres concernant les agios (coefficient et délai avant le premier agio) sont définis dans le BarSettings
associé au bar (cf. infra).
La classe BarSerializer
est un usage classique de ModelSerializer
du REST Framework.
Les vues liées aux bars sont définies dans la classe BarViewSet
. On trouve les vues par défaut d'un modèle CRUD, ainsi que des vues personnalisées. Ces vues servent à générer des classements, au sein d'un bar ou entre les bars.
-
sellitem_ranking
: classement des SellItems dans un bar donné (un SellItem représente un aliment vendu par le bar, pour plus d'informations, voir la structure de données pour les aliments (à venir)) ; -
nazi_ranking
: classement des bars suivant le montant total d'amendes infligées ; -
items_ranking
: classement des bars suivant la consommation d'une liste d'ItemDetails
passée en paramètres.
Pour plus d'informations sur les classements et les statistiques, voir la page de l'application bars_stats
.
Le modèle BarSettings
représente un certain nombre de paramètres généraux du bar :
-
next_scheduled_appro
: date et heure de la prochaine appro ; -
money_warning_threshold
: montant en-dessous duquel le solde d'un utilisateur passe en "avertissement" ; -
transaction_cancel_threshold
: durée (en heures) à partir de laquelle il devient impossible d'annuler une transaction (sauf pour un respo bar) ; -
default_tax
: taxe par défaut desSellItem
(pour le pré-remplissage de formulaires) ; -
agios_enabled
: activation des agios ; -
agios_threshold
: délai (en jours) entre le passage d'un compte en négatif et le premier agios ; -
agios_factor
: coefficient appliqué au calcul d'agios : si un compte est en négatif d'un montants > 0
, alors le montant de l'agios seraagios_factor * s
.
Pour gérer globalement l'application, on dispose d'un bar root qui n'est pas lié à une section sportive ou un binet.
Ce bar vient avec des permissions spécifiques.
Par exemple, la gestion des objets Bar
requiert d'avoir des droits dans le bar root (classe de permissions RootBarPermissionsOrAnonReadOnly
).
En revanche, la modification des objets BarSettings
requiert simplement d'avoir les droits suffisants dans le bar lié (respo bar).
De façon générale, la plupart des permissions dépendent de l'appartenance à un bar (voir la page concernant les permissions pour plus de détails).