Esempio n. 1
0
def dissertation_jury_new(request, pk):
    dissert = get_object_or_404(dissertation.Dissertation, pk=pk)
    if dissert.author_is_logged_student(request):
        count_dissertation_role = dissertation_role.count_by_dissertation(
            dissert)
        count_reader = dissertation_role.count_reader_by_dissertation(dissert)
        offer_pro = offer_proposition.search_by_offer(
            dissert.offer_year_start.offer)
        if offer_pro.student_can_manage_readers and count_dissertation_role < 5 and count_reader < 3:
            if request.method == "POST":
                form = DissertationRoleForm(request.POST)
                if form.is_valid():
                    data = form.cleaned_data
                    if not dissertation_role.count_by_status_student_dissertation(
                            data['status'], data['adviser'],
                            data['dissertation']):
                        form.save()
                        justification = "%s %s" % ("student_add_reader",
                                                   data['adviser'])
                        dissertation_update.add(request,
                                                dissert,
                                                dissert.status,
                                                justification=justification)
                return redirect('dissertation_detail', pk=dissert.pk)
            else:
                form = DissertationRoleForm(initial={
                    'status': "READER",
                    'dissertation': dissert
                })
                return layout.render(request, 'dissertation_reader_edit.html',
                                     {'form': form})
        else:
            return redirect('dissertation_detail', pk=dissert.pk)
    else:
        return redirect('dissertations')
Esempio n. 2
0
def dissertation_new(request):
    person = mdl.person.find_by_user(request.user)
    student = mdl.student.find_by_person(person)
    offers = mdl.offer.find_by_student(student)
    offer_propositions = offer_proposition.search_by_offers(offers)
    date_now = timezone.now().date()

    if any(o.start_visibility_dissertation <= date_now <= o.end_visibility_dissertation for o in offer_propositions):
        if request.method == "POST":
            form = DissertationForm(request.POST)
            if form.is_valid():
                memory = form.save()
                dissertation_update.add(request, memory, memory.status, justification="student_creation_dissertation")
                return redirect('dissertation_detail', pk=memory.pk)
            else:
                form.fields["offer_year_start"].queryset = offer_year.find_by_student_enrollment(student)
                form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
        else:
            form = DissertationForm(initial={'active': True, 'author': student})
            form.fields["offer_year_start"].queryset = offer_year.find_by_student_enrollment(student)
            form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
        return layout.render(request, 'dissertation_form.html',
                             {'form': form,
                              'defend_periode_choices': dissertation.DEFEND_PERIODE_CHOICES})
    else:
        return redirect('dissertations')
Esempio n. 3
0
def dissertation_jury_new(request, pk):
    dissert = get_object_or_404(dissertation.Dissertation, pk=pk)
    if dissert.author_is_logged_student(request):
        count_dissertation_role = dissertation_role.count_by_dissertation(dissert)
        count_reader = dissertation_role.count_reader_by_dissertation(dissert)
        offer_pro = offer_proposition.search_by_offer(dissert.offer_year_start.offer)
        if offer_pro.student_can_manage_readers and count_dissertation_role < 5 and count_reader < 3:
            if request.method == "POST":
                form = DissertationRoleForm(request.POST)
                if form.is_valid():
                    data = form.cleaned_data
                    if not dissertation_role.count_by_status_student_dissertation(data['status'],
                                                                                  data['adviser'],
                                                                                  data['dissertation']):
                        form.save()
                        justification = "%s %s" % ("student_add_reader", data['adviser'])
                        dissertation_update.add(request, dissert, dissert.status, justification=justification)
                return redirect('dissertation_detail', pk=dissert.pk)
            else:
                form = DissertationRoleForm(initial={'status': "READER", 'dissertation': dissert})
                return layout.render(request, 'dissertation_reader_edit.html', {'form': form})
        else:
            return redirect('dissertation_detail', pk=dissert.pk)
    else:
        return redirect('dissertations')
