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)
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 })
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')
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')
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})
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')
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 })
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')
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')