À la demande du COF, car il y a des parents qui demandent et illes se
retrouvent à changer les demande "Autres" en "Licence 3" via l'admin
Django. En pratique, il y aura sans doute très peu de profs qui
proposent des cours de Master (aussi appelé "le problème des gens qui
remplissent leurs compétences une seule fois en conscritude"); il
faudra donc tout de même laisser la possibilité au COF de changer
manuellement pour matcher avec "Licence 3", mais faisons une chose à la
fois. On pourrait aussi harceler les gens pour qu'illes mettent à jour
leurs compétences en début d'année (c'est-à-dire mettre un bandeau
temporaire pour leur rappeler que si illes mettent à jour leurs
compétences ça augmente leur chance d'obtenir des cours).
Ce patch rend les décorateurs `cof_required` et `buro_required` plus
agréables pour les utilisateurs; en particulier, ils ne font plus une
redirection sur la page de connexion si la condition n'est pas remplie.
Dans les deux cas :
- Si l'utilisateur n'est pas connecté, il est renvoyé sur la page de
connexion
- Si l'utilisateur est connecté mais pas membre du COF/du Burô, une
page d'erreur "403 Forbidden" est affichée. Dans le cas de
`cof_required` cette page demande à l'utilisateur de s'inscrire au
COF; dans le cas `buro_required` elle indique simplement que la page
est réservée au Burô.
gestioncof/
* gestioncof/templates/buro-denied.html: Ajouté.
* decorators.py:
bda/
* tests/test_views.py:
Modifié pour correctement gérer le nouveau fonctionnement des
décorateurs.
Ce patch simplifie le code (dupliqué) de calcul des proposition de profs
pour une demande dans une méthode du modèle`Demande`, et l'utilise. Il
s'agit d'un préparatif pour #208; ce code devra être réutilisé dans le
nouveau système.
J'en ai également profité pour nettoyer deux vues de `petitscours`,
`retraitement` et `demande_raw`, qui dupliquaient les vues `traitement`
et `demande`, en utilisant des arguments nommés.
petitscours/
* models.py:
Définition de `get_proposals` pour calculer les propositions de
profs pour une demande.
* views.py:
Utilise `get_proposals` à la place du code copié-collé. La fonction
`_finalize_traitement` est maintenant responsable du calcul des
`proposed_for` et `attribdata` à fournir aux templates.
* urls.py:
Passe directement les arguments aux vues plutôt que de faire deux
fonctions séparées.
L'application `petitscours` reste assez fortement couplée à
`gestioncof`, et n'est pas (encore ?) faite pour être utilisée
séparément.
De façon similaire, et afin de minimiser de potentiels problèmes dûs à
des migrations, les modèles de l'application `petitscours` utilisent
`app_label = "gestioncof"` pour que Django les considère comme faisant
partie de l'application `"gestioncof"`. Ils pourront être migrés dans
un second temps si cela s'avère nécessaire.
Les changements sont nombreux, mais assez simples: il s'agit
principalement de déplacer des fichiers et changer des imports. J'ai
également profité de l'occasion pour réorganiser les templates afin de
les placer dans l'espace de nom "petitscours/".
cof/
* settings/common.py: Add `petitscours` app
* urls.py: Use `petitscours.urls`
petitscours/
* __init__.py: Added.
* tests/__init__.py: Added.
* tests/utils.py: Added.
* urls.py: Added.
gestioncof/
* admin.py:
* management/commands/loaddevdata.py:
* models.py:
* signals.py: Typo.
* urls.py:
Moved petitscours_patterns to petitscours.urls
* petits_cours_forms.py:
Moved to petitscours/forms.py
* petits_cours_models.py:
Moved to petitscours/models.py
* petits_cours_views.py:
Moved to petitscours/views.py
* tests/utils.py:
* tests/test_petitscours_views.py:
Moved to petitscours/tests/test_petitscours_views.py
* templates/base_title_petitscours.html:
Moved to petitscours/templates/petitscours/base_title.html
* templates/demande-petit-cours.html:
Moved topetitscours/templates/petitscours/demande.html
* templates/gestioncof/details_demande_petit_cours.html:
Moved to petitscours/templates/petitscours/demande_detail.html
* templates/petits_cours_demandes_list.html:
Moved to petitscours/templates/petitscours/demande_list.html
* templates/demande-petit-cours-raw.html:
Moved to petitscours/templates/petitscours/demande_raw.html
* templates/details_demande_petit_cours_infos.html:
Moved to petitscours/templates/petitscours/details_demande_infos.html
* templates/inscription-petit-cours.html:
Moved to petitscours/templates/petitscours/inscription.html
* templates/inscription-petit-cours-formset.html:
Moved to petitscours/templates/petitscours/inscription_formset.html
* templates/gestioncof/traitement_demande_petit_cours.html:
Moved to petitscours/templates/petitscours/traitement_demande.html
* templates/gestioncof/traitement_demande_petit_cours_autre_niveau.html:
Moved to petitscours/templates/petitscours/traitement_demande_autre_niveau.html
* templates/gestioncof/traitement_demande_petit_cours_success.html:
Moved to petitscours/templates/petitscours/traitement_demande_success.html
cas.eleves.ens.fr has /serviceValidate, not /p3/serviceValidate, and is
thus *probably* a V2 CAS server. python-cas was broken and using
/serviceValidate for V3 while it should have been /p3/serviceValidate,
see
c3ac4b6c76
On CI:
- black and isort in check mode must pass.
- flake8 only prints errors
WIP: make it also failed.
On pre-commit:
- black and isort will format staged files, if installed on path.
- flake8 prints its output if necessary.