`member.profile` was not up-to-date where we used to send the success
message => move it to the place where the success var is set tu `True`
and remove the success var was which becomes irrelevant.
Sometime `uid` is not set in the objects fetched from the LDAP. This
case has to be handled. Also, the `.uid` and `.cn` attributes of these
objects in the python abstractions have a `.value` method which we
should use.
It is obviously a bad idea to fail silently if something go wrong
when the connection with the mail server is being established. This was
enabled in the `_traitement_post` method.
The list `proposed_mails` is a list of elements of the kind
`(User, (mail_object, mail_body))` but it was handled as if it were
`(User, mail_body)` in the function `_traitement_post`.
Sometimes the `errors` variable is `None` in `_finalize_traitement`.
It was not an issue when it was just used in the templates but now we
have to handle this in the view. Basically, we shall consider it is an
empty list when it occurs.
The `registration` view was referencing this file using
`"gestioncof/registration_form.html"` whereas the `registration_post`
templated was referencing it in the global namespace
`"registration_form.html"`.
We choose the `gestioncof/` folder in order to avoid further conflicts
with other apps.
- Utilise une version à jour de jquery via un cdn
- Traite les messages
- Remplace les vieux simili-messages par des messages en utilisant le
framework messages de Django
- Drop `%` in favour of `.format` which has a better specification
- Remove a string concatenation
- Remove the trailing slashes according to the PEP8:
https://www.python.org/dev/peps/pep-0008/#maximum-line-length
NB. We let some which will disappear in the next commit.
- Remove an unused import and change the imports order
- Sites, surveys, events and petits cours demands/subjects are still
loaded from fixtures
- The users and their subscriptions to petits cours are loaded using the
`loaddevdata` command
- The sub command `loadbdadevdata` is called by `loaddevdata` and
populates the database with BdA related stuff :
- 2 tirages
- Show places
- Shows
- subscriptions
Create fixtures for kfet application:
- Add a bunch of non-cof profiles whose "last_name" is "Romain";
- Add k-fet articles using the real ones as a template;
- Add LIQ account;
- Add groups K-fet Chef and K-fet Girl;
- Add "caisse".
We also added some template for future tests (well, actually it's the script
used to generate the fixtures…).
- La migration qui supprime le vieux modèle gestioncof.CustomMail est
ajoutée
- Les mails de GestioCOF sont dans un json qui est chargé par la commande
`python manage.py syncmails`
Voir l'aide de la commande pour plus 'information
- On installe le package depuis le dépôt COF-Geek
- On supprime tous les fichiers texte des mails
- On charge dans la bdd les mails nécessaires au fonctionnement de
GestioCOF
- On supprime le modèle CustomMail obsolète de gestioncof
Améliore les mails automatiques du BdA
Les mails du BdA sont maintenant tous chargés depuis des templates gérés par le système de templates de Django, et plus par de l'interpolation de chaîne de caractères. Ceci permet en particulier d'utiliser (et de configurer) la localisation de Django afin d'afficher les dates de façon uniforme (et sans "hack" à la `date_no_seconds`) dans un format comportant un "à" entre le jour et l'heure.
See merge request !113
GestioCOF définit une fonction `render_template` qui permet de calculer
l'interpolation d'un gabarit en une chaîne de caractères, par exemple
pour l'envoi de mails. Ce patch supprime cette fonction et remplace son
utilisation par la fonction `django.template.loader.render_to_string` au
comportement identique.
Le CAS de l'ENS autorise les logins avec des espaces/une casse variable, par
exemple il considere equivalents les logins ' bCLeMeNt ' et 'bclement'. Ceci
peut etre la cause de creation de doublons sur gestioCOF en cas de faute de
frappe (ou utilisateur malicieux ;-) )
Ce patch normalise les logins a la sortie du CAS (strip + lowercase) pour
eviter des desagrements.
Les valeurs de champs FROM, REPLY-TO et BCC des mails envoyés par
GestioCOF sont enregistrées dans un dictionnaire `settings.MAIL_DATA`
plutôt que d'être toutes enregistrées comme variables indépendantes
Meilleure gestion des permissions
Il n'est plus possible de modifier l'attribut `is_superuser` dans
l'interface admin. les membres du burô ne doivent plus être super-
utilisateurs en prévision de l'arrivée de l'appli K-Fêt.
Pour donner les permissions adéquates au burô, il faut créer un groupe
COF avec tous les droits sur les applis `gestioncof` et `bda` ainsi que
les droits sur les d'utilisateurs et ajouter les membres du burô à ce groupe.
Fix#62
See merge request !75
Seul les superusers ont le contrôle sur les groupes et permissions.
Un membre du burô est automatiquement ajouté au groupe COF, lui même
créé automatiquement s'il n'existe pas.
Il n'est plus possible de modifier l'attribut `is_superuser` dans
l'interface admin. les membres du burô ne doivent plus être super-
utilisateurs en prévision de l'arrivée de l'appli K-Fêt.
Pour donner les permissions adéquates au burô, il faut créer un groupe
COF avec tous les droits sur les applis `gestioncof` et `bda` ainsi que
les droits sur les d'utilisateurs et ajouter les membres du burô à ce groupe.
À l'inscription on contraint les noms d'utilisateurs à dépasser 8
caractères seulement à la création de nouveaux utilisateurs pour
garantir la rétrocompatibilité.
On peut inscrire les utilisateurs aux différents clubs du COF. Le
formulaire d'inscription est inclus dans la page
“inscription d'un nouveau membre”.
À réfléchir comment ajouter des infos supplémentaires : chèque des caution,
commentaires, etc.
Lors de la création d'un compte exté via la vue `/registration` (i.e. compte
non associé à un clipper), deux champs sont ajoutés au formulaire pour la
création d'un mot de passe.
Il est toujours possible de changer ce mot de passe via l'admin s'il est perdu
par l'utilisateur.
- Ajout d'un FIXME dans `gestioncof/forms.py` au niveua de la surcharge de
la méthode privée `_construct_form` : ce trick ne sera plus nécessaire à
partir de Django 1.9
- Utilisation correcte des `form.is_valid` dans `gestioncof.views.registration`
- Changements mineurs dans `AdminEventForm`
- Ajout d'une base pour le formset : `BaseEventRegistrationFormset`
- Adaptation des vues de l'inscription et suppression d'une vue inutile.
- Le lien vers l'inscription à un tirage BdA disparaît après sa fermeture
- Les liens “mes places” et “revente” n'apparaissent qu'après la fermeture du
tirage.
- Le lien vers les ratios des demandes est déplacé dans la partie “Gestion des
tirages” pour servir d'archive au BdA.
Fixes#55
- La vue d'édition du profil n'est plus accessible aux non-COF
- Le calendrier dynamique étant réservé aux adhérents, le lien vers
l'inscription est caché aux non-adhérents.
- 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
- Indique a l'utilisateur comment utiliser le calendrier
- Utilise l'ORM Django plutôt que des `set` python pour avoir la bonne
liste des spectacles.
- Rajoute un lien vers le calendrier sur la page “mes places”
Plus besoin de s'authentifier pour accéder au calendrier : il suffit
d'entrer la bonne url qui contient un token aléatoire propre à chaque
utilisateur.
Ce token ne change pas lorsqu'on modifie son inscription
- Typos dans les modèles
- Choix d'un `OneToOneField` dans `CalendarSubscription`
- Suppressions d'un `except` catch-all
- Amélioration de la vue calendar
`gestioncof.views.registration` was using an `event` variable that was
not properly defined. Due to a semantics oddity of python2, the value
used was from a previous and (somewhat) unrelated list comprehension.
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.
Rend GestioCOF compatible avec python 3. En particulier, il s'agit de :
- Utiliser la version "fonction" de `print` dans `sync_clipper` et
`tirage_bda`, avec le `from __future__ import print_function` pour
garder la compatibilité avec python 2
- Utiliser de l'unicode par défaut, même en python 2, avec
`from __future__ import unicode_literals` et le décorateur de
compatibilité `python_2_unicode_compatible` de Django pour les
modèles, comme décrit à
https://docs.djangoproject.com/en/1.9/topics/python3/#str-and-unicode-methods
- Utiliser `six.text_type` à la place de `unicode`
Fixes#2.
Tobast/pep8
Modification du code pour le rendre valide PEP8. J'avais beaucoup trop de rouge sur mon écran :D
Entre autres :
* 80 colonnes
* " = " → "=" pour les paramètres nommés de fonctions
* indentation
De plus, `$ pep8 {.,apache,bda,cof,gestioncof}/*.py` ne renvoie aucune erreur, et `python manage.py runserver` se lance sans raler. Les quelques pages que j'ai chargé au hasard se sont bien portées.
See merge request !57
Taken MR comments into account:
* `and` is considered a binary operator, thus put at the beginning of the line when splitting a line,
* same for `+`,
* same for `.` (different reasons).
Liens vers la liste des participants à un tirage
Ces nouveaux liens sont sur la page d'accueil dans la partie BdA en
bas de l'écran.
Fixes#37
See merge request !48
Corrige des urls
- Les urls vers les évéments et sondage avaient un `survey`/`event`
de trop : `/survey/survey/1`.
- On ajoute un `^` dans lers urls de `gestioncof.urls` pour demander
des urls exactes : `export/mega` et non `export/trucmega`
See merge request !47
- Les urls vers les évéments et sondage avaient un `survey`/`event`
de trop : `/survey/survey/1`.
- On ajoute un `^` dans lers urls de `gestioncof.urls` pour demander
des urls exactes : `export/mega` et non `export/trucmega`
Répare un lien vers une image.
Dans la vue qui affiche la liste des demandes de petits cours, l'image
`image/none.png` ne s'affichait pas à cause d'un lien invalide.
See merge request !46
Répare les sondages
Cause de l'erreur :
Lors du déplacement des formulaires vers de fichiers différents, une
méthode du formulaire des sondages a été oubliée.
Erreur localisée dans 65667f6652Fixes#42
See merge request !37
Cause de l'erreur :
Lors du déplacement des formulaires vers de fichiers différents, une
méthode du formulaire des sondages a été oubliée.
Erreur localisée dans 65667f6652
Kerl/fusion bda
Ce patch fusionne les trois applications `bda`, `bda2`, `bda3` existantes en une seule qui peut gérer autant de tirage que souhaité par le BdA.
Après avoir appliqué ce patch, il est nécessaire d'effectuer les migrations qui vont avec : `python manage.py migrate`
Fixes#3
See merge request !17
- Les tirages ont un champ `active` pour indiquer si le tirage doit
être affiché ou considéré comme archivé.
- La page d'accueil n'affiche que les tirages actifs.
- Le formulaire d'inscription ne propose plus que les spectacles du
tirage concerné.
GestioCOF utilisait une implémentation locale du module `csv` compatible
avec `unicode`. Il existe un module PyPy du même nom qui fait la même
chose, autant l'utiliser (par ailleurs, il fonctionne plus sainement
avec Python 3).
Précédemment, GestioCOF utilisait django-cas, qui n'est plus maintenu.
Ceci le remplace par django-cas-ng, un fork plus récent et maintenu.
En particulier, django-cas-ng est compatible avec Python 3,
contrairement à django-cas.
Les CSS, JS et Images sont désormais dans des dossiers
`$app/static/{css/js/images}` où `$app` désigne l'application qui les utilise,
en l'occurrence `gestioncof`, `bda`, `bda2` et `bda3`.