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