Esempio n. 4
0
def dissertation_to_dir_submit(request, pk):
    memory = get_object_or_404(dissertation.Dissertation, pk=pk)
    person = mdl.person.find_by_user(request.user)
    student = mdl.student.find_by_person(person)
    submitted_memories_count = dissertation.count_submit_by_user(
        student, memory.offer_year_start.offer)

    if memory.author_is_logged_student(
            request) and submitted_memories_count == 0:
        old_status = memory.status
        new_status = dissertation.get_next_status(memory, "go_forward")
        status_dict = dict(dissertation.STATUS_CHOICES)
        new_status_display = status_dict[new_status]
        if request.method == "POST":
            form = DissertationUpdateForm(request.POST)
            if form.is_valid():
                memory.go_forward()
                data = form.cleaned_data
                justification = data['justification']
                dissertation_update.add(request,
                                        memory,
                                        old_status,
                                        justification=justification)
                return redirect('dissertation_detail', pk=pk)
        else:
            form = DissertationUpdateForm()
        return layout.render(
            request, 'dissertation_add_justification.html', {
                'form': form,
                'dissertation': memory,
                "new_status_display": new_status_display
            })
    else:
        return redirect('dissertations')
Esempio n. 5
0
def dissertation_to_dir_submit(request, pk):
    memory = get_object_or_404(dissertation.Dissertation, pk=pk)
    person = mdl.person.find_by_user(request.user)
    student = mdl.student.find_by_person(person)
    submitted_memories_count = dissertation.count_submit_by_user(student, memory.offer_year_start.offer)

    if memory.author_is_logged_student(request) and submitted_memories_count == 0:
        old_status = memory.status
        new_status = dissertation.get_next_status(memory, "go_forward")
        status_dict = dict(dissertation.STATUS_CHOICES)
        new_status_display = status_dict[new_status]
        if request.method == "POST":
            form = DissertationUpdateForm(request.POST)
            if form.is_valid():
                memory.go_forward()
                data = form.cleaned_data
                justification = data['justification']
                dissertation_update.add(request, memory, old_status, justification=justification)
                return redirect('dissertation_detail', pk=pk)
        else:
            form = DissertationUpdateForm()
        return layout.render(request, 'dissertation_add_justification.html',
                             {'form': form, 'dissertation': memory, "new_status_display": new_status_display})
    else:
        return redirect('dissertations')
def _manage_draft_or_ko_dissertation_form(dissert, education_groups, request):
    if request.method == "POST":
        form = DissertationEditForm(request.POST, instance=dissert)
        if form.is_valid():
            dissert = form.save()
            dissertation_update.add(
                request,
                dissert,
                dissert.status,
                justification="student edited the dissertation")
            return redirect('dissertation_detail', pk=dissert.pk)
        else:
            form.fields[
                "education_group_year"].queryset = education_group_year.find_by_education_groups(
                    education_groups)
            form.fields[
                "proposition_dissertation"].queryset = proposition_dissertation.find_by_education_groups(
                    education_groups)
    else:
        form = DissertationEditForm(instance=dissert)
        form.fields[
            "education_group_year"].queryset = education_group_year.find_by_education_groups(
                education_groups)
        form.fields[
            "proposition_dissertation"].queryset = proposition_dissertation.find_by_education_groups(
                education_groups)
    return layout.render(request, 'dissertation_edit_form.html', {
        'form': form,
        'defend_periode_choices': dissertation.DEFEND_PERIODE
    })
