* Settings
- New: OVERDRAFT_AMOUNT
Découvert autorisé par défaut
- New: OVERDRAFT_DURATION
Durée maximum d'un découvert par défaut
* K-Psul : Gestion des commandes aboutissant à un négatif
- Si une commande aboutit à un nouveau solde négatif, demande la
permission 'kfet.perform_negative_operations'
- Si le total de la commande est négatif, vérifie que ni la
contrainte de temps de découvert, ni celle de montant maximum
n'est outrepassée. Si ce n'est pas le cas, la commande ne peut
être enregistrée jusqu'à définir des "règles de négatif" pour le compte
concerné.
La durée maximum d'un découvert est celle dans AccountNegative si
elle y est définie pour le compte concerné, sinon celle par défaut
(Settings.OVERDRAFT_DURATION).
Il en est de même pour le découvert maximum autorisé. Attention:
le découvert doit être exprimé sous forme de valeur positive aussi
bien dans AccountNegative que pour Settings.OVERDRAFT_AMOUNT.
- Si les permissions nécessaires sont présentes, qu'il
n'y a pas de blocage et que le compte n'a pas encore d'entrée dans
AccountNegative, création d'une entrée avec start=now()
- Si la balance d'un compte est positive après une commande, supprime
l'entrée dans AccountNegative associée au compte si le "décalage
de zéro" (donné par balance_offset) est nul. Sinon cela veut dire
que le compte n'est pas réellement en positif.
* Modèles
- Fix: Account.save() fonctionne dans le cas où data est vide
- Modif: AccountNegative - Valeurs par défaut, NULL...
- Empêche l'enregistrement de commande sur un compte gelé sans la
permission 'kfet.override_frozen_protection'
- Modifie les noms de deux permissions pour éviter d'avoir des 'can_...'
partout
- Corrige le code HTTP de 400 (BAD REQUEST) à 403 (FORBIDDEN) dans le
cas où l'utilisateur authentifié n'a pas les permissions nécessaires
pour enregistrer une commande K-Psul
- Ajout des paramètres (modèle Settings) "ADDCOST_AMOUNT" et
"ADDCOST_FOR" indiquant respectivement le montant et le compte sur lequel
compter la majoration. Définir l'un de ces paramètres à NULL indique
qu'il n'y a pas de majoration en cours
- Prise en compte de ces 2 paramètres lors de la validation et
l'enregistrement d'opérations d'achat (Operation.PURCHASE) dans K-Psul
- Modification du champ "addcost_amount" de Operation. S'il n'y a pas de
majoration, celui-ci est NULL.
- Correction sur l'enregistrement de "valid_by" dans K-Psul. Celui-ci
était systématiquement rempli par l'utilisateur connecté ce qui
n'était pas le comportement souhaité. Il est maintenant rempli
seulement si une permission autre que kfet.is_team était nécessaire
pour valider la commande.
- Suppression d'une exception non utilisée dans le modèle Settings
- Ajout d'une méthode sur Account pour connaître les permissions
nécessaires pour enregistrer des opérations en fonction du futur solde
du compte
- Ajout d'une permission pour effectuer une charge sur un compte
- Ajoute que l'utilisateur connecté doit avoir toutes les permissions
nécessaires pour enregistrer un groupe d'opérations. Si ce n'est pas
le cas, aucune opération n'est enregistrée et les permissions manquantes
sont envoyées en réponse.
- Dans le cas d'une charge ou d'un retrait, "article" et "article_nb" de
Operation sont définis à NULL
- Ajout d'un modèle settings
- Ajout de la prise en compte du statut COF dans le montant d'une
opération achat avec la majoration définie dans le modèle settings
(name="SUBVENTION_COF")
- Passe le calcul du montant d'un achat dans la vue au lieu du clean du
form
- Corrige le calcul d'un achat et le calcul total du montant de la commande
- Ajoute l'enregistrement du statut COF de la personne associée à la
commande
La subvention COF, la majoration possible (type concert), autres...
devront être prises en compte donc le calcul d'un achat doit être dans
la vue.
Les achats et les retraits doivent avoir un montant négatif tandis que
les charges ont un montant positif.
L'enregistrement du statut COF servira aux futures statistiques.
- Validation d'un OperationGroup par le form associé et sa méthode
is_valid
- Validation d'une Operation par la méthode clean() du form associé
selon le type d'opération effectuée
- Ajout d'une exception Checkout.IsProtected
- Rend impossible d'utiliser une caisse (Checkout) protégée
(is_protected) dans K-Psul
Une caisse protégée est, par exemple, la caisse qui recevra les
rechargements par CB en ligne.
K-Psul est l'interface pour l'équipe K-Fêt servant à effectuer des
opérations sur les comtpes
General :
- Ajout d'un default sur le montant d'un groupe d'opérations
K-Psul :
- Création de l'interface pour enregistrer une opération
- General :
- Ajout de la gestion des messages dans le template base
- jQuery et bootstrap ajoutés au template base
- Ajout de DateTimeWidget utilisant bootstrap-datetimepicker pour
les champs DateTime
- Account :
- Ajout de propriétés aux modèles pour accéder directement à
certains éléments sans avoir à passer par les relations
- Suppression d'une méthode inutile dans le modèle
- Correction de permission dans la vue update
- Utilisation des messages pour la création et l'édition d'un compte
- Checkout :
- gestion initiale CRU
- Création d'un template pour nav
- Modification des liens entre les pages account
- Correction de la balise form dans account_update.html
- Ajout d'un nom pour la résolution inversée de account
- Création d'un template pour nav
- Modification des liens entre les pages account
- Correction de la balise form dans account_update.html
- Ajout d'un nom pour la résolution inversée de account
Ajoute un cron pour les mails de rappel
Cette tâche cron sert à automatiser l'envoi des mails de rappel. Plus de détails dans `provisioning/cron.md`
Ce n'est pas nécessaire sur la VM vagrant pour développer mais il est possible de charger tout de même en tapant :
crontab provisioning/cron.dev
Sur la machine en prod, il faudra adapter ce fichier.
See merge request !67
Kerl/test db
Ajoute une base de donnée de tests avec
- Des utilisateurs dont `root` (mot de passe `root`) avec tous les droits
- Un ensemble complet de tirages, spectacles, salles, participants et vœux pour le bda.
- Un événement.
- Un sondage.
- Quelques données de petits cours
Pour appliquer ce patch, il faut lancer la commande
python manage.py loaddata users bda gestion
Fixes#4
_NB._ Les noms des utilisateurs sont honteusement pompés sur www.asterix.com
_NB._ Il se passe des choses bizarres si on load cette base dans une base déjà remplie, à bon entendeur.
See merge request !38
- Séparation du compte root des autres comptes
- Mise à jour en fonction des derniers changements de la BDD :
- Les dates des events deviennent des datetime
- Changement de nom dans bda.models.Tirage : token -> tokens
- Changement dans les dates de spectacles pour se situer dans l'année
2016-2017
Ajout d'un calendrier dynamique
Ce patch propose aux adhérents du COF de télécharger un calendrier
dynamique (`.ics`).
Il est configurable :
- On peut s'abonner ou non aux événements du COF.
- On peut choisir les spectacles auxquels on veut s'abonner.
- Une checkbox permet d'ajouter d'un coup les spectacles pour lesquels on a obtenu une place
- On peut en ajouter d'autres
Pour faire fonctionner ce patch, il faut installer la bibliothèque python `icalendar` :
pip install --upgrade -r requirements.txt
Fixes#20Fixes#14
See merge request !63
Kerl/fix 32 do tirage
Ce patch permet au BdA de lancer ses tirages tout seul, plus besoin de toucher au code.
Les tirages sont protégés par un switch dans l'interface admin, i.e. un booléen qu'on passe à `True` avant de faire un tirage et qu'on repasse à False après. Ça sert à éviter qu'un étourdi lance un tirage “sans faire exprès”.
Si un tirage est lancé plusieurs fois, on garde les différentes graînes dans la champ `tokens` du modèle `Tirage`.
Fixes#32
See merge request !53
Qwann/zolicss
Hésitez pas à dire si y'a d'autres trucs à changer, des trucs que j'ai oublié ou que j'ai pu casser et que j'ai oublié de tester. Il faudrait vraiment tout tester !69
Pour faire fonctionner ce patch, il faut installer la bibliothèque python `django-bootstrap-form` :
pip install --upgrade -r requirements.txt
See merge request !69
Ajoute une redirection après login
Si un utilisateur est redirigé vers la page de login en demandant une
page, il est redirigé vers la page demandée initialement après
authentification.
See merge request !70