示例#1
0
def add_reviewer_for_structure(request):
    current_entity = entity.find_by_id(request.POST.get("entity"))
    year = academic_year.current_academic_year().year
    if not reviewer.can_delegate_to_entity(reviewer.find_by_person(request.user.person), current_entity):
        return redirect('assistants_home')
    form = ReviewerDelegationForm(data=request.POST)
    if form.is_valid() and request.POST.get('person_id'):
        new_reviewer = form.save(commit=False)
        this_person = person.find_by_id(request.POST.get('person_id'))
        if reviewer.find_by_person(this_person):
            msg = _("person_already_reviewer_msg")
            form.add_error(None, msg)
            return render(request, "reviewer_add_reviewer.html", {
                'form': form,
                'year': year,
                'entity': current_entity,
                'reviewer': reviewer.find_by_person(request.user.person)
            })
        new_reviewer.person = this_person
        new_reviewer.save()
        html_template_ref = 'assistant_reviewers_startup_html'
        txt_template_ref = 'assistant_reviewers_startup_txt'
        send_message(person=this_person, html_template_ref=html_template_ref,
                     txt_template_ref=txt_template_ref)
        return redirect('reviewer_delegation')
    else:
        this_reviewer = reviewer.find_by_person(person=request.user.person)
        role = this_reviewer.role + '_ASSISTANT'
        form = ReviewerDelegationForm(initial={'entity': current_entity, 'year': year, 'role': role})
        return render(request, "reviewer_add_reviewer.html", {
            'form': form,
            'year': year,
            'entity': current_entity,
            'reviewer': reviewer.find_by_person(request.user.person)
        })
 def test_with_one_phd_supervisor(self, mock_send_messages, mock_current_ac_year):
     mock_current_ac_year.return_value = self.current_academic_year
     html_template_ref = 'assistant_phd_supervisor_html'
     txt_template_ref = 'assistant_phd_supervisor_txt'
     send_email.send_message(self.phd_supervisor, html_template_ref, txt_template_ref)
     args = mock_send_messages.call_args[0][0]
     self.assertEqual(len(args.get('receivers')), 1)
示例#3
0
文件: mandate.py 项目: tuvirazor/SQA
def mandate_save(request):
    mandate_id = request.POST.get("mandate_id")
    mandate = assistant_mdl.assistant_mandate.find_mandate_by_id(mandate_id)
    if request.POST.get('del_rev'):
        mandate.assistant.supervisor = None
        mandate.assistant.save()
    elif request.POST.get('person_id'):
        try:
            substitute_supervisor = person.find_by_id(request.POST.get('person_id'))
            if substitute_supervisor:
                mandate.assistant.supervisor = substitute_supervisor
                mandate.assistant.save()
                html_template_ref = 'assistant_phd_supervisor_html'
                txt_template_ref = 'assistant_phd_supervisor_txt'
                send_message(person=substitute_supervisor, html_template_ref=html_template_ref,
                             txt_template_ref=txt_template_ref, assistant=mandate.assistant)
        except ObjectDoesNotExist:
            pass
    form = MandateForm(data=request.POST, instance=mandate, prefix='mand')
    formset = entity_inline_formset(request.POST, request.FILES, instance=mandate, prefix='entity')
    if form.is_valid():
        form.save()
        if formset.is_valid():
            formset.save()
            return mandate_edit(request)
        else:
            return layout.render(request, "mandate_form.html", {'mandate': mandate, 'form': form, 'formset': formset})
    else:
        return layout.render(request, "mandate_form.html", {'mandate': mandate, 'form': form, 'formset': formset})
示例#4
0
def mandate_save(request):
    mandate_id = request.POST.get("mandate_id")
    mandate = assistant_mdl.assistant_mandate.find_mandate_by_id(mandate_id)
    if request.POST.get('del_rev'):
        mandate.assistant.supervisor = None
        mandate.assistant.save()
    elif request.POST.get('person_id'):
        try:
            substitute_supervisor = person.find_by_id(request.POST.get('person_id'))
            if substitute_supervisor:
                mandate.assistant.supervisor = substitute_supervisor
                mandate.assistant.save()
                html_template_ref = 'assistant_phd_supervisor_html'
                txt_template_ref = 'assistant_phd_supervisor_txt'
                send_message(person=substitute_supervisor, html_template_ref=html_template_ref,
                             txt_template_ref=txt_template_ref, assistant=mandate.assistant)
        except ObjectDoesNotExist:
            pass
    form = MandateForm(data=request.POST, instance=mandate, prefix='mand')
    formset = entity_inline_formset(request.POST, request.FILES, instance=mandate, prefix='entity')
    if form.is_valid():
        form.save()
        if formset.is_valid():
            formset.save()
            return mandate_edit(request)
        else:
            return layout.render(request, "mandate_form.html", {'mandate': mandate, 'form': form, 'formset': formset})
    else:
        return layout.render(request, "mandate_form.html", {'mandate': mandate, 'form': form, 'formset': formset})
