From 9a37ae106ca997579fd80f1664f2111c22d2befd Mon Sep 17 00:00:00 2001 From: leoscholl Date: Sat, 11 Aug 2018 14:38:13 -0700 Subject: [PATCH 1/4] remove __getattr__ changes, update alerts --- forecastio/models.py | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/forecastio/models.py b/forecastio/models.py index ff89d4d..a0077f6 100644 --- a/forecastio/models.py +++ b/forecastio/models.py @@ -18,6 +18,10 @@ def update(self): r = requests.get(self.response.url) self.json = r.json() self.response = r + + self._alerts = [] + for alertJSON in self.json.get('alerts', []): + self._alerts.append(Alert(alertJSON)) def currently(self): return self._forcastio_data('currently') @@ -98,15 +102,6 @@ def __init__(self, d={}): except: self.sunsetTime = None - def __getattr__(self, name): - try: - return self.d[name] - except KeyError: - raise PropertyUnavailable( - "Property '{}' is not valid" - " or is not available for this forecast".format(name) - ) - def __unicode__(self): return '' % (self.summary, self.time,) @@ -116,14 +111,5 @@ class Alert(UnicodeMixin): def __init__(self, json): self.json = json - def __getattr__(self, name): - try: - return self.json[name] - except KeyError: - raise PropertyUnavailable( - "Property '{}' is not valid" - " or is not available for this forecast".format(name) - ) - def __unicode__(self): return ''.format(self.title, self.time) From 0231b1d001a225a76bba34290e6cb7135e1106d3 Mon Sep 17 00:00:00 2001 From: leoscholl Date: Sat, 11 Aug 2018 14:47:57 -0700 Subject: [PATCH 2/4] fix __getattr__ unpickling error --- forecastio/models.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/forecastio/models.py b/forecastio/models.py index a0077f6..b2d0d49 100644 --- a/forecastio/models.py +++ b/forecastio/models.py @@ -72,6 +72,17 @@ def __init__(self, d=None): self.data = [ForecastioDataPoint(datapoint) for datapoint in d.get('data', [])] + + def __getattr__(self, name): + if 'd' not in vars(self): + raise AttributeError + try: + return getattr(self.d, name) + except KeyError: + raise PropertyUnavailable( + "Property '{}' is not valid" + " or is not available for this forecast".format(name) + ) def __unicode__(self): return ''.format(self.title, self.time) From c7127de89095902911fec5639b36fb005fea8d79 Mon Sep 17 00:00:00 2001 From: leoscholl Date: Sat, 11 Aug 2018 14:53:13 -0700 Subject: [PATCH 3/4] move __getattr__ --- forecastio/models.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/forecastio/models.py b/forecastio/models.py index b2d0d49..2067a9b 100644 --- a/forecastio/models.py +++ b/forecastio/models.py @@ -72,17 +72,6 @@ def __init__(self, d=None): self.data = [ForecastioDataPoint(datapoint) for datapoint in d.get('data', [])] - - def __getattr__(self, name): - if 'd' not in vars(self): - raise AttributeError - try: - return getattr(self.d, name) - except KeyError: - raise PropertyUnavailable( - "Property '{}' is not valid" - " or is not available for this forecast".format(name) - ) def __unicode__(self): return '' % (self.summary, self.time,) From 1a300d6d0ca8f92114766e5cc59fe73bb91d44be Mon Sep 17 00:00:00 2001 From: leoscholl Date: Sat, 11 Aug 2018 14:58:35 -0700 Subject: [PATCH 4/4] Update models.py --- forecastio/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forecastio/models.py b/forecastio/models.py index 2067a9b..e64d0f2 100644 --- a/forecastio/models.py +++ b/forecastio/models.py @@ -107,7 +107,7 @@ def __getattr__(self, name): if 'd' not in vars(self): raise AttributeError try: - return getattr(self.d, name) + return self.d[name] except KeyError: raise PropertyUnavailable( "Property '{}' is not valid" @@ -127,7 +127,7 @@ def __getattr__(self, name): if 'json' not in vars(self): raise AttributeError try: - return getattr(self.json, name) + return self.json[name] except KeyError: raise PropertyUnavailable( "Property '{}' is not valid"