コード例 #1
0
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
コード例 #2
0
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"))
コード例 #3
0
    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)
コード例 #4
0
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))
コード例 #8
0
    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)
コード例 #9
0
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))