Example #1
0
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)
Example #2
0
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)
Example #3
0
    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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
    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)