Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion ais/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,8 @@ def model_to_data(self, address):
sa_data[col.name] = getattr(address.service_areas, col.name)
else:
sa_data = self.sa_data
sa_data['zip_code'] = address.zip_code if address.zip_code else sa_data['zip_code']
sa_data['zip_4'] = address.zip_4 if address.zip_4 else sa_data['zip_4']
if self.metadata['search_type'] in ('address', 'street'):
match_type = self.get_address_response_relationships(address=address, ref_addr=self.ref_addr) if not self.estimated else 'unmatched'
else:
Expand All @@ -371,7 +373,10 @@ def model_to_data(self, address):
'pwd_parcel_id': 'exact_key',
'opa_account': 'exact_key'
}
match_type = match_type_key[self.metadata['search_type']]
if self.metadata['search_type'] == 'opa_account' and self.metadata['normalized'] != address.opa_account_num:
match_type = 'changed_key'
else:
match_type = match_type_key[self.metadata['search_type']]

else:
match_type = self.estimated
Expand All @@ -385,6 +390,7 @@ def model_to_data(self, address):
('match_type', match_type if match_type else None),
('properties', OrderedDict([
('street_address', address.street_address),
('base_address', address.base_address),
('address_low', address.address_low),
('address_low_suffix', address.address_low_suffix),
('address_low_frac', address.address_low_frac),
Expand Down
13 changes: 12 additions & 1 deletion ais/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from sqlalchemy import func, desc
from passyunk.parser import PassyunkParser
from ais import app, util, app_db as db
from ais.models import Address, AddressSummary, StreetIntersection, StreetSegment, Geocode, AddressTag, DorParcel, PwdParcel, OpaProperty, ENGINE_SRID
from ais.models import Address, AddressSummary, StreetIntersection, StreetSegment, Geocode, AddressTag, DorParcel, PwdParcel, OpaProperty, OpaAccountNumChanges, ENGINE_SRID
from ..util import NotNoneDict
from .errors import json_error
from .paginator import QueryPaginator, Paginator
Expand Down Expand Up @@ -696,6 +696,17 @@ def account(query):

tagged_opa_account_nums = OpaProperty.query \
.filter(OpaProperty.account_num == normalized).all()

# If account number isn't found, look for any addresses that were tagged with that account number in the past.
if not tagged_opa_account_nums:
changed_opa_account_nums = OpaAccountNumChanges.query \
.filter(OpaAccountNumChanges.old_opa_account_num == normalized).all()

if changed_opa_account_nums:
new_opa_account_nums = tuple(set([x.new_opa_account_num for x in changed_opa_account_nums]))
tagged_opa_account_nums = OpaProperty.query \
.filter(OpaProperty.account_num.in_(new_opa_account_nums)).all()

street_addresses = tuple(set([x.street_address for x in tagged_opa_account_nums]))

addresses = AddressSummary.query \
Expand Down
1 change: 1 addition & 0 deletions ais/engine/bin/build_engine.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ SCRIPTS=(
"load_street_aliases"
"make_street_intersections"
"load_opa_properties"
"load_opa_account_changes"
"load_ng911_address_points"
"load_dor_parcels"
"load_dor_condos"
Expand Down
4 changes: 3 additions & 1 deletion ais/engine/scripts/load_dor_condos.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ def main():
# Read DOR Parcel rows from engine db
print("Reading parcels...")
dor_parcel_read_stmt = '''
select parcel_id, street_address, address_low, address_low_suffix, address_low_frac, address_high, street_predir,
select parcel_id, street_address,
base_address,
address_low, address_low_suffix, address_low_frac, address_high, street_predir,
street_name, street_suffix, street_postdir, street_full from {dor_parcel_table}
'''.format(dor_parcel_table='dor_parcel')
engine_dor_parcel_rows = etl.fromdb(pg_db, dor_parcel_read_stmt)
Expand Down
1 change: 1 addition & 0 deletions ais/engine/scripts/load_ng911_address_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def main():
'unit_num': comps['address_unit']['unit_num'] or '',
'unit_type': comps['address_unit']['unit_type'] or '',
'street_address': street_address,
'base_address': comps['base_address'],
}
address_points.append(address_point)

Expand Down
1 change: 1 addition & 0 deletions ais/engine/scripts/load_opa_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ def main():
'unit_num': comps['address_unit']['unit_num'] or '',
'unit_type': comps['address_unit']['unit_type'] or '',
'street_address': street_address,
'base_address': comps['base_address']
}
props.append(prop)

Expand Down
18 changes: 14 additions & 4 deletions ais/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ class PwdParcel(db.Model):
id = db.Column(db.Integer, primary_key=True)
parcel_id = db.Column(db.Integer, index=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand All @@ -143,6 +144,7 @@ class DorParcel(db.Model):
id = db.Column(db.Integer, primary_key=True)
parcel_id = db.Column(db.Text, index=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand All @@ -167,6 +169,7 @@ class DorCondominium(db.Model):
id = db.Column(db.Integer, primary_key=True)
parcel_id = db.Column(db.Text, index=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand All @@ -188,6 +191,7 @@ class OpaProperty(db.Model):
id = db.Column(db.Integer, primary_key=True)
account_num = db.Column(db.Text, index=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand All @@ -203,6 +207,11 @@ class OpaProperty(db.Model):
tencode = db.Column(db.Text)
owners = db.Column(db.Text)

class OpaAccountNumChanges(db.Model):
id = db.Column(db.Integer, primary_key=True)
pin = db.Column(db.Text, index=True)
old_opa_account_num = db.Column(db.Text, index=True)
new_opa_account_num = db.Column(db.Text)

##################
# ADDRESS POINTS #
Expand All @@ -211,6 +220,7 @@ class OpaProperty(db.Model):
class NG911AddressPoint(db.Model):
id = db.Column(db.Integer, primary_key=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand All @@ -233,6 +243,7 @@ class NG911AddressPoint(db.Model):
#############

ADDRESS_FIELDS = [
'base_address',
'address_low',
'address_low_suffix',
'address_low_frac',
Expand Down Expand Up @@ -278,6 +289,7 @@ class Address(db.Model):

id = db.Column(db.Integer, primary_key=True)
street_address = db.Column(db.Text)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand Down Expand Up @@ -354,6 +366,7 @@ def __init__(self, *args, **kwargs):
raise ValueError('Invalid range address')

kwargs = {
'base_address': c['base_address'],
'address_low': c['address']['low_num'],
'address_low_suffix': c['address']['addr_suffix'], # passyunk change
'address_low_frac': c['address']['fractional'], # passyunk change
Expand Down Expand Up @@ -460,10 +473,6 @@ def address_full_num(self):
num += '-' + str(address_high)[-2:]
return num

@property
def base_address(self):
return ' '.join([self.address_full, self.street_full])

@property
def base_address_no_suffix(self):
return '{} {}'.format(self.address_full_num, self.street_full)
Expand Down Expand Up @@ -1196,6 +1205,7 @@ class AddressSummary(db.Model):

id = db.Column(db.Integer, primary_key=True)
street_address = db.Column(db.Text, unique=True)
base_address = db.Column(db.Text)
address_low = db.Column(db.Integer)
address_low_suffix = db.Column(db.Text)
address_low_frac = db.Column(db.Text)
Expand Down
9 changes: 9 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,15 @@
'geom': 'shape',
},
},
'opa_account_num_changes': {
'db': 'citygeo',
'table': 'viewer_opa.pin_account_number_change_map',
'field_map': {
'pin': 'pin',
'old_opa_account_num': 'old_opa_account_num',
'new_opa_account_num': 'new_opa_account_num',
},
},
'ng911_address_points': {
'db': 'citygeo',
'table': 'viewer_ng911.ng911_siteaddresses',
Expand Down
Loading