From fec82e3fe383b8cac5076ac334bd75d39f69f216 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Fri, 5 Apr 2013 12:18:12 +0100 Subject: [PATCH] Don't do geo lookups on import. --- .../management/commands/import_stores.py | 2 +- app/stores/models/base.py | 3 ++- app/stores/tests.py | 21 ++++++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/stores/management/commands/import_stores.py b/app/stores/management/commands/import_stores.py index 6221a94..d5699dd 100644 --- a/app/stores/management/commands/import_stores.py +++ b/app/stores/management/commands/import_stores.py @@ -36,7 +36,7 @@ class Command(BaseCommand): country, created = Country.objects.get_or_create(name=country) county, created = County.objects.get_or_create(name=county, country=country) addr = Address(name=name, address1=addr1, address2=addr2, address3=addr3, city=city, county=county, country=country, postcode=postcode, geo_latitude=y, geo_longitude=x) - addr.save() + addr.save(no_lookup=True) store = Store(name=name, address=addr, website=website, email=email, phone=phone) if website: store.store_type = Store.STORE_TYPE_BOTH diff --git a/app/stores/models/base.py b/app/stores/models/base.py index a6367ff..323b477 100644 --- a/app/stores/models/base.py +++ b/app/stores/models/base.py @@ -187,7 +187,8 @@ class Address(models.Model): return self.address_string def save(self, **kwargs): - if not self.geo_latitude and not self.geo_longitude: + no_lookup = kwargs.pop('no_lookup', None) + if not no_lookup and not self.geo_latitude and not self.geo_longitude: res = caching_geo_lookup(self.address_string) if res: self.geo_latitude, self.geo_longitude = res[1] diff --git a/app/stores/tests.py b/app/stores/tests.py index 34559ef..e2b1132 100644 --- a/app/stores/tests.py +++ b/app/stores/tests.py @@ -121,4 +121,23 @@ class StoresStoreModelTestCase(TestCase): def test_chain_name(self): obj = Store(name='Test Store 3', address=self.addr) - self.assertEqual(str(obj), 'Test Store 3') \ No newline at end of file + self.assertEqual(str(obj), 'Test Store 3') + + +class StoresAddressModelTestCase(TestCase): + + fixtures = ['countries'] + + def test_geo_lookup(self): + country = Country.objects.get(name='United Kingdom') + addr = Address(name='test', address1='Bridge Street', city='Warrington', country=country, postcode='WA3') + addr.save() + self.assertIsNotNone(addr.geo_latitude) + self.assertIsNotNone(addr.geo_longitude) + + def test_skip_geo_lookup(self): + country = Country.objects.get(name='United Kingdom') + addr = Address(name='test', address1='Bridge Street', city='Warrington', country=country, postcode='WA3') + addr.save(no_lookup=True) + self.assertIsNone(addr.geo_latitude) + self.assertIsNone(addr.geo_longitude) \ No newline at end of file