Example #1
0
    def test_do_query_no_args(self, mock_query_to_list, mock_get_bwv_cursor):
        """
        Should execute the database cursor using given query when no args arge given
        """
        bwv_cursor = Mock()
        mock_get_bwv_cursor.return_value = bwv_cursor

        QUERY = "SELECT * FROM table_name"
        do_query(QUERY)

        mock_query_to_list.assert_called()
        bwv_cursor.execute.assert_called_with(QUERY, None)
Example #2
0
    def test_do_query(self, mock_query_to_list, mock_get_bwv_cursor):
        """
        Should execute the database cursor using given query
        """
        bwv_cursor = Mock()
        mock_get_bwv_cursor.return_value = bwv_cursor

        QUERY = "SELECT * FROM table_name"
        args = {"foo": "foo"}
        do_query(QUERY, args)

        mock_query_to_list.assert_called()
        bwv_cursor.execute.assert_called_with(QUERY, args)
def get_bwv_hotline_bevinding(wng_id):
    query = """
            SELECT
              toez_hdr1_code,
              toez_hdr2_code,
              bevinding_datum,
              bevinding_tijd,
              hit,
              opmerking,
              volgnr_bevinding
            FROM bwv_hotline_bevinding WHERE wng_id = %(wng_id)s
            ORDER BY volgnr_bevinding ASC
            """

    args = {"wng_id": wng_id}
    results = do_query(query, args)

    # Adds the user's names to the result data
    for result in results:
        toez_hdr1_code = result.get("toez_hdr1_code", None)
        toez_hdr2_code = result.get("toez_hdr2_code", None)

        result["toez_hdr1_naam"] = get_toezichthouder_name(toez_hdr1_code)
        result["toez_hdr2_naam"] = get_toezichthouder_name(toez_hdr2_code)

    return results
def get_eligible_cases(projects):
    """
    Gets cases which are eligible for planning
    """

    query = """
            SELECT
              DISTINCT zaak_id AS id,
              import_wvs.beh_oms AS case_reason,
              import_wvs.is_sia as is_sia,
              import_adres.postcode AS postal_code,
              import_adres.sttnaam AS street_name,
              import_adres.hsnr AS street_number,
              import_adres.hsltr AS suffix_letter,
              import_adres.toev AS suffix,
              import_adres.wzs_lon AS lng,
              import_adres.wzs_lat as lat
            FROM import_wvs
            INNER JOIN
              import_adres ON import_adres.adres_id = import_wvs.adres_id
            WHERE beh_oms IN %(projects)s
            AND afs_code is NULL
            """

    args = {"projects": tuple(projects)}
    cases = do_query(query, args)

    return [prepare_bwv_case_for_aza(c) for c in cases]
def get_import_stadia(case_id):
    query = """
            SELECT
              sta_oms,
              import_stadia.begindatum,
              import_stadia.einddatum,
              peildatum,
              sta_nr,
              CONCAT (import_adres.wng_id, '_', import_wvs.wvs_nr, '_', sta_nr) AS invordering_identificatie
            FROM import_adres INNER JOIN import_stadia ON import_adres.adres_id = import_stadia.adres_id
            INNER JOIN import_wvs ON import_stadia.adres_id = import_wvs.adres_id
            AND stadia_id LIKE %(stadia_id)s
            AND zaak_id = %(case_id)s
            AND sta_oms NOT IN %(exclude_stadia)s
            ORDER BY sta_nr DESC
            """

    # Adds the _% to support the LIKE query and the exception stages to exclude
    args = {
        "case_id": case_id,
        "stadia_id": case_id + "_%",
        "exclude_stadia": EXCLUDE_STADIA,
    }

    all_stadia = do_query(query, args)

    # Make sure all the open stadia are first in the list
    open_stadia = [stadia for stadia in all_stadia if stadia["einddatum"] is None]
    closed_stadia = [stadia for stadia in all_stadia if stadia["einddatum"] is not None]
    stadia = open_stadia + closed_stadia

    return stadia
def get_search_results(postal_code, street_number, suffix, street_name):
    suffix = suffix.replace(" ", "")
    suffix_query = ""
    postal_code_query = ""

    if postal_code:
        postal_code_query = "AND LOWER(postcode) = LOWER(%(postal_code)s)"

    if street_name:
        postal_code_query = "WHERE LOWER(sttnaam) LIKE LOWER(%(street_name)s)"

    if suffix:
        suffix_query = "WHERE LOWER(suffix) LIKE LOWER(%(suffix)s)"

    query = (
        """
            SELECT
              case_id AS id
            FROM
              (
                SELECT
                  import_wvs.zaak_id AS case_id,
                COALESCE(hsltr, '') || COALESCE(toev, '') AS suffix
                FROM
                  import_wvs
                INNER JOIN
                  import_adres
                ON
                  import_wvs.adres_id = import_adres.adres_id
                AND
                  import_wvs.afs_code is NULL
                """
        + postal_code_query
        + """
                AND
                  hsnr = %(street_number)s
              )
            AS
              case_preselect
            """
        + suffix_query
    )

    args = {
        "postal_code": postal_code,
        "street_name": "%" + street_name + "%",
        # % is added here because of the LIKE sql check
        "suffix": suffix + "%",
        "street_number": street_number,
    }

    case_ids = do_query(query, args)
    case_ids = [case_id["id"] for case_id in case_ids]
    cases = [get_case(case_id) for case_id in case_ids]
    cases = [case for case in cases if bool(case)]
