Ejemplo n.º 1
0
    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
    )
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
    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
Ejemplo n.º 9
0
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)