def review_save(request): mandate_id = request.POST.get("mandate_id") review_id = request.POST.get("review_id") rev = review.find_by_id(review_id) mandate = assistant_mandate.find_mandate_by_id(mandate_id) current_reviewer = reviewer.can_edit_review( reviewer.find_by_person(person.find_by_user(request.user)).id, mandate_id) form = ReviewForm(data=request.POST, instance=rev, prefix='rev') previous_mandates = assistant_mandate.find_before_year_for_assistant( mandate.academic_year.year, mandate.assistant) role = current_reviewer.role entity = entity_version.get_last_version(current_reviewer.entity) menu = generate_reviewer_menu_tabs(role, mandate, role) if form.is_valid(): current_review = form.save(commit=False) if 'validate_and_submit' in request.POST: current_review.status = review_status.DONE current_review.save() if mandate.state == assistant_mandate_state.PHD_SUPERVISOR: if mandate_entity.find_by_mandate_and_type( mandate, entity_type.INSTITUTE): mandate.state = assistant_mandate_state.RESEARCH elif mandate_entity.find_by_mandate_and_type( mandate, entity_type.POLE): mandate.state = assistant_mandate_state.RESEARCH else: mandate.state = assistant_mandate_state.SUPERVISION elif mandate.state == assistant_mandate_state.RESEARCH: mandate.state = assistant_mandate_state.SUPERVISION elif mandate.state == assistant_mandate_state.SUPERVISION: mandate.state = assistant_mandate_state.VICE_RECTOR elif mandate.state == assistant_mandate_state.VICE_RECTOR: mandate.state = assistant_mandate_state.DONE mandate.save() if current_review.reviewer is not None: return HttpResponseRedirect(reverse("reviewer_mandates_list")) else: return HttpResponseRedirect( reverse("phd_supervisor_assistants_list")) elif 'save' in request.POST: current_review.status = review_status.IN_PROGRESS current_review.save() return review_edit(request) else: return render( request, "review_form.html", { 'review': rev, 'role': mandate.state, 'year': mandate.academic_year.year + 1, 'absences': mandate.absences, 'comment': mandate.comment, 'mandate_id': mandate.id, 'previous_mandates': previous_mandates, 'assistant': mandate.assistant, 'entity': entity, 'menu': menu, 'menu_type': 'reviewer_menu', 'form': form })
def validate_review_and_update_mandate(review, mandate): review.status = review_status.DONE review.save() if mandate_entity.find_by_mandate_and_type(mandate, entity_type.INSTITUTE): mandate.state = assistant_mandate_state.RESEARCH elif mandate_entity.find_by_mandate_and_type(mandate, entity_type.POLE): mandate.state = assistant_mandate_state.RESEARCH else: mandate.state = assistant_mandate_state.SUPERVISION mandate.save()
def validate_review_and_update_mandate(review, mandate): review.status = review_status.DONE review.save() if mandate_entity.find_by_mandate_and_type(mandate, entity_type.INSTITUTE): mandate.state = assistant_mandate_state.RESEARCH elif mandate_entity.find_by_mandate_and_type(mandate, entity_type.POLE): mandate.state = assistant_mandate_state.RESEARCH else: mandate.state = assistant_mandate_state.SUPERVISION mandate.save()
def generate_reviewer_menu_tabs(role, mandate, active_item: None): if active_item: active_item = active_item.replace('_ASSISTANT', '').replace('_DAF', '') menu = [] mandate_states = {} if mandate.assistant.supervisor: mandate_states.update({assistant_mandate_state.PHD_SUPERVISOR: 1}) if mandate_entity.find_by_mandate_and_type(mandate, entity_type.INSTITUTE): mandate_states.update({assistant_mandate_state.RESEARCH: 2, assistant_mandate_state.SUPERVISION: 3, assistant_mandate_state.VICE_RECTOR: 4}) else: mandate_states.update({assistant_mandate_state.SUPERVISION: 3, assistant_mandate_state.VICE_RECTOR: 4}) try: latest_review_done = review.find_review_for_mandate_by_role(mandate, role) review_is_done = latest_review_done.status == review_status.DONE except: review_is_done = False for state, order in sorted(mandate_states.items()): if state == assistant_mandate_state.VICE_RECTOR and role != reviewer_role.VICE_RECTOR \ and role != reviewer_role.VICE_RECTOR_ASSISTANT: break if state in role and review_is_done is False: if active_item == state: menu.append({'item': state, 'class': 'active', 'action': 'edit'}) else: menu.append({'item': state, 'class': '', 'action': 'edit'}) if mandate.state == state: break elif active_item == state: menu.append({'item': state, 'class': 'active', 'action': 'view'}) else: menu.append({'item': state, 'class': '', 'action': 'view'}) return menu
def generate_reviewer_menu_tabs(role, mandate, active_item: None): if active_item: active_item = active_item.replace('_ASSISTANT', '').replace('_DAF', '') menu = [] mandate_states = {} if mandate.assistant.supervisor: mandate_states.update({assistant_mandate_state.PHD_SUPERVISOR: 1}) if mandate_entity.find_by_mandate_and_type(mandate, entity_type.INSTITUTE): mandate_states.update({assistant_mandate_state.RESEARCH: 2, assistant_mandate_state.SUPERVISION: 3, assistant_mandate_state.VICE_RECTOR: 4}) else: mandate_states.update({assistant_mandate_state.SUPERVISION: 3, assistant_mandate_state.VICE_RECTOR: 4}) try: latest_review_done = review.find_review_for_mandate_by_role(mandate, role) review_is_done = latest_review_done.status == review_status.DONE except: review_is_done = False for state, order in sorted(mandate_states.items()): if state == assistant_mandate_state.VICE_RECTOR and role != reviewer_role.VICE_RECTOR \ and role != reviewer_role.VICE_RECTOR_ASSISTANT: break if state in role and review_is_done is False: if active_item == state: menu.append({'item': state, 'class': 'active', 'action': 'edit'}) else: menu.append({'item': state, 'class': '', 'action': 'edit'}) if mandate.state == state: break elif active_item == state: menu.append({'item': state, 'class': 'active', 'action': 'view'}) else: menu.append({'item': state, 'class': '', 'action': 'view'}) return menu
def review_save(request): mandate_id = request.POST.get("mandate_id") review_id = request.POST.get("review_id") rev = review.find_by_id(review_id) mandate = assistant_mandate.find_mandate_by_id(mandate_id) current_person = request.user.person form = ReviewForm(data=request.POST, instance=rev, prefix='rev') menu = generate_phd_supervisor_menu_tabs(mandate, reviewer_role.PHD_SUPERVISOR) previous_mandates = assistant_mandate.find_before_year_for_assistant( mandate.academic_year.year, mandate.assistant) if form.is_valid(): current_review = form.save(commit=False) if 'validate_and_submit' in request.POST: current_review.status = review_status.DONE current_review.save() if mandate_entity.find_by_mandate_and_type(mandate, entity_type.INSTITUTE): mandate.state = assistant_mandate_state.RESEARCH elif mandate_entity.find_by_mandate_and_type( mandate, entity_type.POLE): mandate.state = assistant_mandate_state.RESEARCH else: mandate.state = assistant_mandate_state.SUPERVISION mandate.save() return HttpResponseRedirect( reverse("phd_supervisor_assistants_list")) elif 'save' in request.POST: current_review.status = review_status.IN_PROGRESS current_review.save() return review_edit(request) else: return render( request, "review_form.html", { 'review': rev, 'role': mandate.state, 'year': mandate.academic_year.year + 1, 'current_person': current_person, 'absences': mandate.absences, 'comment': mandate.comment, 'mandate_id': mandate.id, 'previous_mandates': previous_mandates, 'assistant': mandate.assistant, 'menu': menu, 'menu_type': 'phd_supervisor_menu', 'form': form })
def mandate_change_state(request): mandate = assistant_mandate.find_mandate_by_id(request.POST.get("mandate_id")) if mandate: if 'bt_mandate_accept' in request.POST: mandate.state = assistant_mandate_state.TRTS elif 'bt_mandate_decline' in request.POST: mandate.state = assistant_mandate_state.DECLINED faculty = mandate_entity.find_by_mandate_and_type(mandate, entity_type.FACULTY) if faculty: faculty_dean = reviewer.find_by_entity_and_role( faculty.first().entity, reviewer_role.SUPERVISION).first() pers = person.find_by_user(request.user) assistant = academic_assistant.find_by_person(pers) html_template_ref = 'assistant_dean_assistant_decline_html' txt_template_ref = 'assistant_dean_assistant_decline_txt' send_message(person=faculty_dean.person, html_template_ref=html_template_ref, txt_template_ref=txt_template_ref, assistant=assistant) mandate.save() return HttpResponseRedirect(reverse('assistant_mandates'))
def mandate_change_state(request): mandate_id = request.POST.get("mandate_id") mandate = assistant_mandate.find_mandate_by_id(mandate_id) if 'bt_mandate_accept' in request.POST: mandate.state = assistant_mandate_state.TRTS elif 'bt_mandate_decline' in request.POST: mandate.state = assistant_mandate_state.DECLINED faculty = mandate_entity.find_by_mandate_and_type( mandate, entity_type.FACULTY) if faculty: faculty_dean = reviewer.find_by_entity_and_role( faculty.first().structure, reviewer_role.SUPERVISION).first() assistant = academic_assistant.find_by_person( person.find_by_user(request.user)) html_template_ref = 'assistant_dean_assistant_decline_html' txt_template_ref = 'assistant_dean_assistant_decline_txt' send_message(person=faculty_dean.person, html_template_ref=html_template_ref, txt_template_ref=txt_template_ref, assistant=assistant) mandate.save() return HttpResponseRedirect(reverse('assistant_mandates'))
def test_find_by_mandate_and_type(self): self.assertEqual( self.mandate_entity, mandate_entity.find_by_mandate_and_type( self.assistant_mandate, entity_type.FACULTY).first())
def test_find_by_mandate_and_type(self): self.assertEqual(self.mandate_entity, mandate_entity.find_by_mandate_and_type(self.assistant_mandate, entity_type.FACULTY).first())