Skip to content

Commit f8e93d7

Browse files
authored
Merge pull request #206 from CodeForPhilly/format-phone-number7
format-phone-number7
2 parents 7e1baad + 750010d commit f8e93d7

File tree

3 files changed

+24
-107
lines changed

3 files changed

+24
-107
lines changed

src/server/datasource_manager.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import re
2-
import phonenumbers
32

43

54
def __clean_csv_headers(header):
@@ -71,28 +70,32 @@ def __clean_csv_headers(header):
7170
}
7271

7372

74-
def volgistics_address(street, index):
73+
def volgistics_address(index, street):
7574
result = ""
7675

77-
if isinstance(street, str):
78-
if " " in street:
79-
if index == 1:
80-
result = " ".join(street.split()[1:])
81-
else:
82-
result = street.split()[index]
83-
76+
for item in street:
77+
if isinstance(item, str):
78+
if " " in item:
79+
result = item.split()[index]
8480

8581
return result
8682

8783

8884
def normalize_phone_number(number):
89-
if str(number) == 'nan':
90-
return ""
91-
try:
92-
parsed_number = phonenumbers.parse(number, "US")
93-
except phonenumbers.phonenumberutil.NumberParseException:
94-
return ""
95-
return phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL)
85+
result = None
86+
87+
if number and str(number) != 'nan':
88+
number = re.sub('[() -.+]', '', number)
89+
90+
if number.isdigit() and (len(number) == 10 or (number[0] == '1' and len(number) == 11)):
91+
if number[0] == '1' and len(number) == 11:
92+
result = number[1:]
93+
else:
94+
result = number
95+
else:
96+
print("Invalid phone number was not loaded: " + number)
97+
98+
return result
9699

97100

98101
SOURCE_NORMALIZATION_MAPPING = {
@@ -101,7 +104,7 @@ def normalize_phone_number(number):
101104
"first_name": "first_name",
102105
"last_name": "last_name",
103106
"email": "email",
104-
"mobile": lambda df: df["mobile"].combine_first(df["phone"]),
107+
"mobile": lambda df: df["mobile"].combine_first(df["phone"]).apply(normalize_phone_number),
105108
"street_and_number": "mailing_street",
106109
"apartment": "mailing_street",
107110
"city": "mailing_city",
@@ -123,7 +126,7 @@ def normalize_phone_number(number):
123126
"first_name": "firstname",
124127
"last_name": "lastname",
125128
"email": "email",
126-
"mobile": lambda df: df["phone"],
129+
"mobile": lambda df: df["phone"].apply(normalize_phone_number),
127130
"street_and_number": "street",
128131
"apartment": "apartment",
129132
"city": "city",
@@ -138,9 +141,9 @@ def normalize_phone_number(number):
138141
"first_name": "first_name",
139142
"last_name": "last_name",
140143
"email": "email",
141-
"mobile": lambda df: df["cell"].combine_first(df["home"]),
142-
"street_and_number": lambda df: df["street_1"].apply(volgistics_address, index=1),
143-
"apartment": lambda df: df["street_1"].apply(volgistics_address, index=0),
144+
"mobile": lambda df: df["cell"].combine_first(df["home"]).apply(normalize_phone_number),
145+
"street_and_number": lambda df: volgistics_address(1, df["street_1"]),
146+
"apartment": lambda df: volgistics_address(0, df["street_1"]),
144147
"city": "city",
145148
"state": "state",
146149
"zip": "zip",

src/server/pipeline/create_master_df.py

Lines changed: 0 additions & 85 deletions
This file was deleted.

src/server/requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,3 @@ pytest
1313
flask-jwt-extended==4.0.2
1414
alembic
1515
flask-cors
16-
phonenumbers

0 commit comments

Comments
 (0)