예제 #1
0
def registration_edit(request, admission_id):
    admission = get_object_or_404(
        Admission.objects.select_related(
            'billing_address',
            'residence_address',
            'address'
        ),
        pk=admission_id
    )
    can_access_admission(request.user, admission)

    if admission.is_draft():
        raise PermissionDenied

    address = admission.address
    billing_address = admission.billing_address
    residence_address = admission.residence_address
    registration_form = RegistrationForm(request.POST or None, instance=admission, user=request.user)
    billing_address_form = AddressForm(request.POST or None, instance=admission.billing_address, prefix="billing")
    residence_address_form = AddressForm(request.POST or None, instance=admission.residence_address, prefix="residence")

    errors = []
    if registration_form.is_valid() and billing_address_form.is_valid() and residence_address_form.is_valid():
        billing_address = _update_or_create_specific_address(
            admission.address,
            billing_address,
            billing_address_form,
            not registration_form.cleaned_data['use_address_for_billing']
        )
        residence_address = _update_or_create_specific_address(
            admission.address,
            residence_address,
            residence_address_form,
            not registration_form.cleaned_data['use_address_for_post']
        )
        admission = registration_form.save(commit=False)
        admission.address = address
        admission.billing_address = billing_address
        admission.residence_address = residence_address
        message = get_appropriate_revision_message(registration_form)
        save_and_create_revision(message, admission, request.user)

        return redirect(reverse('admission_detail', kwargs={'admission_id': admission_id}) + "#registration")
    else:
        errors.append(registration_form.errors)

    return render(
        request,
        'registration_form.html',
        {
            'admission': admission,
            'registration_form': registration_form,
            'billing_address_form': billing_address_form,
            'residence_address_form': residence_address_form,
            'errors': errors,
        }
    )
 def test_only_numeric_characters_for_national_number(self):
     wrong_id = '12KB4894'
     registration = AdmissionFactory(formation=self.formation)
     data = registration.__dict__
     data['national_registry_number'] = wrong_id
     form = RegistrationForm(data=data)
     self.assertFalse(form.is_valid())
     self.assertIn('national_registry_number', form.errors)
     self.assertIn(_('Only numeric characters are allowed.'),
                   form.errors['national_registry_number'])
    def test_fields_disabled_for_continuing_training_manager(self):
        training_manager_group = GroupFactory(name=TRAINING_MANAGERS_GROUP)
        manager = PersonWithPermissionsFactory('view_admission',
                                               'change_admission')
        manager.user.groups.add(training_manager_group)

        form = RegistrationForm(data={}, user=manager.user)
        self.assertTrue(form.fields['registration_file_received'].disabled)
        self.assertTrue(form.fields['ucl_registration_complete'].disabled)
    def test_fields_enabled_if_not_continuing_training_manager(self):
        for group in [MANAGERS_GROUP, STUDENT_WORKERS_GROUP]:
            manager_group = GroupFactory(name=group)
            person_not_manager = PersonWithPermissionsFactory(
                'view_admission', 'change_admission')
            person_not_manager.user.groups.add(manager_group)

            form = RegistrationForm(data={}, user=person_not_manager.user)
            self.assertFalse(
                form.fields['registration_file_received'].disabled)
            self.assertFalse(form.fields['ucl_registration_complete'].disabled)
예제 #5
0
def billing_edit(request, admission_id):
    admission = get_object_or_404(Admission, pk=admission_id)
    can_access_admission(request.user, admission)

    if admission.is_draft() or admission.formation.registration_required:
        raise PermissionDenied

    registration_form = RegistrationForm(request.POST or None,
                                         instance=admission,
                                         only_billing=True,
                                         user=request.user)
    address = admission.address
    billing_address = admission.billing_address
    billing_address_form = AddressForm(request.POST or None,
                                       instance=admission.billing_address,
                                       prefix="billing")

    errors = []
    if registration_form.is_valid() and billing_address_form.is_valid():
        billing_address = _update_or_create_specific_address(
            address, billing_address, billing_address_form,
            not registration_form.cleaned_data['use_address_for_billing'])

        admission = registration_form.save(commit=False)
        admission.billing_address = billing_address
        admission.save()

        return redirect(
            reverse('admission_detail', kwargs={'admission_id': admission_id})
            + "#billing")
    else:
        errors.append(
            billing_address_form.errors.update(registration_form.errors))

    return render(
        request, 'admission_billing_form.html', {
            'admission': admission,
            'registration_form': registration_form,
            'billing_address_form': billing_address_form,
            'errors': errors,
        })
    def test_edit_post_registration_found(self):
        admission = AdmissionFactory(formation=self.formation)
        admission_dict = model_to_dict(admission)
        admission_dict['billing_address'] = admission.billing_address
        admission_dict['residence_address'] = admission.residence_address
        admission_dict['citizenship'] = admission.citizenship
        admission_dict['address'] = admission.address
        url = reverse('registration_edit', args=[self.admission_accepted.id])
        form = RegistrationForm(admission_dict)
        form.is_valid()
        response = self.client.post(url, data=form.cleaned_data)
        self.assertRedirects(
            response,
            reverse('admission_detail', args=[self.admission_accepted.id]) + "#registration"
        )
        self.admission_accepted.refresh_from_db()

        # verifying that fields are correctly updated
        for key in form.cleaned_data.keys():
            field_value = self.admission_accepted.__getattribute__(key)
            if key not in UNUPDATABLE_FIELDS_FOR_CONTINUING_EDUCATION_TRAINING_MGR:
                self.assertEqual(field_value, admission_dict[key])
 def test_previous_ucl_registration_not_required_if_only_billing(self):
     registration = AdmissionFactory(formation=self.formation)
     data = registration.__dict__
     form = RegistrationForm(data=data, only_billing=True)
     self.assertFalse(form.fields['previous_ucl_registration'].required)