def get_context_data(self, **kwargs): try: application = utils.get_session_application(self.request.session) except Exception as e: messages.error(self.request, str(e)) return redirect('wl_applications:new_application') kwargs['application'] = application profile_exists = application.applicant.profiles.count() > 0 if application.applicant_profile is not None: kwargs['profile_selection_form'] = ProfileSelectionForm( user=application.applicant, selected_profile=application.applicant_profile) else: if profile_exists: kwargs['profile_selection_form'] = ProfileSelectionForm( user=application.applicant) if profile_exists: kwargs['profile_creation_form'] = ProfileForm( user=application.applicant) else: kwargs['profile_creation_form'] = ProfileForm( initial_display_name='Default', initial_email=application.applicant.email, user=application.applicant) kwargs['address_form'] = AddressForm(user=application.applicant) return super(CreateSelectProfileView, self).get_context_data(**kwargs)
def post(self, request, *args, **kwargs): try: application = utils.get_session_application(request.session) except Exception as e: messages.error(self.request, str(e)) return redirect('wl_applications:new_application') if 'select' in request.POST: profile_selection_form = ProfileSelectionForm( request.POST, user=application.applicant) if profile_selection_form.is_valid(): application.applicant_profile = profile_selection_form.cleaned_data.get( 'profile') application.save() else: return render( request, self.template_name, { 'licence_type': application.licence_type, 'profile_selection_form': profile_selection_form, 'profile_creation_form': ProfileForm(), 'address_form': AddressForm(user=application.applicant) }) elif 'create' in request.POST: profile_form = ProfileForm(request.POST) address_form = AddressForm(request.POST) if profile_form.is_valid() and address_form.is_valid(): profile = profile_form.save(commit=False) profile.postal_address = address_form.save() profile.save() application.applicant_profile = profile application.save() application.log_user_action( ApplicationUserAction.ACTION_CREATE_PROFILE_.format( profile), request) else: return render( request, self.template_name, { 'licence_type': application.licence_type, 'profile_selection_form': ProfileSelectionForm(user=request.user), 'profile_creation_form': profile_form, 'address_form': address_form }) return redirect('wl_applications:enter_details')