def step_eligibility(request, siae_pk, template_name="apply/submit_step_eligibility.html"): """ Check eligibility. """ session_data = request.session[settings.ITOU_SESSION_JOB_APPLICATION_KEY] siae = get_object_or_404(Siae.active_objects, pk=session_data["to_siae_pk"]) user_info = get_user_info(request) next_url = reverse("apply:step_application", kwargs={"siae_pk": siae_pk}) step_required = (user_info.is_authorized_prescriber and siae.is_subject_to_eligibility_rules) if not step_required: return HttpResponseRedirect(next_url) job_seeker = get_user_model().objects.get(pk=session_data["job_seeker_pk"]) # This step is only required if the job seeker hasn't already # an eligibility diagnosis. if job_seeker.has_eligibility_diagnosis: return HttpResponseRedirect(next_url) if request.method == "POST": EligibilityDiagnosis.create_diagnosis(job_seeker, user_info) messages.success(request, _("Éligibilité confirmée !")) return HttpResponseRedirect(next_url) context = {"siae": siae, "job_seeker": job_seeker} return render(request, template_name, context)
def eligibility(request, job_application_id, template_name="apply/process_eligibility.html"): """ Check eligibility. """ queryset = JobApplication.objects.siae_member_required(request.user) job_application = get_object_or_404( queryset, id=job_application_id, state=JobApplicationWorkflow.STATE_PROCESSING) if not job_application.to_siae.is_subject_to_eligibility_rules: raise Http404() if request.method == "POST": if not request.POST.get("confirm-eligibility") == "1": messages.error( request, _("Vous devez confirmer l'éligibilité du candidat.")) else: user_info = get_user_info(request) EligibilityDiagnosis.create_diagnosis(job_application.job_seeker, user_info) messages.success(request, _("Éligibilité confirmée !")) next_url = reverse( "apply:details_for_siae", kwargs={"job_application_id": job_application.id}, ) return HttpResponseRedirect(next_url) context = {"job_application": job_application} return render(request, template_name, context)
def test_create_diagnosis_with_administrative_criteria(self): job_seeker = JobSeekerFactory() prescriber_organization = AuthorizedPrescriberOrganizationWithMembershipFactory() user = prescriber_organization.members.first() user_info = UserInfo( user=user, kind=KIND_PRESCRIBER, prescriber_organization=prescriber_organization, is_authorized_prescriber=True, siae=None, ) level1 = AdministrativeCriteria.Level.LEVEL_1 level2 = AdministrativeCriteria.Level.LEVEL_2 criteria1 = AdministrativeCriteria.objects.get(level=level1, name="Bénéficiaire du RSA") criteria2 = AdministrativeCriteria.objects.get(level=level2, name="Niveau d'étude 3 ou infra") criteria3 = AdministrativeCriteria.objects.get(level=level2, name="Senior (+50 ans)") diagnosis = EligibilityDiagnosis.create_diagnosis( job_seeker, user_info, administrative_criteria=[criteria1, criteria2, criteria3] ) self.assertEqual(diagnosis.job_seeker, job_seeker) self.assertEqual(diagnosis.author, user) self.assertEqual(diagnosis.author_kind, KIND_PRESCRIBER) self.assertEqual(diagnosis.author_siae, None) self.assertEqual(diagnosis.author_prescriber_organization, prescriber_organization) administrative_criteria = diagnosis.administrative_criteria.all() self.assertEqual(3, administrative_criteria.count()) self.assertIn(criteria1, administrative_criteria) self.assertIn(criteria2, administrative_criteria) self.assertIn(criteria3, administrative_criteria)
def step_eligibility(request, siae_pk, template_name="apply/submit_step_eligibility.html"): """ Check eligibility (as an authorized prescriber). """ session_data = request.session[settings.ITOU_SESSION_JOB_APPLICATION_KEY] siae = get_object_or_404(Siae, pk=session_data["to_siae_pk"]) next_url = reverse("apply:step_application", kwargs={"siae_pk": siae_pk}) if not siae.is_subject_to_eligibility_rules: return HttpResponseRedirect(next_url) user_info = get_user_info(request) job_seeker = get_object_or_404(User, pk=session_data["job_seeker_pk"]) approvals_wrapper = get_approvals_wrapper(request, job_seeker, siae) skip = ( # Only "authorized prescribers" can perform an eligibility diagnosis. not user_info.is_authorized_prescriber # Eligibility diagnosis already performed. or job_seeker.has_valid_diagnosis()) if skip: return HttpResponseRedirect(next_url) data = request.POST if request.method == "POST" else None form_administrative_criteria = AdministrativeCriteriaForm(request.user, siae=None, data=data) if request.method == "POST" and form_administrative_criteria.is_valid(): EligibilityDiagnosis.create_diagnosis( job_seeker, user_info, administrative_criteria=form_administrative_criteria.cleaned_data) messages.success(request, "Éligibilité confirmée !") return HttpResponseRedirect(next_url) context = { "siae": siae, "job_seeker": job_seeker, "approvals_wrapper": approvals_wrapper, "form_administrative_criteria": form_administrative_criteria, } return render(request, template_name, context)
def eligibility(request, job_application_id, template_name="apply/process_eligibility.html"): """ Check eligibility (as an SIAE). """ queryset = JobApplication.objects.siae_member_required(request.user) job_application = get_object_or_404( queryset, id=job_application_id, state__in=[ JobApplicationWorkflow.STATE_PROCESSING, JobApplicationWorkflow.STATE_POSTPONED ], ) if not job_application.to_siae.is_subject_to_eligibility_rules: raise Http404() form_administrative_criteria = AdministrativeCriteriaForm( request.user, siae=job_application.to_siae, data=request.POST or None) form_confirm_eligibility = ConfirmEligibilityForm( data=request.POST or None) if request.method == "POST" and form_confirm_eligibility.is_valid( ) and form_administrative_criteria.is_valid(): user_info = get_user_info(request) EligibilityDiagnosis.create_diagnosis( job_application.job_seeker, user_info, administrative_criteria=form_administrative_criteria.cleaned_data) messages.success(request, _("Éligibilité confirmée !")) next_url = reverse("apply:details_for_siae", kwargs={"job_application_id": job_application.id}) return HttpResponseRedirect(next_url) context = { "approvals_wrapper": job_application.job_seeker.approvals_wrapper, "job_application": job_application, "form_administrative_criteria": form_administrative_criteria, "form_confirm_eligibility": form_confirm_eligibility, } return render(request, template_name, context)
def step_eligibility(request, siae_pk, template_name="apply/submit_step_eligibility.html"): """ Check eligibility. """ session_data = request.session[settings.ITOU_SESSION_JOB_APPLICATION_KEY] siae = get_object_or_404(Siae.active_objects, pk=session_data["to_siae_pk"]) next_url = reverse("apply:step_application", kwargs={"siae_pk": siae_pk}) if not siae.is_subject_to_eligibility_rules: return HttpResponseRedirect(next_url) user_info = get_user_info(request) job_seeker = get_user_model().objects.get(pk=session_data["job_seeker_pk"]) approvals_wrapper = get_approvals_wrapper(request, job_seeker) skip = ( # Only "authorized prescribers" can perform an eligibility diagnosis. not user_info.is_authorized_prescriber # Eligibility diagnosis already performed. or job_seeker.has_eligibility_diagnosis) if skip: return HttpResponseRedirect(next_url) if request.method == "POST": EligibilityDiagnosis.create_diagnosis(job_seeker, user_info) messages.success(request, _("Éligibilité confirmée !")) return HttpResponseRedirect(next_url) context = { "siae": siae, "job_seeker": job_seeker, "approvals_wrapper": approvals_wrapper, } return render(request, template_name, context)
def test_create_diagnosis(self): job_seeker = JobSeekerFactory() siae = SiaeWithMembershipFactory() user = siae.members.first() user_info = UserInfo( user=user, kind=KIND_SIAE_STAFF, prescriber_organization=None, is_authorized_prescriber=False, siae=siae ) diagnosis = EligibilityDiagnosis.create_diagnosis(job_seeker, user_info) self.assertEqual(diagnosis.job_seeker, job_seeker) self.assertEqual(diagnosis.author, user) self.assertEqual(diagnosis.author_kind, KIND_SIAE_STAFF) self.assertEqual(diagnosis.author_siae, siae) self.assertEqual(diagnosis.author_prescriber_organization, None) self.assertEqual(diagnosis.administrative_criteria.count(), 0)