Beispiel #1
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
Beispiel #2
0
def review_view(request):
    mandate_id = request.POST.get("mandate_id")
    role = request.POST.get("role")
    mandate = assistant_mandate.find_mandate_by_id(mandate_id)
    current_reviewer = reviewer.Reviewer.objects.filter(
        person=request.user.person,
        entity__mandateentity__assistant_mandate=mandate
    ).first()
    entity = entity_version.get_last_version(current_reviewer.entity)

    current_role = current_reviewer.role
    if role == reviewer_role.PHD_SUPERVISOR:
        try:
            current_review = review.find_done_by_supervisor_for_mandate(mandate)
        except ObjectDoesNotExist:
            current_review = None
    else:
        current_review = review.find_review_for_mandate_by_role(mandate, role)
    assistant = mandate.assistant
    menu = generate_reviewer_menu_tabs(current_role, mandate, role)
    return render(request, 'review_view.html', {'review': current_review,
                                                'role': current_role,
                                                'menu': menu,
                                                'menu_type': 'reviewer_menu',
                                                'mandate_id': mandate.id,
                                                'mandate_state': mandate.state,
                                                'current_reviewer': current_reviewer,
                                                'entity': entity,
                                                'assistant': assistant,
                                                'year': mandate.academic_year.year + 1
                                                })
def review_view(request):
    mandate_id = request.POST.get("mandate_id")
    role = request.POST.get("role")
    mandate = assistant_mandate.find_mandate_by_id(mandate_id)
    current_reviewer = reviewer.find_by_person(request.user.person)
    entity = entity_version.get_last_version(current_reviewer.entity)
    current_role = current_reviewer.role
    if role == reviewer_role.PHD_SUPERVISOR:
        try:
            current_review = review.find_done_by_supervisor_for_mandate(mandate)
        except ObjectDoesNotExist:
            current_review = None
    else:
        current_review = review.find_review_for_mandate_by_role(mandate, role)
    assistant = mandate.assistant
    menu = generate_reviewer_menu_tabs(current_role, mandate, role)
    return render(request, 'review_view.html', {'review': current_review,
                                                'role': current_role,
                                                'menu': menu,
                                                'menu_type': 'reviewer_menu',
                                                'mandate_id': mandate.id,
                                                'mandate_state': mandate.state,
                                                'current_reviewer': current_reviewer,
                                                'entity': entity,
                                                'assistant': assistant,
                                                'year': mandate.academic_year.year + 1
                                                })
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
Beispiel #5
0
def find_review_and_change_status(mandate, role):
    review = None
    if role == reviewer_role.PHD_SUPERVISOR:
        review = find_done_by_supervisor_for_mandate(mandate)
    elif role:
        review = find_review_for_mandate_by_role(mandate, role)
    if review:
        review.status = review_status.IN_PROGRESS
        review.save()
Beispiel #6
0
def get_reviews(mandate):
    reviews_details = []
    vrs_review = review.find_review_for_mandate_by_role(mandate.id, reviewer_role.VICE_RECTOR)
    if vrs_review:
        reviews_details += [_(vrs_review.advice)] if vrs_review.advice is not None else ['']
        reviews_details += [vrs_review.justification] if vrs_review.justification is not None else ['']
        reviews_details += [vrs_review.remark] if vrs_review.remark is not None else ['']
        reviews_details += [vrs_review.confidential] if vrs_review.confidential is not None else ['']
    return reviews_details
Beispiel #7
0
def get_reviews(mandate):
    reviews_details = []
    vrs_review = review.find_review_for_mandate_by_role(mandate.id, reviewer_role.VICE_RECTOR)
    if vrs_review:
        reviews_details += [_(vrs_review.advice)] if vrs_review.advice is not None else ['']
        reviews_details += [vrs_review.justification] if vrs_review.justification is not None else ['']
        reviews_details += [vrs_review.remark] if vrs_review.remark is not None else ['']
        reviews_details += [vrs_review.confidential] if vrs_review.confidential is not None else ['']
    return reviews_details
def review_edit(request):
    mandate_id = request.POST.get("mandate_id")
    mandate = assistant_mandate.find_mandate_by_id(mandate_id)
    current_reviewer = reviewer.find_by_person(request.user.person)
    entity = entity_version.get_last_version(current_reviewer.entity)
    delegate_role = current_reviewer.role + "_ASSISTANT"
    existing_review = review.find_review_for_mandate_by_role(
        mandate, delegate_role)
    if existing_review is None:
        existing_review, created = review.Review.objects.get_or_create(
            mandate=mandate,
            reviewer=current_reviewer,
            status=review_status.IN_PROGRESS)
    previous_mandates = assistant_mandate.find_before_year_for_assistant(
        mandate.academic_year.year, mandate.assistant)
    role = current_reviewer.role
    menu = generate_reviewer_menu_tabs(role, mandate, role)
    assistant = mandate.assistant
    form = ReviewForm(initial={
        'mandate': mandate,
        'reviewer': existing_review.reviewer,
        'status': existing_review.status,
        'advice': existing_review.advice,
        'changed': timezone.now,
        'confidential': existing_review.confidential,
        'remark': existing_review.remark
    },
                      prefix="rev",
                      instance=existing_review)
    return render(
        request, 'review_form.html', {
            'review': existing_review,
            'role': role,
            'year': mandate.academic_year.year + 1,
            'absences': mandate.absences,
            'comment': mandate.comment,
            'reviewer_role': reviewer_role,
            'mandate_id': mandate.id,
            'previous_mandates': previous_mandates,
            'assistant': assistant,
            'can_validate': reviewer.can_validate(current_reviewer),
            'current_reviewer': current_reviewer,
            'entity': entity,
            'menu': menu,
            'menu_type': 'reviewer_menu',
            'form': form
        })
def review_edit(request):
    mandate_id = request.POST.get("mandate_id")
    mandate = assistant_mandate.find_mandate_by_id(mandate_id)
    current_reviewer = reviewer.find_by_person(request.user.person)
    entity = entity_version.get_last_version(current_reviewer.entity)
    delegate_role = current_reviewer.role + "_ASSISTANT"
    existing_review = review.find_review_for_mandate_by_role(mandate, delegate_role)
    if existing_review is None:
        existing_review, created = review.Review.objects.get_or_create(
            mandate=mandate,
            reviewer=current_reviewer,
            status=review_status.IN_PROGRESS
        )
    previous_mandates = assistant_mandate.find_before_year_for_assistant(mandate.academic_year.year, mandate.assistant)
    role = current_reviewer.role
    menu = generate_reviewer_menu_tabs(role, mandate, role)
    assistant = mandate.assistant
    form = ReviewForm(initial={'mandate': mandate,
                               'reviewer': existing_review.reviewer,
                               'status': existing_review.status,
                               'advice': existing_review.advice,
                               'changed': timezone.now,
                               'confidential': existing_review.confidential,
                               'remark': existing_review.remark
                               }, prefix="rev", instance=existing_review)
    return render(request, 'review_form.html', {'review': existing_review,
                                                'role': role,
                                                'year': mandate.academic_year.year + 1,
                                                'absences': mandate.absences,
                                                'comment': mandate.comment,
                                                'reviewer_role': reviewer_role,
                                                'mandate_id': mandate.id,
                                                'previous_mandates': previous_mandates,
                                                'assistant': assistant,
                                                'can_validate': reviewer.can_validate(current_reviewer),
                                                'current_reviewer': current_reviewer,
                                                'entity': entity,
                                                'menu': menu,
                                                'menu_type': 'reviewer_menu',
                                                'form': form})