From 0d7bfda5df32d174db62f3f53d6ea7e28477b59a Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Tue, 6 Aug 2019 16:11:36 -0700 Subject: [PATCH] FIX `sale_planner` It is possible that the 'fall back' core geo_localize can raise an index error --- sale_planner/models/partner.py | 29 +++++++++++--------- sale_planner/wizard/order_planner.py | 40 +++++++++++++++------------- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/sale_planner/models/partner.py b/sale_planner/models/partner.py index fe44f548..23e258d3 100644 --- a/sale_planner/models/partner.py +++ b/sale_planner/models/partner.py @@ -13,17 +13,20 @@ class Partner(models.Model): def geo_localize(self): # We need country names in English below for partner in self.with_context(lang='en_US'): - if SearchEngine and partner.zip: - with SearchEngine() as search: - zipcode = search.by_zipcode(str(self.zip).split('-')[0]) - if zipcode and zipcode.lat: - partner.write({ - 'partner_latitude': zipcode.lat, - 'partner_longitude': zipcode.lng, - 'date_localization': fields.Date.context_today(partner), - }) - else: - super(Partner, partner).geo_localize() - else: - super(Partner, partner).geo_localize() + try: + if SearchEngine and partner.zip: + with SearchEngine() as search: + zipcode = search.by_zipcode(str(self.zip).split('-')[0]) + if zipcode and zipcode.lat: + partner.write({ + 'partner_latitude': zipcode.lat, + 'partner_longitude': zipcode.lng, + 'date_localization': fields.Date.context_today(partner), + }) + else: + super(Partner, partner).geo_localize() + else: + super(Partner, partner).geo_localize() + except: + pass return True diff --git a/sale_planner/wizard/order_planner.py b/sale_planner/wizard/order_planner.py index c3308c66..b4393022 100644 --- a/sale_planner/wizard/order_planner.py +++ b/sale_planner/wizard/order_planner.py @@ -59,26 +59,28 @@ class FakePartner(): @property def date_localization(self): if not self._date_localization: - self._date_localization = 'TODAY!' - # The fast way. - if SearchEngine and self.zip: - with SearchEngine() as search: - zipcode = search.by_zipcode(str(self.zip).split('-')[0]) - if zipcode and zipcode.lat: - self.partner_latitude = zipcode.lat - self.partner_longitude = zipcode.lng - return self._date_localization - - # The slow way. - result = geo_find(geo_query_address( - city=self.city, - state=self.state_id.name, - country=self.country_id.name, - )) - if result: - self.partner_latitude = result[0] - self.partner_longitude = result[1] + try: + self._date_localization = 'TODAY!' + # The fast way. + if SearchEngine and self.zip: + with SearchEngine() as search: + zipcode = search.by_zipcode(str(self.zip).split('-')[0]) + if zipcode and zipcode.lat: + self.partner_latitude = zipcode.lat + self.partner_longitude = zipcode.lng + return self._date_localization + # The slow way. + result = geo_find(geo_query_address( + city=self.city, + state=self.state_id.name, + country=self.country_id.name, + )) + if result: + self.partner_latitude = result[0] + self.partner_longitude = result[1] + except: + self._date_localization = 'ERROR' return self._date_localization def __getattr__(self, item):