def add_reviewer_for_structure(request):
    current_entity = entity.find_by_id(request.POST.get("entity"))
    year = academic_year.current_academic_year().year
    if not reviewer.can_delegate_to_entity(reviewer.find_by_person(request.user.person), current_entity):
        return redirect('assistants_home')
    form = ReviewerDelegationForm(data=request.POST)
    if form.is_valid() and request.POST.get('person_id'):
        new_reviewer = form.save(commit=False)
        this_person = person.find_by_id(request.POST.get('person_id'))
        if reviewer.find_by_person(this_person):
            msg = _("person_already_reviewer_msg")
            form.add_error(None, msg)
            return render(request, "reviewer_add_reviewer.html", {
                'form': form,
                'year': year,
                'entity': current_entity,
                'reviewer': reviewer.find_by_person(request.user.person)
            })
        new_reviewer.person = this_person
        new_reviewer.save()
        html_template_ref = 'assistant_reviewers_startup_html'
        txt_template_ref = 'assistant_reviewers_startup_txt'
        send_message(person=this_person, html_template_ref=html_template_ref,
                     txt_template_ref=txt_template_ref)
        return redirect('reviewer_delegation')
    else:
        this_reviewer = reviewer.find_by_person(person=request.user.person)
        role = this_reviewer.role + '_ASSISTANT'
        form = ReviewerDelegationForm(initial={'entity': current_entity, 'year': year, 'role': role})
        return render(request, "reviewer_add_reviewer.html", {
            'form': form,
            'year': year,
            'entity': current_entity,
            'reviewer': reviewer.find_by_person(request.user.person)
        })
示例#6
0
def form_part6_save(request):
    mandate = assistant_mandate.find_mandate_by_id(
        request.POST.get("mandate_id"))
    if mandate:
        assistant = mandate.assistant
        form = AssistantFormPart6(data=request.POST,
                                  instance=mandate,
                                  prefix='mand')
        if form.is_valid():
            errors_in_form = False
            if 'validate_and_submit' in request.POST:
                current_mandate = form.save(commit=False)
                if assistant.inscription is None:
                    errors_in_form = True
                    msg = _("phd_inscription_choice_required")
                    form.add_error(None, msg)
                learning_units_nbr = tutoring_learning_unit_year.find_by_mandate(
                    current_mandate).count()
                if learning_units_nbr == 0:
                    errors_in_form = True
                    msg = _("at_least_one_learning_unit")
                    form.add_error(None, msg)
                if errors_in_form:
                    current_mandate.save()
                    return render(request, "assistant_form_part6.html", {
                        'assistant': assistant,
                        'mandate': mandate,
                        'form': form
                    })
                if assistant.supervisor:
                    mandate.state = assistant_mandate_state.PHD_SUPERVISOR
                    html_template_ref = 'assistant_phd_supervisor_html'
                    txt_template_ref = 'assistant_phd_supervisor_txt'
                    send_message(person=assistant.supervisor,
                                 html_template_ref=html_template_ref,
                                 txt_template_ref=txt_template_ref,
                                 assistant=assistant)
                elif 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
                current_mandate.save()
                return HttpResponseRedirect(reverse('assistant_mandates'))
            else:
                form.save()
                return form_part6_edit(request)
        else:
            return render(request, "assistant_form_part6.html", {
                'assistant': assistant,
                'mandate': mandate,
                'form': form
            })
    return form_part6_edit(request, msg=_("data_not_saved"))
示例#7
0
 def test_with_one_phd_supervisor(self, mock_class, mock_current_ac_year):
     mock_current_ac_year.return_value = self.current_academic_year
     html_template_ref = 'assistant_phd_supervisor_html'
     txt_template_ref = 'assistant_phd_supervisor_txt'
     send_email.send_message(self.phd_supervisor, html_template_ref,
                             txt_template_ref)
     mock_class.send.return_value = None
     self.assertIsInstance(mock_class, EmailMultiAlternatives)
     call_args = mock_class.call_args
     recipients = call_args[0][3]
     self.assertEqual(len(recipients), 1)
 def test_with_one_assistant(self, mock_send_messages, mock_current_ac_year):
     mock_current_ac_year.return_value = self.current_academic_year
     if self.assistant_mandate.renewal_type == assistant_mandate_renewal.NORMAL \
             or self.assistant_mandate.renewal_type == assistant_mandate_renewal.SPECIAL:
         html_template_ref = 'assistant_assistants_startup_normal_renewal_html'
         txt_template_ref = 'assistant_assistants_startup_normal_renewal_txt'
     else:
         html_template_ref = 'assistant_assistants_startup_except_renewal_html'
         txt_template_ref = 'assistant_assistants_startup_except_renewal_txt'
     send_email.send_message(self.academic_assistant.person, html_template_ref, txt_template_ref)
     args = mock_send_messages.call_args[0][0]
     self.assertEqual(len(args.get('receivers')), 1)
