def select_address_valid(address): try: AddressConverter.to_charge_address(address) return True except Exception: current_app.logger.info( 'selected address is not in a valid format. Address: {0}'.format( address)) return False
def get_address_for_charge(): """Loads the page to gather more information about a location. :return: more information template """ current_app.logger.info("Endpoint called") if g.session.add_charge_state is None: current_app.logger.error( "Charge state not found in session - Returning error") raise ApplicationError(500) current_app.logger.info("Rendering response") if g.session.add_charge_state.charge_geographic_description: return render_template( 'address_for_charge.html', charge_geographic_description=g.session.add_charge_state. charge_geographic_description, has_address="No", submit_url=url_for("modify_land_charge.post_address_for_charge")) else: return render_template( 'address_for_charge.html', charge_address=AddressConverter.get_display_address( g.session.add_charge_state.charge_address), postcode=g.session.add_charge_state.charge_address['postcode'], has_address="ProvideAddress", submit_url=url_for("modify_land_charge.post_address_for_charge"))
def test_address_standard(self): address = { 'address_line_1': '28 test st', 'address_line_2': 'flat 6', 'address_line_3': 'town', 'address_line_4': 'county', 'address_line_5': '', 'address_line_6': '', 'postcode': 'postcode', 'country': 'United Kingdom' } loaded_address = AddressConverter.condense_address(address) expected = { 'line-1': '28 test st', 'line-2': 'flat 6', 'line-3': 'town', 'line-4': 'county', 'postcode': 'POSTCODE', 'country': 'United Kingdom' } self.assertDictEqual(loaded_address, expected)
def post_applicant_info(): address_form = request.form current_app.logger.info("Running validation") validation_error_builder = ApplicantInfoValidator.validate(address_form) if validation_error_builder.errors: current_app.logger.warning("Validation errors occurred") return render_template( 'applicant_info.html', validation_errors=validation_error_builder.errors, validation_summary_heading=validation_error_builder. summary_heading_text, submit_url=url_for('add_lon.post_applicant_info'), country_list=get_sorted_countries(), request_body=request.form), 400 applicant_address = AddressConverter.condense_address(address_form) applicant_name = address_form.get('applicant_name') current_app.logger.info("Updating session object") ReviewRouter.update_edited_field('applicant_name', applicant_name) ReviewRouter.update_edited_field('applicant_address', applicant_address) g.session.add_lon_charge_state.applicant_name = applicant_name g.session.add_lon_charge_state.applicant_address = applicant_address g.session.commit() return redirect( ReviewRouter.get_redirect_url('add_lon.get_dominant_building_info'))
def llc1_set_description(): current_app.logger.info('Endpoint called') if g.session.llc1_state is None: current_app.logger.info('Redirecting to: %s', url_for("create_llc1.create_llc1")) return redirect(url_for("create_llc1.create_llc1")) has_address = request.form.get('has-address') information = None address = request.form.get('selected-address') if has_address is not None and has_address.strip() == 'No': information = request.form['charge-geographic-description'].strip() elif has_address is not None and \ has_address.strip() == 'ProvideAddress' and \ address is not None and \ address != '': charge_address = AddressConverter.to_charge_address( json.loads(address)) information = AddressConverter.get_display_address(charge_address) current_app.logger.info("Running validation") validation_errors = SearchDescriptionValidator.validate( information, has_address) if validation_errors.errors: current_app.logger.warning("Validation errors occurred") return render_template( 'search_description.html', validation_errors=validation_errors.errors, validation_summary_heading=validation_errors.summary_heading_text, data=information, has_address=has_address, submit_url=url_for("create_llc1.llc1_set_description")), 400 current_app.logger.info("Updating session object") g.session.llc1_state.description = information g.session.commit() current_app.logger.info("Redirecting to next step: %s", url_for("create_llc1.llc1_get_result")) return redirect(url_for("create_llc1.llc1_get_result"))
def post_address_confirmation(): if g.session.add_charge_state is None: current_app.logger.info('Redirecting to: {}'.format( url_for('add_land_charge.new'))) return redirect(url_for('add_land_charge.new')) has_address = request.form.get('has-address') charge_geographic_description = request.form.get( 'charge-geographic-description') selected_address = None if has_address == 'Yes': selected_address = g.session.previously_selected_address if has_address == 'ProvideAddress' and request.form.get( 'selected-address'): selected_address = json.loads(request.form.get('selected-address')) current_app.logger.info("Running validation") validation_errors = AddressForChargeValidator.validate( has_address, selected_address, charge_geographic_description) if validation_errors.errors: current_app.logger.warning("Validation errors occurred") return render_template( 'address_confirmation.html', validation_errors=validation_errors.errors, validation_summary_heading=validation_errors.summary_heading_text, has_address=has_address, charge_geographic_description=charge_geographic_description, submit_url=url_for( 'add_land_charge.post_address_confirmation')), 400 if selected_address: g.session.add_charge_state.charge_address = AddressConverter.to_charge_address( selected_address) g.session.add_charge_state.charge_geographic_description = None g.session.previously_selected_address = None elif charge_geographic_description: g.session.add_charge_state.charge_geographic_description = charge_geographic_description g.session.add_charge_state.charge_address = None g.session.previously_selected_address = None g.session.commit() return redirect(url_for('add_land_charge.get_expiry'))
def edit_applicant_info_post(): if g.session.add_lon_charge_state is None: current_app.logger.error("Charge state not found in session - Returning error") raise ApplicationError(500) address_form = request.form current_app.logger.info("Running validation") validation_error_builder = ApplicantInfoValidator.validate(address_form) if validation_error_builder.errors: current_app.logger.warning("Validation errors occurred") return render_template('applicant_info.html', validation_errors=validation_error_builder.errors, validation_summary_heading=validation_error_builder.summary_heading_text, submit_url=url_for('modify_lon.edit_applicant_info_post'), country_list=get_sorted_countries(), request_body=request.form), 400 applicant_address = AddressConverter.condense_address(address_form) applicant_name = address_form.get('applicant_name') current_app.logger.info("Updating session object") if applicant_name != g.session.add_lon_charge_state.applicant_name: g.session.add_lon_charge_state.applicant_name = applicant_name g.session.edited_fields['applicant-name'] = 'Name' if applicant_address != g.session.add_lon_charge_state.applicant_address: g.session.add_lon_charge_state.applicant_address = applicant_address g.session.edited_fields['applicant-address'] = 'Address' g.session.commit() charge_display_id = calc_display_id(g.session.add_lon_charge_state.local_land_charge) current_app.logger.info( "Session charge updated - Redirecting back to modify_lon with charge_id='{}'".format(charge_display_id) ) return redirect(url_for("modify_lon.modify_lon_details_get", charge_id=charge_display_id))
def test_to_charge_address(self): address = { 'line_1': '28 test st', 'line_2': 'flat 6', 'line_3': 'line 3', 'line_4': 'line 4', 'line_5': 'line 5', 'line_6': '', 'postcode': 'EX4 7AN', 'uprn': 1233454565767, 'geometry': { "coordinates": [293277, 93555], "crs": { "properties": { "name": "urn:ogc:def:crs:EPSG::27700" }, "type": "name" }, "type": "Point" } } address = AddressConverter.to_charge_address(address) expected = { 'line-1': '28 test st', 'line-2': 'flat 6', 'line-3': 'line 3', 'line-4': 'line 4', 'line-5': 'line 5', 'line-6': '', 'postcode': 'EX4 7AN', 'unique-property-reference-number': 1233454565767 } self.assertDictEqual(address, expected)
def post_address_for_charge(): """Save more information about the location to session and move to the next screen. :return: redirect to the next screen in the flow """ current_app.logger.info("Endpoint called") if g.session.add_charge_state is None: raise ApplicationError(500) has_address = request.form.get('has-address') charge_geographic_description = request.form.get( 'charge-geographic-description') selected_address = request.form.get('selected-address') current_app.logger.info("Validating location information") validation_errors = AddressForChargeValidator.validate( has_address, selected_address, charge_geographic_description) if validation_errors.errors: current_app.logger.warning( "Validation errors present - Rendering page with validation errors" ) return render_template( 'address_for_charge.html', validation_errors=validation_errors.errors, validation_summary_heading=validation_errors.summary_heading_text, charge_geographic_description=charge_geographic_description, has_address=has_address, submit_url=url_for( "modify_land_charge.post_address_for_charge")), 400 current_app.logger.info("Field values validated - Updating session charge") edited = False if selected_address: selected_address = json.loads(selected_address) new_address = AddressConverter.to_charge_address(selected_address) if g.session.add_charge_state.charge_address != new_address: g.session.add_charge_state.charge_address = new_address g.session.add_charge_state.charge_geographic_description = None g.session.edited_fields.append('location_info') edited = True elif charge_geographic_description: if g.session.add_charge_state.charge_geographic_description != charge_geographic_description: g.session.add_charge_state.charge_geographic_description = charge_geographic_description g.session.add_charge_state.charge_address = None g.session.edited_fields.append('location_info') edited = True if edited: g.session.commit() charge_display_id = calc_display_id( g.session.add_charge_state.local_land_charge) current_app.logger.info( "Session charge updated - Redirecting back to modify_land_charge with local_land_charge='{}'" .format(charge_display_id)) return redirect( url_for("modify_land_charge.modify_land_charge", local_land_charge=charge_display_id))