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