示例#9
0
 def test_with_one_assistant(self, mock_class, mock_current_ac_year):
     mock_current_ac_year.return_value = self.current_academic_year
     if self.assistant_mandate.renewal_type == 'normal':
         html_template_ref = 'assistant_assistants_startup_normal_renewal_html'
         txt_template_ref = 'assistant_assistants_startup_normal_renewal_txt'
     else:
         html_template_ref = 'assistant_assistants_startup_except_renewal_html'
         txt_template_ref = 'assistant_assistants_startup_except_renewal_txt'
     send_email.send_message(self.academic_assistant.person,
                             html_template_ref, txt_template_ref)
     mock_class.send.return_value = None
     self.assertIsInstance(mock_class, EmailMultiAlternatives)
     call_args = mock_class.call_args
     recipients = call_args[0][3]
     self.assertEqual(len(recipients), 1)
示例#10
0
def form_part6_save(request):
    mandate = assistant_mandate.find_mandate_by_id(request.POST.get("mandate_id"))
    if mandate:
        assistant = mandate.assistant
        form = AssistantFormPart6(data=request.POST, instance=mandate, prefix='mand')
        if form.is_valid():
            errors_in_form = False
            if 'validate_and_submit' in request.POST:
                current_mandate = form.save(commit=False)
                if assistant.inscription is None:
                    errors_in_form = True
                    msg = _("phd_inscription_choice_required")
                    form.add_error(None, msg)
                learning_units_nbr = tutoring_learning_unit_year.find_by_mandate(current_mandate).count()
                if learning_units_nbr == 0:
                    errors_in_form = True
                    msg = _("at_least_one_learning_unit")
                    form.add_error(None, msg)
                if errors_in_form:
                    current_mandate.save()
                    return render(request, "assistant_form_part6.html", {'assistant': assistant, 'mandate': mandate,
                                                                         'form': form})
                if assistant.supervisor:
                    mandate.state = assistant_mandate_state.PHD_SUPERVISOR
                    html_template_ref = 'assistant_phd_supervisor_html'
                    txt_template_ref = 'assistant_phd_supervisor_txt'
                    send_message(person=assistant.supervisor, html_template_ref=html_template_ref,
                                 txt_template_ref=txt_template_ref, assistant=assistant)
                elif 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
                current_mandate.save()
                return HttpResponseRedirect(reverse('assistant_mandates'))
            else:
                form.save()
                return form_part6_edit(request)
        else:
            return render(request, "assistant_form_part6.html", {'assistant': assistant, 'mandate': mandate,
                                                                 'form': form})
    return form_part6_edit(request, msg=_("data_not_saved"))
示例#11
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'))
示例#13
0
def add_reviewer_for_structure(request):
    entity_id = request.POST.get("entity_id")
    related_entity = entity.get_by_internal_id(entity_id)
    current_entity_version = entity_version.get_last_version(
        entity.get_by_internal_id(entity_id))
    year = academic_year.current_academic_year().year
    try:
        reviewer.can_delegate_to_entity(
            reviewer.find_by_person(request.user.person), related_entity)
    except:
        return redirect('assistants_home')
    if request.POST:
        form = ReviewerDelegationForm(data=request.POST)
        if form.is_valid():
            new_reviewer = form.save(commit=False)
            if request.POST.get('person_id'):
                this_person = person.find_by_id(request.POST.get('person_id'))
                try:
                    reviewer.find_by_person(this_person)
                    msg = _("person_already_reviewer_msg")
                    form.add_error(None, msg)
                    return render(
                        request, "reviewer_add_reviewer.html", {
                            'form':
                            form,
                            'year':
                            year,
                            'related_entity':
                            related_entity,
                            'current_entity_version':
                            current_entity_version,
                            'reviewer':
                            reviewer.find_by_person(request.user.person)
                        })
                except reviewer.Reviewer.DoesNotExist:
                    pass
                new_reviewer.person = this_person
                new_reviewer.save()
                html_template_ref = 'assistant_reviewers_startup_html'
                txt_template_ref = 'assistant_reviewers_startup_txt'
                send_message(person=this_person,
                             html_template_ref=html_template_ref,
                             txt_template_ref=txt_template_ref)
                return redirect('reviewer_delegation')
        else:
            this_reviewer = reviewer.find_by_person(person=request.user.person)
            if this_reviewer.role == reviewer_role.SUPERVISION:
                role = reviewer_role.SUPERVISION_ASSISTANT
            else:
                role = reviewer_role.RESEARCH_ASSISTANT
            form = ReviewerDelegationForm(initial={
                'entity': related_entity,
                'year': year,
                'role': role
            })
            reviewer_entity = entity_version.get_last_version(
                this_reviewer.entity)
            return render(
                request, "reviewer_add_reviewer.html", {
                    'form': form,
                    'year': year,
                    'related_entity': related_entity,
                    'entity': reviewer_entity,
                    'current_entity_version': current_entity_version,
                    'reviewer': reviewer.find_by_person(request.user.person)
                })