def dissertations_jury_new(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)
    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)
def dissertations_to_dir_ko(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):
        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)
Beispiel #3
0
def manage_proposition_dissertation_edit(request, pk):
    proposition = proposition_dissertation.find_by_id(pk)
    redirect_if_none(proposition, 'manager_proposition_dissertations')
    offer_propositions = offer_proposition.find_all_ordered_by_acronym()
    offer_propositions_group = offer_proposition_group.find_all_ordered_by_name_short(
    )
    offer_propositions_error = None
    proposition_offers = proposition_offer.find_by_proposition_dissertation(
        proposition)
    if request.method == "POST":
        form = ManagerPropositionDissertationEditForm(request.POST,
                                                      instance=proposition)
        if is_valid(request, form):
            proposition = edit_proposition(form, proposition_offers, request)
            return redirect('manager_proposition_dissertation_detail',
                            pk=proposition.pk)
        if not detect_in_request(request, 'txt_checkbox_', 'on'):
            offer_propositions_error = 'select_at_least_one_item'
            proposition_offers = None
    else:
        form = ManagerPropositionDissertationEditForm(instance=proposition)
    return layout.render(
        request, 'manager_proposition_dissertation_edit.html', {
            'prop_dissert': proposition,
            'form': form,
            'author': proposition.author,
            'types_choices': PropositionDissertation.TYPES_CHOICES,
            'levels_choices': PropositionDissertation.LEVELS_CHOICES,
            'collaborations_choices':
            PropositionDissertation.COLLABORATION_CHOICES,
            'offer_propositions': offer_propositions,
            'offer_propositions_error': offer_propositions_error,
            'proposition_offers': proposition_offers,
            'offer_proposition_group': offer_propositions_group
        })
Beispiel #4
0
def proposition_dissertations_jury_new(request, pk):
    proposition = proposition_dissertation.find_by_id(pk)
    redirect_if_none(proposition, 'proposition_dissertations')
    count_proposition_role = PropositionRole.objects.filter(
        proposition_dissertation=proposition).count()
    adv = get_current_adviser(request)
    if proposition.author == adv or proposition.creator == adv.person:
        if request.method == "POST":
            form = ManagerPropositionRoleForm(request.POST)
            if form.is_valid():
                data = form.cleaned_data
                status = data['status']
                adv = data['adviser']
                prop = data['proposition_dissertation']
                if status == "PROMOTEUR":
                    proposition.set_author(adv)
                    proposition_role.delete(status, prop)
                    proposition_role.add(status, adv, prop)
                elif count_proposition_role < 4:
                    proposition_role.add(status, adv, prop)
                return redirect('proposition_dissertation_detail',
                                pk=proposition.pk)
            else:
                form = ManagerPropositionRoleForm(
                    initial={'proposition_dissertation': proposition})
        else:
            form = ManagerPropositionRoleForm(
                initial={'proposition_dissertation': proposition})
        return layout.render(request,
                             'proposition_dissertations_jury_edit.html',
                             {'form': form})
    else:
        return redirect('proposition_dissertation_detail', pk=proposition.pk)
