-
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
PASS IAE: La date de début du contrat doit être est après la date de fin du PASS [GEN-2225] #5248
base: master
Are you sure you want to change the base?
PASS IAE: La date de début du contrat doit être est après la date de fin du PASS [GEN-2225] #5248
Conversation
Useful when providing a DateField to a query on the DateTimeField of another field/model Refactor make_date_timezone_aware to use duck-typing
…igibility Extend tests for PASS IAE validity
last_valid_diagnosis = self.last_considered_valid(job_seeker, for_siae=for_siae) | ||
return job_seeker.has_valid_approval_for_date(on_date) or ( | ||
last_valid_diagnosis and last_valid_diagnosis.expires_at > make_date_timezone_aware(on_date) | ||
) | ||
|
||
def last_considered_valid(self, job_seeker, for_siae=None, prefetch=None): |
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.
last_considered_valid
m'a posé une colle. Avec la description du méthode, il me semble que c'est la dernière diagnostique aujourd'hui pour le candidat, et que je devrais ignorer le fonction dans ce PR.
Par contre, c'est utilisé dans le modèle JobApplication
, dans get_eligibility_diagnosis
:
return EligibilityDiagnosis.objects.last_considered_valid(self.job_seeker, for_siae=self.to_company)
Donc c'est possible que ce fonction devrait produire une éligibilité qui est valide pour la date de début d'embauche
@@ -423,6 +423,14 @@ def test_list_for_siae_filtered_by_eligibility_validated(self, client): | |||
response = client.get(reverse("apply:list_for_siae"), {"eligibility_validated": True}) | |||
assert response.context["job_applications_page"].object_list == [] | |||
|
|||
# Not expired, but will be when the job starts | |||
diagnosis.expires_at = timezone.now() + datetime.timedelta(days=1) |
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.
Dans une autre assertion de ce test nous avons :
# Make sure the diagnostic expired - it should be ignored
diagnosis.expires_at = timezone.now() - datetime.timedelta(days=diagnosis.EXPIRATION_DELAY_MONTHS * 31 + 1)
Pourquoi on utilise EXPIRATION_DELAY_MONTHS
ici ? Ce n'est pas considéré expiré si c'est un jour après le expires_at
?
🤔 Pourquoi ?
En ce moment c'est possible d'embaucher un candidat après son PASS IAE est expiré, car notre logique cible
timezone.now()
quand il devrait ciblerhiring_start_at
de la poste.🍰 Comment ?
J'ai extendé les utilités des modèles et ses managers à considérer la date d'embauche où nécessaire.
J'ai rélu la logique autor des approbations et des diagnostiques d'éligibilité et j'ai fais des fixes impliqués par la cause du bug (que le
hiring_start_at
est impliqué dans la validité du pass).Le champ
expires_at
utiliseDateTimeField
maishiring_start_at
du JobApplication utiliseDateField
. J'ai inclus un fonction utilitairemake_date_timezone_aware
pour soutenir le gestion des dates.Finalement j'ai fais quelques petites optimisations sur les queries, qui a causé des groses changements aux snapshots.
🚨 À vérifier