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()
예제 #3
0
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()
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
            })
예제 #7
0
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'))
예제 #9
0
 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())