def dissertations_detail(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_can_see_dissertation(adv, dissert):
        count_dissertation_role = dissertation_role.count_by_dissertation(dissert)
        offer_prop = offer_proposition.get_by_dissertation(dissert)
        if offer_prop is None:
            return redirect('dissertations_list')

        promotors_count = dissertation_role.count_by_status_dissertation('PROMOTEUR', dissert)

        files = dissertation_document_file.find_by_dissertation(dissert)
        filename = ""
        for file in files:
            filename = file.document_file.file_name

        dissertation_roles = dissertation_role.search_by_dissertation(dissert)
        return layout.render(request, 'dissertations_detail.html',
                             {'dissertation': dissert,
                              'adviser': adv,
                              'dissertation_roles': dissertation_roles,
                              'count_dissertation_role': count_dissertation_role,
                              'offer_prop': offer_prop,
                              'promotors_count': promotors_count,
                              'teacher_is_promotor': teacher_is_promotor(adv, dissert),
                              'filename': filename})
    else:
        return redirect('dissertations_list')
Beispiel #6
0
def manager_proposition_dissertations_role_delete(request, pk):
    prop_role = proposition_role.get_by_id(pk)
    redirect_if_none(prop_role, 'manager_proposition_dissertations')
    proposition = prop_role.proposition_dissertation
    prop_role.delete()
    return redirect('manager_proposition_dissertation_detail',
                    pk=proposition.pk)
def manager_dissertations_jury_new(request, pk):
    dissert = dissertation.find_by_id(pk)
    redirect_if_none(dissert, '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')
def manager_dissertations_edit(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):
        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')
Beispiel #9
0
def proposition_dissertation_detail(request, pk):
    proposition = proposition_dissertation.find_by_id(pk)
    redirect_if_none(proposition, 'proposition_dissertations')
    offer_propositions = proposition_offer.find_by_proposition_dissertation(
        proposition)
    count_use = dissertation.count_by_proposition(proposition)
    percent = count_use * 100 / proposition.max_number_student if proposition.max_number_student else 0
    count_proposition_role = proposition_role.count_by_proposition(proposition)
    files = proposition_document_file.find_by_proposition(proposition)
    filename = ""
    for file in files:
        filename = file.document_file.file_name
    if count_proposition_role < 1:
        proposition_role.add('PROMOTEUR', proposition.author, proposition)
    proposition_roles = proposition_role.search_by_proposition(proposition)
    return layout.render(
        request, 'proposition_dissertation_detail.html', {
            'proposition_dissertation': proposition,
            'offer_propositions': offer_propositions,
            'adviser': get_current_adviser(request),
            'count_use': count_use,
            'percent': round(percent, 2),
            'proposition_roles': proposition_roles,
            'count_proposition_role': count_proposition_role,
            'filename': filename
        })
def manager_informations_detail(request, pk):
    adv = adviser.get_by_id(pk)
    redirect_if_none(adv, 'manager_dissertations')
    return layout.render(
        request, 'manager_informations_detail.html', {
            'adviser': adv,
            'first_name': adv.person.first_name.title(),
            'last_name': adv.person.last_name.title()
        })
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_detail_updates(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)
    dissertation_updates = dissertation_update.search_by_dissertation(dissert)

    return layout.render(request, 'manager_dissertations_detail_updates.html',
                         {'dissertation': dissert,
                          'adviser': adv,
                          'dissertation_updates': dissertation_updates})
Beispiel #13
0
def proposition_dissertations_role_delete(request, pk):
    prop_role = proposition_role.get_by_id(pk)
    redirect_if_none(prop_role, 'proposition_dissertations')
    proposition = prop_role.proposition_dissertation
    adv = get_current_adviser(request)

    if prop_role.status != 'PROMOTEUR' and (proposition.author == adv or
                                            proposition.creator == adv.person):
        prop_role.delete()

    return redirect('proposition_dissertation_detail', pk=proposition.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')
def dissertations_detail_updates(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):
        dissertation_updates = dissertation_update.search_by_dissertation(dissert)
        return layout.render(request, 'dissertations_detail_updates.html',
                             {'dissertation': dissert,
                              'adviser': adv,
                              'dissertation_updates': dissertation_updates})
    else:
        return redirect('dissertations_list')
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')
Beispiel #17
0
def manager_offer_parameters_edit(request, pk):
    offer_prop = offer_proposition.find_by_id(pk)
    redirect_if_none(offer_prop, 'dissertations')
    if request.method == "POST":
        form = ManagerOfferPropositionForm(request.POST, instance=offer_prop)
        if form.is_valid():
            form.save()
            return redirect('manager_offer_parameters')
    else:
        form = ManagerOfferPropositionForm(instance=offer_prop)
    return layout.render(request, "manager_offer_parameters_edit.html",
                         {'offer_proposition': offer_prop,
                          'form': form})
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)
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 manager_dissertations_jury_edit(request, pk):
    dissert_role = dissertation_role.find_by_id(pk)
    redirect_if_none(dissert_role,'manager_dissertations_list')
    person = mdl.person.find_by_user(request.user)
    adv = adviser.search_by_person(person)
    if adviser_can_manage(dissert_role.dissertation,adv):
        if request.method == "POST":
            form = ManagerDissertationRoleForm(request.POST, instance=dissert_role)
            if form.is_valid():
                form.save()
                return redirect('manager_dissertations_detail', pk=dissert_role.dissertation.pk)
        else:
            form = ManagerDissertationRoleForm(instance=dissert_role)
        return layout.render(request, 'manager_dissertations_jury_edit.html', {'form': form})
    else:
        return redirect('manager_dissertations_list')
def manager_informations_edit(request, pk):
    adv = adviser.get_by_id(pk)
    redirect_if_none(adv, 'manager_informations')
    if request.method == "POST":
        form = ManagerAdviserForm(request.POST, instance=adv)
        if form.is_valid():
            adv = form.save(commit=False)
            adv.save()
            return redirect('manager_informations_detail', pk=adv.pk)
    else:
        form = ManagerAdviserForm(instance=adv)
    return layout.render(
        request, "manager_informations_edit.html", {
            'adviser': adv,
            'form': form,
            'first_name': adv.person.first_name.title(),
            'last_name': adv.person.last_name.title(),
            'email': adv.person.email,
            'phone': adv.person.phone,
            'phone_mobile': adv.person.phone_mobile
        })
def manager_informations_detail_stats(request, pk):
    adv = adviser.get_by_id(pk)
    redirect_if_none(adv, 'manager_informations')
    advisers_pro = dissertation_role.search_by_adviser_and_role_stats(
        adv, 'PROMOTEUR')
    count_advisers_pro = dissertation_role.count_by_adviser_and_role_stats(
        adv, 'PROMOTEUR')
    count_advisers_pro_request = dissertation_role.count_by_adviser(
        adv, 'PROMOTEUR', 'DIR_SUBMIT')
    tab_offer_count_pro = dissertation_role.get_tab_count_role_by_offer(
        advisers_pro)

    advisers_copro = dissertation_role.search_by_adviser_and_role_stats(
        adv, 'CO_PROMOTEUR')
    count_advisers_copro = dissertation_role.count_by_adviser_and_role_stats(
        adv, 'CO_PROMOTEUR')
    tab_offer_count_copro = dissertation_role.get_tab_count_role_by_offer(
        advisers_copro)

    advisers_reader = dissertation_role.search_by_adviser_and_role_stats(
        adv, 'READER')
    count_advisers_reader = dissertation_role.count_by_adviser_and_role_stats(
        adv, 'READER')
    tab_offer_count_read = dissertation_role.get_tab_count_role_by_offer(
        advisers_reader)

    return layout.render(
        request, 'manager_informations_detail_stats.html', {
            'adviser': adv,
            'count_advisers_copro': count_advisers_copro,
            'count_advisers_pro': count_advisers_pro,
            'count_advisers_reader': count_advisers_reader,
            'count_advisers_pro_request': count_advisers_pro_request,
            'tab_offer_count_pro': tab_offer_count_pro,
            'tab_offer_count_read': tab_offer_count_read,
            'tab_offer_count_copro': tab_offer_count_copro
        })
Beispiel #23
0
def proposition_dissertation_delete(request, pk):
    proposition = proposition_dissertation.find_by_id(pk)
    redirect_if_none(proposition, 'proposition_dissertations')
    proposition.deactivate()
    return redirect('proposition_dissertations')
Beispiel #24
0
def proposition_dissertations_jury_edit(request, pk):
    prop_role = proposition_role.get_by_id(pk)
    redirect_if_none(prop_role, 'proposition_dissertations')
    proposition = prop_role.proposition_dissertation
    return redirect('proposition_dissertation_detail', pk=proposition.pk)
def manager_dissertations_detail(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):
        count_dissertation_role = dissertation_role.count_by_dissertation(dissert)
        count_proposition_role = proposition_role.count_by_dissertation(dissert)
        proposition_roles = proposition_role.search_by_dissertation(dissert)
        offer_prop = offer_proposition.get_by_dissertation(dissert)

        if offer_prop is None:
            return redirect('manager_dissertations_list')

        files = dissertation_document_file.find_by_dissertation(dissert)
        filename = ""
        for file in files:
            filename = file.document_file.file_name

        if count_proposition_role == 0:
            if count_dissertation_role == 0:
                justification = "%s %s %s" % ("auto_add_jury", 'PROMOTEUR', str(dissert.proposition_dissertation.author))
                dissertation_update.add(request, dissert, dissert.status, justification=justification)
                dissertation_role.add('PROMOTEUR', dissert.proposition_dissertation.author, dissert)
        else:
            if count_dissertation_role == 0:
                for role in proposition_roles:
                    justification = "%s %s %s" % ("auto_add_jury", role.status, str(role.adviser))
                    dissertation_update.add(request, dissert, dissert.status, justification=justification)
                    dissertation_role.add(role.status, role.adviser, dissert)

        if dissert.status == "DRAFT":
            jury_manager_visibility = True
            jury_manager_can_edit = False
            jury_manager_message = 'manager_jury_draft'
            jury_teacher_visibility = False
            jury_teacher_can_edit = False
            jury_teacher_message = 'teacher_jury_draft'
            jury_student_visibility = True
            jury_student_can_edit = offer_prop.student_can_manage_readers
            if jury_student_can_edit:
                jury_student_message = 'student_jury_draft_can_edit_param'
            else:
                jury_student_message = 'student_jury_draft_no_edit_param'
        else:
            jury_manager_visibility = True
            jury_manager_can_edit = True
            jury_manager_message = 'manager_jury_editable'
            jury_teacher_visibility = True
            jury_teacher_can_edit = offer_prop.adviser_can_suggest_reader
            if jury_teacher_can_edit:
                jury_teacher_message = 'teacher_jury_visible_editable_parameter'
            else:
                jury_teacher_message = 'teacher_jury_visible_not_editable_parameter'
            jury_student_visibility = offer_prop.in_periode_jury_visibility
            jury_student_can_edit = False
            if jury_student_visibility:
                jury_student_message = 'student_jury_visible_dates'
            else:
                jury_student_message = 'student_jury_invisible_dates'
        dissertation_roles = dissertation_role.search_by_dissertation(dissert)

        promotors_count = dissertation_role.count_by_status_dissertation('PROMOTEUR', dissert)

        return layout.render(request, 'manager_dissertations_detail.html',
                             {'dissertation': dissert,
                              'adviser': adv,
                              'dissertation_roles': dissertation_roles,
                              'count_dissertation_role': count_dissertation_role,
                              'jury_manager_visibility': jury_manager_visibility,
                              'jury_manager_can_edit': jury_manager_can_edit,
                              'jury_manager_message': jury_manager_message,
                              'jury_teacher_visibility': jury_teacher_visibility,
                              'jury_teacher_can_edit': jury_teacher_can_edit,
                              'jury_teacher_message': jury_teacher_message,
                              'jury_student_visibility': jury_student_visibility,
                              'jury_student_can_edit': jury_student_can_edit,
                              'jury_student_message': jury_student_message,
                              'promotors_count': promotors_count,
                              'filename': filename})
    else:
        return redirect('manager_dissertations_list')