Esempio n. 7
0
def manager_dissertations_edit(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if adviser_can_manage(dissert,adv):
        offers = faculty_adviser.search_by_adviser(adv)
        if request.method == "POST":
            form = ManagerDissertationEditForm(request.POST, instance=dissert)
            if form.is_valid():
                dissert = form.save()
                justification = "manager_edit_dissertation"
                dissertation_update.add(request, dissert, dissert.status, justification=justification)
                return redirect('manager_dissertations_detail', pk=dissert.pk)
            else:
                form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
                form.fields["author"].queryset = mdl.student.find_by_offer(offers)
                form.fields["offer_year_start"].queryset = mdl.offer_year.find_by_offer(offers)
        else:
            form = ManagerDissertationEditForm(instance=dissert)
            form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
            form.fields["author"].queryset = mdl.student.find_by_offer(offers)
            form.fields["offer_year_start"].queryset = mdl.offer_year.find_by_offer(offers)

        return layout.render(request, 'manager_dissertations_edit.html',
                             {'form': form,
                              'dissert': dissert,
                              'defend_periode_choices': dissertation.DEFEND_PERIODE_CHOICES})
    else:
        return redirect('manager_dissertations_list')
Esempio n. 8
0
def manager_dissertations_jury_new(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    count_dissertation_role = dissertation_role.count_by_dissertation(dissert)
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if adviser_can_manage(dissert,adv):
        if count_dissertation_role < 4 and dissert.status != 'DRAFT':
            if request.method == "POST":
                form = ManagerDissertationRoleForm(request.POST)
                if form.is_valid():
                    data = form.cleaned_data
                    status = data['status']
                    adv = data['adviser']
                    diss = data['dissertation']
                    justification = "%s %s %s" % ("manager_add_jury", str(status), str(adv))
                    dissertation_update.add(request, dissert, dissert.status, justification=justification)
                    dissertation_role.add(status, adv, diss)
                    return redirect('manager_dissertations_detail', pk=dissert.pk)
                else:
                    form = ManagerDissertationRoleForm(initial={'dissertation': dissert})
            else:
                form = ManagerDissertationRoleForm(initial={'dissertation': dissert})
            return layout.render(request, 'manager_dissertations_jury_edit.html', {'form': form, 'dissert': dissert})
        else:
            return redirect('manager_dissertations_detail', pk=dissert.pk)

    else:
        return redirect('manager_dissertations_list')
Esempio n. 9
0
def manager_dissertations_jury_new_ajax(request):
    pk_dissert = request.POST.get("pk_dissertation", '')
    status_choice = request.POST.get("status_choice", '')
    id_adviser_of_dissert_role = request.POST.get("adviser_pk", '')
    if not id_adviser_of_dissert_role or not status_choice or not pk_dissert:
        return HttpResponse(status=ERROR_405_BAD_REQUEST)
    else:
        dissert = dissertation.find_by_id(pk_dissert)
        adviser_of_dissert_role = adviser.get_by_id(
            int(id_adviser_of_dissert_role))
        count_dissertation_role = dissertation_role.count_by_dissertation(
            dissert)
        person = mdl.person.find_by_user(request.user)
        adv_manager = adviser.search_by_person(person)
        if adviser_can_manage(dissert, adv_manager) and count_dissertation_role < 4 and dissert.status != 'DRAFT' \
                and adviser_of_dissert_role is not None and dissert is not None:
            justification = "%s %s %s" % ("manager_add_jury", status_choice,
                                          adviser_of_dissert_role)
            dissertation_update.add(request,
                                    dissert,
                                    dissert.status,
                                    justification=justification)
            dissertation_role.add(status_choice, adviser_of_dissert_role,
                                  dissert)
            return HttpResponse(status=HTTP_OK)
        else:
            return HttpResponse(status=ERROR_403_NOT_FORBIDDEN)
Esempio n. 10
0
def dissertations_to_dir_ko(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)

    if teacher_is_promotor(adv, dissert):
        old_status = dissert.status
        new_status = dissertation.get_next_status(dissert, "refuse")
        status_dict = dict(dissertation.STATUS_CHOICES)
        new_status_display = status_dict[new_status]

        if request.method == "POST":
            form = ManagerDissertationUpdateForm(request.POST)
            if form.is_valid():
                dissert.refuse()
                data = form.cleaned_data
                justification = data['justification']
                dissertation_update.add(request, dissert, old_status, justification=justification)
                return redirect('dissertations_detail', pk=pk)

        else:
            form = ManagerDissertationUpdateForm()

        return layout.render(request, 'dissertations_add_justification.html',
                             {'form': form, 'dissert': dissert, 'new_status_display': new_status_display})

    else:
        return redirect('dissertations_detail', pk=pk)
def manager_dissertations_to_dir_ok(request, pk):
    dissert = dissertation.find_by_id(pk)
    redirect_if_none(dissert, 'manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if (adviser_can_manage(dissert, adv)):
        old_status = dissert.status
        new_status = dissertation.get_next_status(dissert, "accept")
        status_dict = dict(dissertation.STATUS_CHOICES)
        new_status_display = status_dict[new_status]

        if request.method == "POST":
            form = ManagerDissertationUpdateForm(request.POST)
            if form.is_valid():
                dissert.manager_accept()
                data = form.cleaned_data
                justification = data['justification']
                dissertation_update.add(request, dissert, old_status, justification=justification)
                return redirect('manager_dissertations_detail', pk=pk)

        else:
            form = ManagerDissertationUpdateForm()

        return layout.render(request, 'manager_dissertations_add_justification.html',
                             {'form': form, 'dissert': dissert, 'new_status_display': new_status_display})
    else:
        return redirect('manager_dissertations_list')
Esempio n. 12
0
def manager_dissertations_jury_new_ajax(request):
    pk_dissert = request.POST.get("pk_dissertation", '')
    status_choice = request.POST.get("status_choice", '')
    id_adviser_of_dissert_role = request.POST.get("adviser_pk", '')
    if not id_adviser_of_dissert_role or not status_choice or not pk_dissert:
        return HttpResponse(status=status.HTTP_405_METHOD_NOT_ALLOWED)
    else:
        dissert = dissertation.find_by_id(pk_dissert)
        adviser_of_dissert_role = adviser.get_by_id(
            int(id_adviser_of_dissert_role))
        count_dissertation_role = dissertation_role.count_by_dissertation(
            dissert)
        person = mdl.person.find_by_user(request.user)
        adv_manager = adviser.search_by_person(person)
        if adviser_can_manage(dissert, adv_manager) \
                and count_dissertation_role < MAX_DISSERTATION_ROLE_FOR_ONE_DISSERTATION and dissert.status != 'DRAFT' \
                and adviser_of_dissert_role is not None and dissert is not None:
            justification = "%s %s %s" % (_("Manager add jury"), status_choice,
                                          adviser_of_dissert_role)
            dissertation_update.add(request,
                                    dissert,
                                    dissert.status,
                                    justification=justification)
            dissertation_role.add(status_choice, adviser_of_dissert_role,
                                  dissert)
            return HttpResponse(status=status.HTTP_200_OK)
        else:
            return HttpResponse(status=status.HTTP_403_FORBIDDEN)
Esempio n. 13
0
def dissertations_jury_new(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    offer_prop = offer_proposition.get_by_dissertation(dissert)
    if offer_prop is not None and teacher_is_promotor(adv, dissert):
        count_dissertation_role = dissertation_role.count_by_dissertation(dissert)
        if count_dissertation_role < 4 and offer_prop.adviser_can_suggest_reader:
            if request.method == "POST":
                form = ManagerDissertationRoleForm(request.POST)
                if form.is_valid():
                    data = form.cleaned_data
                    status = data['status']
                    adv = data['adviser']
                    diss = data['dissertation']
                    justification = "%s %s %s" % ("teacher_add_jury", str(status), str(adv))
                    dissertation_update.add(request, dissert, dissert.status, justification=justification)
                    dissertation_role.add(status, adv, diss)
                    return redirect('dissertations_detail', pk=dissert.pk)
                else:
                    form = ManagerDissertationRoleForm(initial={'dissertation': dissert})
            else:
                form = ManagerDissertationRoleForm(initial={'dissertation': dissert})
            return layout.render(request, 'dissertations_jury_edit.html', {'form': form, 'dissert': dissert})

    return redirect('dissertations_detail', pk=dissert.pk)
Esempio n. 14
0
def manager_dissertations_to_dir_submit(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    old_status = dissert.status
    new_status_display_str = new_status_display(dissert, "go_forward")
    if request.method == "POST":
        form = ManagerDissertationUpdateForm(request.POST)
        if form.is_valid():
            dissert.go_forward()
            data = form.cleaned_data
            justification = data['justification']
            dissertation_update.add(request,
                                    dissert,
                                    old_status,
                                    justification=justification)
            return redirect('manager_dissertations_detail', pk=pk)
    else:
        form = ManagerDissertationUpdateForm()
    return render(
        request, 'manager_dissertations_add_justification.html', {
            'form': form,
            'dissert': dissert,
            'new_status_display': new_status_display_str
        })
Esempio n. 15
0
def manager_dissertations_delete(request, pk):
    dissert = dissertation.find_by_id(pk)
    dissert.deactivate()
    dissertation_update.add(request,
                            dissert,
                            dissert.status,
                            justification=_("Delete dissertation"))
    return redirect('manager_dissertations_list')
Esempio n. 16
0
def _justification_dissert_role_delete_change(request, dissert, dissert_role, intitule):
    if dissert.status != 'DRAFT' and _role_can_be_deleted(dissert, dissert_role):
        justification = "%s %s" % (intitule, dissert_role)
        dissertation_update.add(request, dissert, dissert.status, justification=justification)
        dissert_role.delete()
        return True
    else:
        return False
Esempio n. 17
0
def manager_dissertations_to_dir_submit_list(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    old_status = dissert.status
    dissert.go_forward()
    dissertation_update.add(request, dissert, old_status)
    return redirect('manager_dissertations_wait_recep_list')
Esempio n. 18
0
def manager_dissertations_accept_eval_list(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    old_status = dissert.status
    dissert.manager_accept()
    dissertation_update.add(request, dissert, old_status)
    return redirect('manager_dissertations_wait_eval_list')
Esempio n. 19
0
def dissertation_delete(request, pk):
    memory = get_object_or_404(dissertation.Dissertation, pk=pk)
    if memory.author_is_logged_student(request):
        memory.deactivate()
        dissertation_update.add(request,
                                memory,
                                memory.status,
                                justification="student_set_active_false")
    return redirect('dissertations')
 def form_valid(self, form):
     result = super().form_valid(form)
     justification = "{} {}".format("Student added reader",
                                    form.cleaned_data['adviser'])
     dissert = self.dissertation
     dissertation_update.add(self.request,
                             dissert,
                             dissert.status,
                             justification=justification)
     return result
Esempio n. 21
0
def manager_dissertations_go_forward_from_list(request, pk, choice):
    dissert = dissertation.get_object_or_none(Dissertation, pk=pk)
    old_status = dissert.status
    if choice == 'ok':
        dissert.manager_accept()
    elif choice == 'ko':
        dissert.refuse()
    else:
        dissert.go_forward()
    dissertation_update.add(request, dissert, old_status)
    return redirect('manager_dissertations_search')
def dissertations_delete(request, pk):
    dissert = dissertation.find_by_id(pk)
    redirect_if_none(dissert, 'dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if teacher_is_promotor(adv, dissert):
        dissert.deactivate()
        dissertation_update.add(request, dissert, dissert.status, justification="teacher_set_active_false ")
        return redirect('dissertations_list')
    else:
        return redirect('dissertations_detail', pk=pk)
def manager_dissertations_delete(request, pk):
    dissert = dissertation.find_by_id(pk)
    redirect_if_none(dissert,'manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if (adviser_can_manage(dissert, adv)):
        dissert.deactivate()
        dissertation_update.add(request, dissert, dissert.status, justification="manager_set_active_false")

        return redirect('manager_dissertations_list')
    else:
        return redirect('manager_dissertations_list')
Esempio n. 24
0
def dissertation_reader_delete(request, pk):
    role = get_object_or_404(dissertation_role.DissertationRole, pk=pk)
    memory = role.dissertation
    if memory.author_is_logged_student(request):
        offer_pro = offer_proposition.search_by_offer(memory.offer_year_start.offer)
        if offer_pro.student_can_manage_readers and memory.status == 'DRAFT':
            justification = "%s %s" % ("student_delete_reader", str(role))
            dissertation_update.add(request, memory, memory.status, justification=justification)
            role.delete()
        return redirect('dissertation_detail', pk=memory.pk)
    else:
        return redirect('dissertations')
def manager_dissertations_accept_eval_list(request, pk):
    dissert = dissertation.find_by_id(pk)
    redirect_if_none(dissert, 'manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if (adviser_can_manage(dissert, adv)):
        old_status = dissert.status
        dissert.manager_accept()
        dissertation_update.add(request, dissert, old_status)

        return redirect('manager_dissertations_wait_eval_list')
    else:
        return redirect('manager_dissertations_wait_eval_list')
def dissertation_new(request, pk):
    person = request.user.person
    student = person.student_set.first()
    this_academic_year = academic_year.starting_academic_year()
    offer_enrollements = OfferEnrollment.objects.filter(
        student=student,
        education_group_year__academic_year=this_academic_year,
        enrollment_state__in=[
            offer_enrollment_state.SUBSCRIBED, offer_enrollment_state.PROVISORY
        ]).select_related('education_group_year',
                          'education_group_year__education_group')
    offer_propositions = OfferProposition.objects.filter(education_group__in=[
        offer_enrollment.education_group_year.education_group
        for offer_enrollment in offer_enrollements
    ])
    date_now = timezone.now().date()
    if any(o.start_visibility_dissertation <= date_now <=
           o.end_visibility_dissertation for o in offer_propositions):
        initial = {'active': True, 'author': student}
        if pk:
            prop_diss = get_object_or_404(PropositionDissertation, pk=pk)
            initial['proposition_dissertation'] = prop_diss.pk
        form = DissertationForm(request.POST or None, initial=initial)
        if form.is_valid():
            memory = form.save()
            dissertation_update.add(
                request,
                memory,
                memory.status,
                justification="Student created the dissertation : {}".format(
                    memory.title))
            return redirect('dissertation_detail', pk=memory.pk)

        form.fields[
            "education_group_year"].queryset = EducationGroupYear.objects.filter(
                offerenrollment__student=student,
                education_group__in=[
                    offer_prop.education_group
                    for offer_prop in offer_propositions
                ]).order_by("academic_year__year", "acronym")

        form.fields["proposition_dissertation"].queryset = \
            proposition_dissertation.find_by_education_groups(
                [offer_enroll.education_group_year.education_group for offer_enroll in offer_enrollements]
            )
        return render(request, 'dissertation_form.html', {
            'form': form,
            'defend_periode_choices': dissertation.DEFEND_PERIODE
        })
    else:
        return redirect('dissertations')
def manager_dissertations_role_delete(request, pk):
    dissert_role = dissertation_role.find_by_id(pk)
    redirect_if_none(dissert_role, 'manager_dissertations_list')
    dissert = dissert_role.dissertation
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if (adviser_can_manage(dissert, adv)):
        if dissert.status != 'DRAFT' and role_can_be_deleted(dissert, dissert_role):
            justification = "%s %s" % ("manager_delete_jury", str(dissert_role))
            dissertation_update.add(request, dissert, dissert.status, justification=justification)
            dissert_role.delete()
        return redirect('manager_dissertations_detail', pk=dissert.pk)
    else:
        return redirect('manager_dissertations_list')
def dissertations_role_delete(request, pk):
    dissert_role = dissertation_role.find_by_id(pk)
    redirect_if_none(dissert_role,'dissertations_list')
    dissert = dissert_role.dissertation
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    offer_prop = offer_proposition.get_by_dissertation(dissert)
    if offer_prop is not None and teacher_is_promotor(adv, dissert):
        if offer_prop.adviser_can_suggest_reader and role_can_be_deleted(dissert, dissert_role):
            justification = "%s %s" % ("teacher_delete_jury", str(dissert_role))
            dissertation_update.add(request, dissert, dissert.status, justification=justification)
            dissert_role.delete()

    return redirect('dissertations_detail', pk=dissert.pk)
Esempio n. 29
0
def manager_dissertations_to_dir_submit_list(request, pk):
    dissert = dissertation.find_by_id(pk)
    if dissert is None:
        return redirect('manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if (adviser_can_manage(dissert, adv)):
        old_status = dissert.status
        dissert.go_forward()
        dissertation_update.add(request, dissert, old_status)

        return redirect('manager_dissertations_wait_recep_list')

    else:
        return redirect('manager_dissertations_list')
Esempio n. 30
0
 def save(self, commit=True):
     data = self.cleaned_data
     status = data['status']
     adv = data['adviser']
     diss = data['dissertation']
     justification = self._get_justification()
     dissertation_update.add(self.request,
                             diss,
                             status,
                             justification=justification)
     if status == dissertation_role_status.PROMOTEUR:
         instance, created = DissertationRole.objects.update_or_create(
             dissertation=diss, status=status, defaults={'adviser': adv})
     else:
         instance = super().save(commit)
     return instance
Esempio n. 31
0
def dissertation_reader_delete(request, pk):
    role = get_object_or_404(dissertation_role.DissertationRole, pk=pk)
    memory = role.dissertation
    if memory.author_is_logged_student(request):
        offer_pro = offer_proposition.search_by_offer(
            memory.offer_year_start.offer)
        if offer_pro.student_can_manage_readers and memory.status == 'DRAFT':
            justification = "%s %s" % ("student_delete_reader", str(role))
            dissertation_update.add(request,
                                    memory,
                                    memory.status,
                                    justification=justification)
            role.delete()
        return redirect('dissertation_detail', pk=memory.pk)
    else:
        return redirect('dissertations')
def dissertation_reader_delete(request, pk):
    role = get_object_or_404(dissertation_role.DissertationRole, pk=pk)
    dissert = role.dissertation
    if dissert.author_is_logged_student(request):
        offer_pro = offer_proposition.get_by_education_group(
            dissert.education_group_year.education_group)
        if offer_pro.student_can_manage_readers and dissert.status == 'DRAFT':
            justification = "Student deleted reader {}".format(role)
            dissertation_update.add(request,
                                    dissert,
                                    dissert.status,
                                    justification=justification)
            role.delete()
        return redirect('dissertation_detail', pk=dissert.pk)
    else:
        return redirect('dissertations')
def _manage_dissertation_form(dissert, original_title, request):
    if request.method == "POST":
        form = DissertationTitleForm(request.POST, instance=dissert)
        if form.is_valid() and original_title != form.cleaned_data['title']:
            dissert = form.save()
            dissertation_update.add(
                request,
                dissert,
                dissert.status,
                justification=build_justification_with_title(
                    dissert, original_title))
        return redirect('dissertation_detail', pk=dissert.pk)
    else:
        form = DissertationTitleForm(instance=dissert)
    return layout.render(request, 'dissertation_title_form.html',
                         {'form': form})
Esempio n. 34
0
 def delete(self, request, *args, **kwargs):
     self.dissertation_documents = self.get_object()
     if self.dissertation_documents and self.dissertation.author_is_logged_student(
             request):
         for dissertation_document in self.dissertation_documents:
             justification = "{} {}".format(
                 _("The student has deleted the file :"),
                 dissertation_document.document_file.file_name)
             dissertation_update.add(request,
                                     self.dissertation,
                                     self.dissertation.status,
                                     justification=justification)
             dissertation_document.delete()
         return self._ajax_response() or HttpResponseRedirect(
             self.get_success_url())
     return self._ajax_response() or HttpResponseRedirect(
         self.get_error_url())
Esempio n. 35
0
def dissertation_edit(request, pk):
    memory = get_object_or_404(dissertation.Dissertation, pk=pk)
    person = mdl.person.find_by_user(request.user)
    student = mdl.student.find_by_person(person)

    if memory.author_is_logged_student(request):
        offers = mdl.offer.find_by_student(student)
        offer_pro = offer_proposition.search_by_offer(memory.offer_year_start.offer)

        if memory.status == 'DRAFT' or memory.status == 'DIR_KO':
            if request.method == "POST":
                form = DissertationEditForm(request.POST, instance=memory)
                if form.is_valid():
                    memory = form.save()
                    dissertation_update.add(request, memory, memory.status, justification="student_edit_dissertation")
                    return redirect('dissertation_detail', pk=memory.pk)
                else:
                    form.fields["offer_year_start"].queryset = offer_year.find_by_offer(offers)
                    form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
            else:
                form = DissertationEditForm(instance=memory)
                form.fields["offer_year_start"].queryset = offer_year.find_by_offer(offers)
                form.fields["proposition_dissertation"].queryset = proposition_dissertation.search_by_offers(offers)
            return layout.render(request, 'dissertation_edit_form.html',
                                 {'form': form,
                                  'defend_periode_choices': dissertation.DEFEND_PERIODE_CHOICES})
        else:
            if offer_pro.start_edit_title <= timezone.now().date() <= offer_pro.end_edit_title:
                if request.method == "POST":
                    form = DissertationTitleForm(request.POST, instance=memory)
                    if form.is_valid():
                        memory = form.save()
                        dissertation_update.add(request, memory, memory.status, justification="student_edit_title")
                        return redirect('dissertation_detail', pk=memory.pk)
                else:
                    form = DissertationTitleForm(instance=memory)
                return layout.render(request, 'dissertation_title_form.html', {'form': form})
            else:
                return redirect('dissertation_detail', pk=memory.pk)
    else:
        return redirect('dissertations')
Esempio n. 36
0
def dissertation_delete(request, pk):
    memory = get_object_or_404(dissertation.Dissertation, pk=pk)
    if memory.author_is_logged_student(request):
        memory.deactivate()
        dissertation_update.add(request, memory, memory.status, justification="student_set_active_false")
    return redirect('dissertations')