-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Création de compte candidat : déconnecter la modification de compte du parcours apply
#5177
Conversation
949cadb
to
421d9eb
Compare
ad489ff
to
cfc65f2
Compare
Grosse PR en apparence, mais il y a encore plein de copiers-collers, pour des vues trop différentes pour être utilisées avec 2 systèmes d'URLs. Je vais séparer les commits, en faire au moins 1 temporaire/fixup pour pouvoir facilement lire les différences. |
f6733c7
to
0e3160e
Compare
itou/www/job_seekers_views/views.py
Outdated
if not request.user.is_authenticated: | ||
# Do nothing, LoginRequiredMixin will raise in dispatch() | ||
return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comportement précédent :
Ce bout de code n'était présent que dans Step1 : si non connecté, on sort de setup()
et le dispatch()
s'occupe du reste. Si on est connecté, on init
une session.
Dans les étapes suivantes : si on n'a pas de session, on a une erreur 403.
Ce comportement ne fonctionne plus, vu qu'on initialise la session avant d'arriver à la page.
Un peu plus bas, on a besoin de self.user.can_edit_personal_information()
, donc j'ai forcé la vérification de la connexion dans le setup()
, comme à l'étape 1.
Ce qui devait être, j'imagine, un petit hack, se retrouve copié plusieurs fois. Il faudra peut-être retravailler ce qui se fait dans les setup()
et dispatch()
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On sera sauvé par #5178 si je ne me trompe pas :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Difficile à relire. Je ne sais pas trop comment améliorer ça. C'est déjà en 2 étapes :
- nouvelles URLs/vues
- réinjection des URLs/vues dépréciées
Ça permet de lire un peu plus facilement la PR.
J'ai déjà hâte d'enlever les vues/URLs dépréciées 😅 D'ailleurs @xavfernandez je vois des |
e91653d
to
4f54c16
Compare
Mmh, je remarque un petit comportement dérangeant : quand on valide un des formulaires, on enregistre en session. Si on annule, on sort du bloc, mais la session contient toujours les informations modifiées. Lorsqu'on retourne dans le bloc, ce sont les informations modifiées (en session) qu'on voit. Il faudrait soit :
Edit : le fonctionnement avec la vue Start règle ce problème, une nouvelle session est crée ! |
4f54c16
to
ab3018a
Compare
b6899a0
to
46810fe
Compare
1ccbb61
to
7357926
Compare
itou/www/job_seekers_views/views.py
Outdated
self.job_seeker_session = SessionNamespace.create_uuid_namespace( | ||
request.session, | ||
data={ | ||
"config": {"from_url": from_url, "tunnel": "job-seeker-update"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je me pose la question de la pertinence du nom.
On parlait tout à l'heure de kind
ou session_kind
, c'est peut-être plus générique ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai une préférence pour kind
ou session_kind
plutôt que tunnel
oui :)
At this point, when leaving CheckNir views for CheckJobSeekerInformations, we are leaving the job_seeker_views block. Deleting the job_seeker_session when leaving avoids getting too many unused sessions.
The UpdateJobSeeker* views do not inherit from `apply` views anymore. The URL is changed to use the `session_uuid` parameter. The same set of URLs is used for applying and for hiring. For those Update views, the session is initialized by a new `start` view.
7357926
to
96cb7ee
Compare
This commit allows two things: - prevent errors in production (b/c continuous integration) - keep track of the deprecated code that will have to be removed when we are assured that the old URLs aren't in use anymore
…ed for When initializing the job_seeker_session, we set a `tunnel` key to determine which action will be performed in the job_seekers_views block with that session (here, `job-seeker-update`). This is to prevent a (malicious) user from playing with session, and using a session that was not intended for updating a job seeker to do so.
96cb7ee
to
f4446b0
Compare
Merci @xavfernandez pour ton œil aiguisé ! pour les
|
Il pourrait dégager également oui 👍 (dans un autre commit car pas grand chose à voir avec la choucroute) |
Since #5178, views are *protected* by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'avoue ne pas avoir regardé tous les tests en détails mais ça me semble bien 👍
Je les relis une dernière fois et fusionne alors. La suite, je pense que ça va être la classe |
🥁 La recette jetable est prête ! 👉 Je veux tester cette PR ! |
🤔 Pourquoi ?
Dans l'optique de Créer un compte candidat depuis l'espace Mes candidats, on Extrait la création de compte candidat du parcours de candidature.
Dans cette PR, on déconnecte les étapes de modification de candidat, pour que ces vues ne dépendent plus de classes dans
apply
.Il y a un peu plus de changements que dans les vues précédentes, puisque les vues de
Update*
utilisaient une session un peu différente. Les URLs utilisaient lejob_seeker.public_id
.On introduit ici le concept de vue
start
, comme il existe pourapply
. Le blocapply
dirige vers cette vue lorsqu'il s'agit de modifier un compte candidat, et c'est cette vue qui initialise la session.À noter :
Pour ne pas casser les parcours de candidature en cours en production, nous devons temporairement avoir 2 jeux d'URLs fonctionnels. Les deux fonctionnements sont trop différents, on a également 2 jeux de vues.
Les autres étapes : https://www.notion.so/plateforme-inclusion/Extraire-le-parcours-de-cr-ation-de-compte-candidat-130e8fa5c35b80b9947cea2573cf90e7?pvs=4#130e8fa5c35b800b966fdd4722014657