def get_context_data(self, **kwargs): if len(self.args) > 1: kwargs['application_pk'] = self.args[1] try: applicant = utils.determine_applicant(self.request) except utils.SessionDataMissingException as e: messages.error(self.request, six.text_type(e)) return redirect('wl_applications:create_select_customer') profile_exists = applicant.profile_set.count() > 0 if utils.is_app_session_data_set(self.request.session, 'profile_pk'): selected_profile = Profile.objects.get(id=utils.get_app_session_data(self.request.session, 'profile_pk')) kwargs['profile_selection_form'] = ProfileSelectionForm(user=applicant, selected_profile=selected_profile) else: if profile_exists: kwargs['profile_selection_form'] = ProfileSelectionForm(user=applicant) if profile_exists: kwargs['profile_creation_form'] = ProfileForm(user=utils.get_app_session_data(self.request.session, 'customer_pk')) else: kwargs['profile_creation_form'] = ProfileForm(initial_display_name='Default', initial_email=applicant.email, user=utils.get_app_session_data(self.request.session, 'customer_pk')) kwargs['address_form'] = AddressForm() kwargs['licence_type'] = get_object_or_404(WildlifeLicenceType, code_slug=self.args[0]) return super(CreateSelectProfileView, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): with open('%s/json/%s.json' % (APPLICATION_SCHEMA_PATH, self.args[0])) as data_file: form_structure = json.load(data_file) licence_type = WildlifeLicenceType.objects.get(code=self.args[0]) application = get_object_or_404(Application, pk=self.args[1]) if len(self.args) > 1 else None if is_app_session_data_set(self.request.session, 'profile_pk'): profile = get_object_or_404(Profile, pk=get_app_session_data(self.request.session, 'profile_pk')) else: profile = application.applicant_profile kwargs['licence_type'] = licence_type kwargs['profile'] = profile kwargs['structure'] = form_structure kwargs['is_proxy_applicant'] = is_officer(self.request.user) if len(self.args) > 1: kwargs['application_pk'] = self.args[1] if is_app_session_data_set(self.request.session, 'data'): data = get_app_session_data(self.request.session, 'data') temp_files_url = settings.MEDIA_URL + \ os.path.basename(os.path.normpath(get_app_session_data(self.request.session, 'temp_files_dir'))) prepend_url_to_application_data_files(form_structure, data, temp_files_url) kwargs['data'] = data return super(PreviewView, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): application = get_object_or_404(Application, pk=self.args[1]) if len(self.args) > 1 else None licence_type = WildlifeLicenceType.objects.get(code=self.args[0]) if is_app_session_data_set(self.request.session, 'profile_pk'): profile = get_object_or_404(Profile, pk=get_app_session_data(self.request.session, 'profile_pk')) else: profile = application.applicant_profile with open('%s/json/%s.json' % (APPLICATION_SCHEMA_PATH, self.args[0])) as data_file: form_structure = json.load(data_file) kwargs['licence_type'] = licence_type kwargs['profile'] = profile kwargs['structure'] = form_structure kwargs['is_proxy_applicant'] = is_officer(self.request.user) if application is not None: kwargs['application_pk'] = application.pk if application.review_status == 'awaiting_amendments': amendments = AmendmentRequest.objects.filter(application=application).filter(status='requested') kwargs['amendments'] = amendments if is_app_session_data_set(self.request.session, 'data'): data = get_app_session_data(self.request.session, 'data') temp_files_dir = get_app_session_data(self.request.session, 'temp_files_dir') if temp_files_dir is not None: temp_files_url = settings.MEDIA_URL + os.path.basename(os.path.normpath(temp_files_dir)) prepend_url_to_application_data_files(form_structure, data, temp_files_url) kwargs['data'] = data return super(EnterDetailsView, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): licence_type = WildlifeLicenceType.objects.get(code_slug=self.args[0]) application = get_object_or_404(Application, pk=self.args[1]) if len(self.args) > 1 else None if utils.is_app_session_data_set(self.request.session, 'profile_pk'): profile = get_object_or_404(Profile, pk=utils.get_app_session_data(self.request.session, 'profile_pk')) else: profile = application.applicant_profile kwargs['licence_type'] = licence_type kwargs['profile'] = profile kwargs['structure'] = licence_type.application_schema kwargs['is_proxy_applicant'] = is_officer(self.request.user) if len(self.args) > 1: kwargs['application_pk'] = self.args[1] temp_files_dir = utils.get_app_session_data(self.request.session, 'temp_files_dir') if temp_files_dir is not None: temp_files_url = settings.MEDIA_URL + os.path.basename(os.path.normpath(temp_files_dir)) if utils.is_app_session_data_set(self.request.session, 'data'): data = utils.get_app_session_data(self.request.session, 'data') if temp_files_dir is not None: utils.prepend_url_to_files(licence_type.application_schema, data, temp_files_url) kwargs['data'] = data if utils.is_app_session_data_set(self.request.session, 'application_document'): application_document = utils.get_app_session_data(self.request.session, 'application_document') if temp_files_dir is not None: application_document = os.path.join(temp_files_url, application_document) kwargs['structure'], kwargs['data'] = utils.append_app_document_to_schema_data(kwargs['structure'], kwargs['data'], application_document) return super(PreviewView, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): application = get_object_or_404(Application, pk=self.args[1]) if len(self.args) > 1 else None licence_type = WildlifeLicenceType.objects.get(code_slug=self.args[0]) if utils.is_app_session_data_set(self.request.session, 'profile_pk'): profile = get_object_or_404(Profile, pk=utils.get_app_session_data(self.request.session, 'profile_pk')) else: profile = application.applicant_profile kwargs['licence_type'] = licence_type kwargs['profile'] = profile kwargs['structure'] = licence_type.application_schema kwargs['is_proxy_applicant'] = is_officer(self.request.user) if application is not None: kwargs['application_pk'] = application.pk if application.review_status == 'awaiting_amendments': amendments = AmendmentRequest.objects.filter(application=application).filter(status='requested') kwargs['amendments'] = amendments temp_files_dir = utils.get_app_session_data(self.request.session, 'temp_files_dir') if temp_files_dir is not None: temp_files_url = settings.MEDIA_URL + os.path.basename(os.path.normpath(temp_files_dir)) if utils.is_app_session_data_set(self.request.session, 'data'): data = utils.get_app_session_data(self.request.session, 'data') if temp_files_dir is not None: utils.prepend_url_to_files(licence_type.application_schema, data, temp_files_url) kwargs['data'] = data if utils.is_app_session_data_set(self.request.session, 'application_document'): application_document = utils.get_app_session_data(self.request.session, 'application_document') if temp_files_dir is not None: application_document = os.path.join(temp_files_url, application_document) kwargs['application_document'] = application_document return super(EnterDetailsView, self).get_context_data(**kwargs)
def get_context_data(self, **kwargs): kwargs['licence_type'] = get_object_or_404(WildlifeLicenceType, code_slug=self.args[0]) if is_officer(self.request.user) and utils.is_app_session_data_set(self.request.session, 'customer_pk'): kwargs['customer'] = EmailUser.objects.get(pk=utils.get_app_session_data(self.request.session, 'customer_pk')) kwargs['is_renewal'] = False if len(self.args) > 1: try: application = Application.objects.get(pk=self.args[1]) if application.processing_status == 'renewal': kwargs['is_renewal'] = True except Exception: pass return super(ApplicationEntryBaseView, self).get_context_data(**kwargs)
def post(self, request, *args, **kwargs): if len(args) > 1: application = get_object_or_404(Application, pk=args[1]) else: application = Application() if is_officer(request.user): application.proxy_applicant = request.user application.data = utils.get_app_session_data(self.request.session, 'data') application.licence_type = get_object_or_404(WildlifeLicenceType, code_slug=args[0]) application.correctness_disclaimer = request.POST.get('correctnessDisclaimer', '') == 'on' application.further_information_disclaimer = request.POST.get('furtherInfoDisclaimer', '') == 'on' application.applicant_profile = get_object_or_404(Profile, pk=utils.get_app_session_data(request.session, 'profile_pk')) application.lodgement_sequence += 1 application.lodgement_date = datetime.now().date() if application.customer_status == 'amendment_required': # this is a 're-lodged' application after some amendment were required. # from this point we assume that all the amendments have been amended. AmendmentRequest.objects.filter(application=application).filter(status='requested').update(status='amended') application.review_status = 'amended' application.processing_status = 'ready_for_action' else: if application.processing_status != 'renewal': application.processing_status = 'new' application.customer_status = 'under_review' # need to save application in order to get its pk if not application.lodgement_number: application.save(no_revision=True) application.lodgement_number = '%s-%s' % (str(application.licence_type.pk).zfill(LICENCE_TYPE_NUM_CHARS), str(application.pk).zfill(LODGEMENT_NUMBER_NUM_CHARS)) application.documents.clear() # if attached files were saved temporarily, add each to application as part of a Document temp_files_dir = utils.get_app_session_data(request.session, 'temp_files_dir') try: for filename in utils.get_all_filenames_from_application_data(application.licence_type.application_schema, utils.get_app_session_data(request.session, 'data')): document = Document.objects.create(name=filename) with open(os.path.join(temp_files_dir, filename), 'rb') as doc_file: document.file.save(filename, File(doc_file), save=True) application.documents.add(document) if utils.is_app_session_data_set(request.session, 'application_document'): filename = utils.get_app_session_data(request.session, 'application_document') document = Document.objects.create(name=filename) with open(os.path.join(utils.get_app_session_data(request.session, 'temp_files_dir'), filename), 'rb') as doc_file: document.file.save(filename, File(doc_file), save=True) application.hard_copy = document messages.success(request, 'The application was successfully lodged.') except Exception as e: messages.error(request, 'There was a problem creating the application: %s' % e) application.save(version_user=application.applicant_profile.user, version_comment='Details Modified') try: utils.delete_app_session_data(request.session) except Exception as e: messages.warning(request, 'There was a problem deleting session data: %s' % e) return redirect('wl_dashboard:home')
def post(self, request, *args, **kwargs): licence_type = WildlifeLicenceType.objects.get(code_slug=self.args[0]) utils.rename_filename_doubleups(request.POST, request.FILES) utils.set_app_session_data(request.session, 'data', utils.create_data_from_form(licence_type.application_schema, request.POST, request.FILES)) temp_files_dir = utils.get_app_session_data(request.session, 'temp_files_dir') if 'draft' in request.POST or 'draft_continue' in request.POST: if len(args) > 1: application = get_object_or_404(Application, pk=args[1]) else: application = Application() if is_officer(request.user): application.proxy_applicant = request.user application.data = utils.get_app_session_data(request.session, 'data') application.licence_type = WildlifeLicenceType.objects.get(code_slug=args[0]) application.applicant_profile = get_object_or_404(Profile, pk=utils.get_app_session_data(request.session, 'profile_pk')) application.customer_status = 'draft' if application.processing_status != 'renewal': application.processing_status = 'draft' application.save(version_user=application.applicant_profile.user) application.documents.clear() # need to create documents from all the existing files that haven't been replaced # (saved in temp_files_dir) as well as any new ones try: for filename in utils.get_all_filenames_from_application_data(licence_type.application_schema, utils.get_app_session_data(request.session, 'data')): # need to be sure file is in tmp directory (as it could be a freshly attached file) if os.path.exists(os.path.join(temp_files_dir, filename)): document = Document.objects.create(name=filename) with open(os.path.join(temp_files_dir, filename), 'rb') as doc_file: document.file.save(filename, File(doc_file), save=True) application.documents.add(document) except Exception as e: messages.error(request, 'There was a problem appending applications files: %s' % e) for f in request.FILES: if f == 'application_document': application.hard_copy = Document.objects.create(name=str(request.FILES[f]), file=request.FILES[f]) else: application.documents.add(Document.objects.create(name=str(request.FILES[f]), file=request.FILES[f])) application.save(no_revision=True) messages.warning(request, 'The application was saved to draft.') if 'draft' in request.POST: try: utils.delete_app_session_data(request.session) except Exception as e: messages.warning(request, 'There was a problem deleting session data: %s' % e) return redirect('wl_dashboard:home') else: # if continuing, need to save new files in temp so they can be previewed on enter details screen if len(request.FILES) > 0: temp_files_dir = utils.get_app_session_data(request.session, 'temp_files_dir') for f in request.FILES: if f == 'application_document': utils.set_app_session_data(request.session, 'application_document', str(request.FILES[f])) with open(os.path.join(temp_files_dir, str(request.FILES[f])), 'wb+') as destination: for chunk in request.FILES[f].chunks(): destination.write(chunk) return redirect('wl_applications:enter_details', args[0], application.pk) else: if len(request.FILES) > 0: temp_files_dir = utils.get_app_session_data(request.session, 'temp_files_dir') for f in request.FILES: if f == 'application_document': utils.set_app_session_data(request.session, 'application_document', str(request.FILES[f])) with open(os.path.join(temp_files_dir, str(request.FILES[f])), 'wb+') as destination: for chunk in request.FILES[f].chunks(): destination.write(chunk) return redirect('wl_applications:preview', *args)
def post(self, request, *args, **kwargs): with open('%s/json/%s.json' % (APPLICATION_SCHEMA_PATH, args[0])) as data_file: form_structure = json.load(data_file) set_app_session_data(request.session, 'data', create_data_from_form(form_structure, request.POST, request.FILES)) temp_files_dir = get_app_session_data(request.session, 'temp_files_dir') if 'draft' in request.POST or 'draft_continue' in request.POST: if len(args) > 1: application = get_object_or_404(Application, pk=args[1]) else: application = Application() if is_officer(request.user): application.proxy_applicant = request.user application.data = get_app_session_data(request.session, 'data') application.licence_type = WildlifeLicenceType.objects.get(code=args[0]) application.applicant_profile = get_object_or_404(Profile, pk=get_app_session_data(request.session, 'profile_pk')) application.customer_status = 'draft' if application.processing_status != 'renewal': application.processing_status = 'draft' application.save(version_user=application.applicant_profile.user) # delete all existing documents for this application application.documents.all().delete() if application.hard_copy is not None: application.hard_copy.delete() # need to create documents from all the existing files that haven't been replaced # (saved in temp_files_dir) as well as any new ones try: for filename in get_all_filenames_from_application_data(form_structure, get_app_session_data(request.session, 'data')): # need to be sure file is in tmp directory (as it could be a freshly attached file) if os.path.exists(os.path.join(temp_files_dir, filename)): document = Document.objects.create(name=filename) with open(os.path.join(temp_files_dir, filename), 'rb') as doc_file: document.file.save(filename, File(doc_file), save=True) application.documents.add(document) except Exception as e: messages.error(request, 'There was a problem appending applications files: %s' % e) finally: try: if temp_files_dir is not None: shutil.rmtree(temp_files_dir) except (shutil.Error, OSError) as e: messages.warning(request, 'There was a problem deleting temporary files: %s' % e) for f in request.FILES: if f == 'application_document': application.hard_copy = Document.objects.create(name=str(request.FILES[f]), file=request.FILES[f]) else: application.documents.add(Document.objects.create(name=str(request.FILES[f]), file=request.FILES[f])) messages.warning(request, 'The application was saved to draft.') if 'draft' in request.POST: delete_app_session_data(request.session) return redirect('dashboard:home') else: return redirect('applications:enter_details', args[0], application.pk) else: if len(request.FILES) > 0: temp_files_dir = get_app_session_data(request.session, 'temp_files_dir') for f in request.FILES: if f == 'application_document': set_app_session_data(request.session, 'application_document', str(request.FILES[f])) with open(os.path.join(temp_files_dir, str(request.FILES[f])), 'wb+') as destination: for chunk in request.FILES[f].chunks(): destination.write(chunk) return redirect('applications:preview', *args)