Skip to content

Commit

Permalink
refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
slawek87 committed Nov 25, 2014
1 parent 478da83 commit 26ec92a
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 49 deletions.
2 changes: 1 addition & 1 deletion geolocation/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class BaseApi(object):

log = logging.Logger('google_api')
log = logging.getLogger('google_api')

def __init__(self, api_key):
self.api_key = "&key=%s" % api_key
Expand Down
36 changes: 17 additions & 19 deletions geolocation/google_maps.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@

class GoogleMaps(object):
"""To find address use: GoogleMaps.search(location=full_address)."""
geocode = GeocodeParser()
geocode_parser = GeocodeParser()
data = set()

log = logging.Logger('google_maps')
log = logging.getLogger('google_maps')

def __init__(self, api_key):
self._geocode_api = GeocodeApi(api_key)
self.geocode_api = GeocodeApi(api_key)
self.clear()

def __repr__(self):
Expand All @@ -32,33 +32,31 @@ def validate(location):

return True

def _to_python(self, json_results):
def to_python(self, json_results):
"""Method should converts json_results to python object."""
for item in json_results:
self.geocode.json_data = item
self.geocode_parser.json_data = item

location = LocationModel()

location.city = self.geocode.get_city()
location.route = self.geocode.get_route()
location.street_number = self.geocode.get_street_number()
location.postal_code = self.geocode.get_postal_code()
location.city = self.geocode_parser.get_city()
location.route = self.geocode_parser.get_route()
location.street_number = self.geocode_parser.get_street_number()
location.postal_code = self.geocode_parser.get_postal_code()

location.country = self.geocode.get_country()
location.country_shortcut = self.geocode.get_country_shortcut()
location.country = self.geocode_parser.get_country()
location.country_shortcut = self.geocode_parser.get_country_shortcut()

location.administrative_area = self.geocode.get_administrative_area()
location.administrative_area = self.geocode_parser.get_administrative_area()

location.lat = self.geocode.get_lat()
location.lng = self.geocode.get_lng()
location.lat = self.geocode_parser.get_lat()
location.lng = self.geocode_parser.get_lng()

location.formatted_address = self.geocode.get_formatted_address()
location.formatted_address = self.geocode_parser.get_formatted_address()

if self.validate(location):
self.data.add(location)

return self.all()

def all(self):
"""Method returns location list."""
return list(self.data)
Expand All @@ -70,10 +68,10 @@ def first(self):
return None

def search(self, location=None, lat=None, lng=None):
json_results = self._geocode_api.query(location=location, lat=lat, lng=lng)
json_results = self.geocode_api.query(location=location, lat=lat, lng=lng)

if json_results:
self._to_python(json_results)
self.to_python(json_results)

return self

Expand Down
20 changes: 10 additions & 10 deletions geolocation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ class LocationModel(object):
_administrative_area = list()

def __init__(self, **kwargs):
self.city = kwargs.get('city', None)
self.route = kwargs.get('route', None)
self.street_number = kwargs.get('street_number', None)
self.country = kwargs.get('country', None)
self.country_shortcut = kwargs.get('country_shortcut', None)
self.postal_code = kwargs.get('postal_code', None)
self.lat = kwargs.get('lat', None)
self.lng = kwargs.get('lng', None)
self.formatted_address = kwargs.get('formatted_address', None)
self.city = kwargs.get('city')
self.route = kwargs.get('route')
self.street_number = kwargs.get('street_number')
self.country = kwargs.get('country')
self.country_shortcut = kwargs.get('country_shortcut')
self.postal_code = kwargs.get('postal_code')
self.lat = kwargs.get('lat')
self.lng = kwargs.get('lng')
self.formatted_address = kwargs.get('formatted_address')

def __repr__(self):
return '<LocationModel: %s>' % self.city
Expand All @@ -25,7 +25,7 @@ def administrative_area(self):
@administrative_area.setter
def administrative_area(self, value_list):
for value in value_list:
area = AdministrativeAreaLevelModel(value['area_type'], value['name'])
area = AdministrativeAreaLevelModel(value.get('area_type'), value.get('name'))
self._administrative_area.append(area)


Expand Down
35 changes: 17 additions & 18 deletions geolocation/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,22 @@ def set_json_data(self, value):
"""Method sets value to json_data"""
self.json_data = value

def _search_address_components(self, type_, shortcut=False):
def search_address_components(self, type_, shortcut=False):
"""Method searches address components in google maps json data."""
if not self.json_data:
return None
data = None

for address_component in self.json_data['address_components']:
types = address_component['types']
for address_component in self.json_data.get('address_components'):
types = address_component.get('types')

if type_ in types:
if shortcut:
return address_component['short_name'].encode('utf-8')
data = address_component.get('short_name').encode('utf-8')
else:
return address_component['long_name'].encode('utf-8')
data = address_component.get('long_name').encode('utf-8')

return None
return data

def _search_geometry_location(self, type_):
def search_geometry_location(self, type_):
"""Method searches geometry location in google maps json data"""
if not self.json_data:
return None
Expand All @@ -50,35 +49,35 @@ def get_formatted_address(self):

def get_street_number(self):
"""Method should returns street number of current location."""
return self._search_address_components('street_number')
return self.search_address_components('street_number')

def get_route(self):
"""Method should returns route long name of current location."""
return self._search_address_components('route')
return self.search_address_components('route')

def get_postal_code(self):
"""Method should returns postal code of current location."""
return self._search_address_components('postal_code')
return self.search_address_components('postal_code')

def get_city(self):
"""Method should returns city long name of current location."""
return self._search_address_components('locality')
return self.search_address_components('locality')

def get_country(self):
"""Method should returns country long name from current location."""
return self._search_address_components('country')
return self.search_address_components('country')

def get_country_shortcut(self):
"""Method should returns country short name from current location."""
return self._search_address_components('country', True)
return self.search_address_components('country', True)

def get_lat(self):
"""Method should returns lat property of current location."""
return self._search_geometry_location('lat')
return self.search_geometry_location('lat')

def get_lng(self):
"""Method should returns lng property of current location."""
return self._search_geometry_location('lng')
return self.search_geometry_location('lng')

def get_administrative_area(self):
"""Method should returns all administrative areas of current location."""
Expand All @@ -89,7 +88,7 @@ def get_administrative_area(self):
]

for area_type in administrative_areas:
name = self._search_address_components(area_type)
name = self.search_address_components(area_type)

if name:
data.append(dict(name=name, area_type=area_type))
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

setup(
name='geolocation-python',
version='0.1.2d',
version='0.1.3',
packages=['geolocation'],
url='',
download_url='https://github.com/slawek87/geolocation-python/',
Expand Down

0 comments on commit 26ec92a

Please sign in to comment.