def test_send_state_changed_email(self, mock_send): self.admission.state = admission_state_choices.ACCEPTED self.admission._original_state = self.admission.state self.admission.save() admission.save_state_changed_and_send_email(self.admission) args = mock_send.call_args[1] self.assertEqual(_(self.admission.state), args.get('data').get('subject').get('state')) self.assertEqual(_get_managers_mails(self.admission.formation), args.get('data').get('template').get('mails')) self.assertEqual(self.admission.person_information.person.first_name, args.get('data').get('template').get('first_name')) self.assertEqual(self.admission.person_information.person.last_name, args.get('data').get('template').get('last_name')) self.assertEqual(self.admission.formation, args.get('data').get('template').get('formation')) self.assertEqual(_(self.admission.state), args.get('data').get('template').get('state')) self.assertEqual( self.admission.state_reason if self.admission.state_reason else "-", args.get('data').get('template').get('reason')) self.assertEqual(len(args.get('receivers')), 2) self.assertIsNone(args.get('attachment'))
def _validate_admission(request, adm_form): if request.user.has_perm("continuing_education.validate_registration"): save_state_changed_and_send_email(adm_form.instance, request.user) else: display_error_messages( request, _("Continuing education managers and student workers only are allowed to validate a registration") )
def _new_state_management(request, adm_form, admission, new_state): if new_state != VALIDATED: save_state_changed_and_send_email(adm_form.instance, request.user) else: _validate_admission(request, adm_form) send_admission_to_queue(request, admission) query_param = ('?opened_tab=' + request.POST.get('opened_tab')) if request.POST.get('opened_tab') else '' return redirect( reverse('admission_detail', kwargs={'admission_id': admission.pk}) + query_param )
def update(self, instance, validated_data): self.update_field('address', validated_data, instance.address) if 'person_information' in validated_data: validated_data.pop('person_information') instance._original_state = instance.state update_result = super(AdmissionDetailSerializer, self).update(instance, validated_data) if instance.state != instance._original_state: save_state_changed_and_send_email( instance, connected_user=self.context.get('request').user) return update_result
def _update_admission(request, admission, new_status, reason_by_state): admission._original_state = admission.state admission.state = new_status reason = reason_by_state.get(admission.state, '') if admission.state in [ACCEPTED, ACCEPTED_NO_REGISTRATION_REQUIRED]: admission.condition_of_acceptance = reason admission.academic_year_id = request.POST.get('academic_year') else: admission.state_reason = reason admission.save() save_state_changed_and_send_email(admission, request.user)
def test_send_admission_accepted_with_condition(self, mock_send): self.admission.state = admission_state_choices.ACCEPTED self.admission._original_state = self.admission.state self.admission.condition_of_acceptance = 'CONDITION' self.admission.save() admission.save_state_changed_and_send_email(self.admission) args = mock_send.call_args[1] self.assertEqual( self.admission.condition_of_acceptance, args.get('data').get('template').get('condition_of_acceptance')) self.assertEqual(len(args.get('receivers')), 2)
def test_send_admission_with_no_registration_required(self, mock_send): self.admission.state = admission_state_choices.ACCEPTED self.admission._original_state = self.admission.state self.admission.formation.registration_required = False self.admission.formation.save() self.admission.save() admission.save_state_changed_and_send_email(self.admission) args = mock_send.call_args[1] self.assertEqual( self.admission.formation.registration_required, args.get('data').get('template').get('registration_required')) self.assertEqual(len(args.get('receivers')), 1)
def update(self, instance, validated_data): instance.billing_address = self.update_addresses( 'billing_address', validated_data, instance, not validated_data['use_address_for_billing']) if instance.formation.registration_required: instance.residence_address = self.update_addresses( 'residence_address', validated_data, instance, not validated_data['use_address_for_post']) instance._original_state = instance.state update_result = super().update(instance, validated_data) if instance.state != instance._original_state: save_state_changed_and_send_email( instance, connected_user=self.context.get('request').user) return update_result
def _process_admissions_list(request, registrations_ids_list, new_status): admissions_list = Admission.objects.filter(id__in=registrations_ids_list) admissions_list_states = admissions_list.values_list('state', flat=True) if not all(state == admission_state_choices.SUBMITTED or admission_state_choices.WAITING for state in admissions_list_states): raise PermissionDenied( _('The admission must be submitted or waiting to be accepted.')) for admission in admissions_list: admission._original_state = admission.state admission.state = new_status admission.condition_of_acceptance = '' admission.save() save_state_changed_and_send_email(admission, request.user)