def get_case_count(address_id):
    query = """
              SELECT
                MAX(wvs_nr) as num_cases
              FROM import_wvs
              WHERE adres_id=%(address_id)s
            """

    args = {"address_id": address_id}
    executed_query = do_query(query, args)
    return return_first_or_empty(executed_query)
def get_bwv_tables():
    """
    Gets bwv tables and columns
    """

    query = """
            SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
            """

    args = {}
    return do_query(query, args)
def get_bwv_columns(table_name):
    """
    Gets bwv columns by table_name
    """

    query = """
            SELECT column_name FROM information_schema.columns WHERE table_name = %(table_name)s;
            """

    args = {"table_name": table_name}
    return do_query(query, args)
def get_case_basics(case_id):
    query = """
            SELECT
              wvs_nr as case_number,
              beh_oms as openings_reden
            FROM import_wvs WHERE zaak_id=%(case_id)s
            """

    args = {"case_id": case_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_related_cases(address_id):
    query = """
            SELECT wvs_nr as case_number, zaak_id as id, beh_oms AS case_reason
            FROM import_wvs
            WHERE adres_id = %(address_id)s
            AND afs_code is Null
            """

    args = {"address_id": address_id}
    executed_query = do_query(query, args)

    return executed_query
def get_toezichthouder_name(code):
    if code:
        query = """
                SELECT naam FROM bwv_medewerkers where code = %(code)s
                """

        args = {"code": code}
        executed_query = do_query(query, args)
        item = return_first_or_empty(executed_query)

        return item.get("naam", None)

    return None
def get_related_case_ids(case_id):
    query = """
            SELECT DISTINCT ON (import_wvs.zaak_id)
              import_adres.adres_id,
              import_adres.wng_id
            FROM import_adres INNER JOIN import_stadia ON import_adres.adres_id = import_stadia.adres_id
            INNER JOIN import_wvs ON import_stadia.adres_id = import_wvs.adres_id
            AND zaak_id = %(case_id)s
              """

    args = {"case_id": case_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_bwv_personen_hist():
    """
    Returns all bwv_personen_hist records
    """
    query = """
            SELECT *
            FROM
              bwv_personen_hist
            """

    args = {}
    query_results = do_query(query, args)

    return query_results
def get_statements(case_id):
    query = """
            SELECT
              mededelingen AS statements
            FROM import_wvs WHERE zaak_id=%(case_id)s
            """

    args = {"case_id": case_id}
    executed_query = do_query(query, args)
    raw_statements = return_first_or_empty(executed_query).get("statements")

    statements = parse_statement(raw_statements) if raw_statements else []

    return statements
def get_open_cases(address_id):
    # Note: Our current bwv dump doesn't export the complete history of cases ever
    # So this might not always be accurate (we'll have to check)
    query = """
            SELECT
              COUNT(adres_id) as num_open_cases
            FROM import_wvs
            WHERE adres_id=%(address_id)s AND afs_code is NULL
            """

    args = {"address_id": address_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_is_bnb_declared(wng_id):
    """
    Returns if the adress is currently declared as a bnb
    """

    query = """
            SELECT benb_melding as is_bnb_declared
            FROM bwv_woningen
            WHERE id=%(wng_id)s
            """

    args = {"wng_id": wng_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_shortstay_license(wng_id):
    """
    Returns the shortstay license
    """

    query = """
            SELECT shortstay
            FROM bwv_woningen
            WHERE id=%(wng_id)s
            """

    args = {"wng_id": wng_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_bwv_hotline_melding(wng_id):
    query = """
            SELECT
              melding_datum,
              melder_anoniem,
              melder_naam,
              melder_emailadres,
              melder_telnr,
              situatie_schets
            FROM bwv_hotline_melding WHERE wng_id = %(wng_id)s
            ORDER BY melding_datum ASC
            """

    args = {"wng_id": wng_id}
    return do_query(query, args)
Example #20
0
    def test_do_query_fails(self, mock_get_bwv_cursor):
        """
        Should return empty list when query execution fails
        """

        def failing_execute_mock(query):
            raise Error("Mock Exception")

        bwv_cursor = Mock()
        bwv_cursor.execute = failing_execute_mock
        mock_get_bwv_cursor.return_value = bwv_cursor

        QUERY = "SELECT * FROM table_name"
        result = do_query(QUERY)

        self.assertEqual(result, [])
def get_import_adres(wng_id):
    query = """
            SELECT
              sttnaam as street_name,
              hsnr as number,
              hsltr as suffix_letter,
              toev as suffix,
              postcode as postal_code,
              landelijk_bag
            FROM import_adres WHERE wng_id = %(wng_id)s
            """

    args = {"wng_id": wng_id}
    executed_query = do_query(query, args)

    return return_first_or_empty(executed_query)
def get_bwv_personen(address_id):
    query = """
            SELECT
              naam,
              voorletters,
              geslacht,
              geboortedatum,
              bwv_personen_hist.vestigingsdatum_adres,
              bwv_personen_hist.overlijdensdatum
            FROM bwv_personen_hist
            INNER JOIN bwv_personen
              ON bwv_personen.id = bwv_personen_hist.pen_id
              AND ads_id = %(address_id)s
              AND bwv_personen_hist.vertrekdatum_adres is Null
            ORDER BY vestigingsdatum_adres DESC
            """

    args = {"address_id": address_id}
    return do_query(query, args)
def get_eligible_stadia(starting_date, stages):
    """
    Gets stadia which are eligible for planning
    """

    # Due to a recent change in the process, a new stage was introduced which can be open during
    # other stages. This overrules open stages that are relevant for generating itineraries
    # exclude_stadia is now added to filter out this process.

    query = """
            SELECT
            sta_oms AS stadium,
            sta_nr AS sta_nr,
            stadia_id,
            peildatum,
            begindatum AS begindatum_stadium,
            einddatum AS einddatum_stadium
            FROM import_stadia
            WHERE einddatum is Null
            AND begindatum > %(starting_date)s
            AND peildatum < NOW()
            AND sta_oms IN %(stages)s
            AND sta_oms NOT IN %(exclude_stadia)s
            """

    args = {
        "starting_date": starting_date,
        "stages": tuple(stages),
        "exclude_stadia": EXCLUDE_STADIA,
    }
    stadia = do_query(query, args)

    # Parses the case_id from the stadia_id and maps it in dictionary to easily access the stadia
    stadia_dictionary = {}
    for stadium in stadia:
        stadia_id = stadium["stadia_id"]
        case_id_raw = stadia_id.split("_")
        case_id_raw.pop()
        case_id = "_".join(case_id_raw)
        stadia_dictionary[case_id] = stadium

    return stadia_dictionary
def get_case(case_id):
    query = """
            SELECT
              import_wvs.zaak_id AS id,
              import_wvs.begindatum AS start_date,
              import_wvs.einddatum AS end_date,
              import_adres.postcode AS postal_code,
              import_adres.sttnaam AS street_name,
              import_adres.hsnr AS street_number,
              import_adres.hsltr AS suffix_letter,
              import_adres.toev AS suffix,
              import_adres.wzs_lon AS lng,
              import_adres.wzs_lat as lat,
              import_stadia.sta_oms AS stadium,
              import_wvs.beh_oms AS case_reason,
              import_wvs.is_sia AS is_sia
            FROM
              import_wvs
            INNER JOIN
              import_adres ON import_wvs.adres_id = import_adres.adres_id
            INNER JOIN
              import_stadia ON import_wvs.adres_id = import_stadia.adres_id
            AND
              stadia_id LIKE %(case_id_like)s
            AND import_wvs.zaak_id = %(case_id)s
            AND sta_oms NOT IN %(exclude_stadia)s
            ORDER BY
              import_stadia.einddatum DESC, sta_nr DESC
            LIMIT 1
            """

    args = {
        "case_id_like": case_id + "_%",
        "case_id": case_id,
        "exclude_stadia": EXCLUDE_STADIA,
    }
    executed_query = do_query(query, args)

    case = return_first_or_empty(executed_query)

    return prepare_bwv_case_for_aza(case)
def get_bwv_vakantieverhuur(wng_id):
    """
    Returns the current year's notified rentals
    """
    query = """
            SELECT
              datum_aanvang_verhuur as check_in,
              datum_einde_verhuur as check_out
            FROM
              bwv_vakantieverhuur
            WHERE
              date_part('year', datum_einde_verhuur) = date_part('year', CURRENT_DATE)
            AND
              wng_id = %(wng_id)s
            AND
              annuleer_date IS NULL
            ORDER BY check_in
            """

    args = {"wng_id": wng_id}
    query_results = do_query(query, args)
    get_rented_days(query_results)

    return query_results
def get_bwv_sync_times():
    query = """SELECT start, finished FROM sync_log ORDER BY start DESC"""

    executed_query = do_query(query)

    return executed_query