Skip to content

Commit 0e3d924

Browse files
committed
The first aggregate pattern
1 parent 1c7e4ae commit 0e3d924

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

app/location/__init__.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,42 @@
33
from ..utils import countries
44
from ..utils.populations import country_population
55

6+
# put confirmed cases, deaths cases, recovered cases into one class
7+
# Inseated of using confirmed cases, deaths cases, recovered cases as attributes, we can use CaseNumbers class instance as attribute
8+
class CaseNumbers:
9+
def __init__(self, confirmed = 0, deaths = 0, recovered = 0):
10+
self.confirmed = confirmed
11+
self.deaths = deaths
12+
self.recovered = recovered
13+
14+
class Locationinfo:
15+
def __init__(self, id, country, province, coordinates):
16+
self.id = id
17+
self.country = country.strip()
18+
self.province = province.strip()
19+
self.coordinates = coordinates
20+
21+
22+
623

724
# pylint: disable=redefined-builtin,invalid-name
825
class Location: # pylint: disable=too-many-instance-attributes
926
"""
1027
A location in the world affected by the coronavirus.
1128
"""
1229

30+
# Use instance of class CaseNumbers as attribute
1331
def __init__(
14-
self, id, country, province, coordinates, last_updated, confirmed, deaths, recovered,
32+
self, locationinfo, last_updated, casenumbers
1533
): # pylint: disable=too-many-arguments
1634
# General info.
17-
self.id = id
18-
self.country = country.strip()
19-
self.province = province.strip()
20-
self.coordinates = coordinates
35+
self.locationinfo = locationinfo
2136

2237
# Last update.
2338
self.last_updated = last_updated
2439

2540
# Statistics.
26-
self.confirmed = confirmed
27-
self.deaths = deaths
28-
self.recovered = recovered
41+
self.casenumbers = casenumbers
2942

3043
@property
3144
def country_code(self):
@@ -67,9 +80,9 @@ def serialize(self):
6780
"last_updated": self.last_updated,
6881
# Latest data (statistics).
6982
"latest": {
70-
"confirmed": self.confirmed,
71-
"deaths": self.deaths,
72-
"recovered": self.recovered,
83+
"confirmed": self.casenumbers.confirmed,
84+
"deaths": self.casenumbers.deaths,
85+
"recovered": self.casenumbers.recovered,
7386
},
7487
}
7588

@@ -80,7 +93,7 @@ class TimelinedLocation(Location):
8093
"""
8194

8295
# pylint: disable=too-many-arguments
83-
def __init__(self, id, country, province, coordinates, last_updated, timelines):
96+
def __init__(self, id, country, province, coordinates, last_updated, timelines, casenumbers):
8497
super().__init__(
8598
# General info.
8699
id,
@@ -89,11 +102,15 @@ def __init__(self, id, country, province, coordinates, last_updated, timelines):
89102
coordinates,
90103
last_updated,
91104
# Statistics (retrieve latest from timelines).
92-
confirmed=timelines.get("confirmed").latest or 0,
93-
deaths=timelines.get("deaths").latest or 0,
94-
recovered=timelines.get("recovered").latest or 0,
105+
casenumbers
106+
#confirmed=timelines.get("confirmed").latest or 0,
107+
#deaths=timelines.get("deaths").latest or 0,
108+
#recovered=timelines.get("recovered").latest or 0,
95109
)
96-
110+
#set case numbers
111+
self.casenumbers.confirmed=timelines.get("confirmed").latest or 0
112+
self.casenumbers.deaths=timelines.get("deaths").latest or 0
113+
self.casenumbers.recovered=timelines.get("recovered").latest or 0
97114
# Set timelines.
98115
self.timelines = timelines
99116

0 commit comments

Comments
 (0)