Skip to content
This repository was archived by the owner on May 5, 2023. It is now read-only.

Commit b2a381e

Browse files
committed
Merge branch 'develop'
2 parents 71cf293 + 01afd7e commit b2a381e

23 files changed

+1187
-931
lines changed

.gitignore

+4-4
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ venv.bak/
100100
# mkdocs documentation
101101
/site
102102

103-
spider/nCoV/__pycache__/
104-
covid19/__pycache__/
105-
ncovapi/__pycache__/
106-
ncovapi/migrations/
103+
demo_pro/__pycache__/
104+
django_covid19/__pycache__/
105+
django_covid19/migrations/
106+
django_covid19/spider/nCoV/__pycache__/
107107
*.sqlite3
108108
*.db
109109
static/

MANIFEST.in

+7-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@ include LICENSE
22
include README.md
33
include requirements.txt
44

5-
recursive-include django_covid19/spider *
6-
recursive-include django_covid19/locale *
5+
recursive-include django_covid19 *
76
recursive-include docs *
87
recursive-include demo *
98
recursive-include demo_proj manage.py
109
recursive-include demo_proj requirements.txt
1110
recursive-include demo_proj/ncov *
1211

1312
recursive-exclude demo_proj db.sqlite3
13+
recursive-exclude demo_proj/ncov/__pycache__ *
1414
recursive-exclude django_covid19/migrations *
15+
recursive-exclude django_covid19/__pycache__ *
16+
recursive-exclude django_covid19/management/__pycache__ *
17+
recursive-exclude django_covid19/management/commands/__pycache__ *
18+
recursive-exclude django_covid19/spider/nCoV/__pycache__ *
19+
recursive-exclude django_covid19/spider/nCoV/spiders/__pycache__ *

demo/index.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,15 @@ <h3 class="chart-title">各国累计确诊占比</h3>
350350

351351
function load_province_map() {
352352
$.ajax({
353-
url: "http://111.231.75.86:8000/api/provinces/",
353+
url: "http://111.231.75.86:8000/api/provinces/CHN/",
354354
dataType: "json"
355355
}).done(function() {
356356
$("#mapChart").addClass("chart-done");
357357
}).done(function(data) {
358358
const chartData = [];
359359
for(let i in data) {
360360
chartData.push({
361-
name: data[i].provinceShortName,
361+
name: data[i].provinceName,
362362
value: data[i].currentConfirmedCount,
363363
source: data[i]
364364
});
@@ -477,7 +477,7 @@ <h3 class="chart-title">各国累计确诊占比</h3>
477477

478478
function load_usa_daily_list() {
479479
$.ajax({
480-
url: "http://111.231.75.86:8000/api/countries/美国/daily/",
480+
url: "http://111.231.75.86:8000/api/countries/USA/daily/",
481481
dataType: "json"
482482
}).done(function() {
483483
$("#trendChart").addClass("chart-done");

demo_proj/ncov/settings.py

-4
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,6 @@
150150
}
151151
}
152152

153-
if DEBUG == True:
154-
CACHES['default']['BACKEND'] = 'django.core.cache.backends.locmem.LocMemCache'
155-
CACHES['default']['LOCATION'] = 'ncov'
156-
157153
# 跨域增加忽略
158154
CORS_ALLOW_CREDENTIALS = True
159155
CORS_ORIGIN_ALLOW_ALL = True

demo_proj/requirements.txt

-40
This file was deleted.

django_covid19/admin.py

+12-19
Original file line numberDiff line numberDiff line change
@@ -61,41 +61,34 @@ def to_json(self, data):
6161
class CityAdmin(BaseAdmin):
6262

6363
list_display = (
64-
'province', 'cityName', 'currentConfirmedCount',
65-
'confirmedCount', 'suspectedCount', 'curedCount', 'deadCount'
64+
'countryCode', 'provinceName', 'provinceCode', 'cityName',
65+
'currentConfirmedCount', 'confirmedCount', 'suspectedCount',
66+
'curedCount', 'deadCount'
67+
)
68+
search_fields = (
69+
'cityName', 'countryCode', 'provinceCode', 'provinceName'
6670
)
67-
search_fields = ('cityName', 'province__provinceName')
6871

6972

7073
@admin.register(models.Province)
7174
class ProvinceAdmin(BaseAdmin):
7275

7376
list_display = (
74-
'provinceName', 'currentConfirmedCount',
75-
'confirmedCount', 'suspectedCount', 'curedCount', 'deadCount'
77+
'countryCode', 'provinceName',
78+
'currentConfirmedCount', 'confirmedCount', 'suspectedCount',
79+
'curedCount', 'deadCount'
7680
)
77-
search_fields = ('provinceName', )
81+
search_fields = ('provinceName', 'countryCode')
7882

7983

8084
@admin.register(models.Country)
8185
class CountryAdmin(BaseAdmin):
8286

8387
list_display = (
84-
'continents', 'countryName', 'countryFullName',
88+
'continents', 'countryCode', 'countryName', 'countryFullName',
8589
'currentConfirmedCount', 'confirmedCount',
8690
'suspectedCount', 'curedCount', 'deadCount'
8791
)
8892
search_fields = (
89-
'continents', 'countryFullName', 'countryShortCode', 'countryName'
90-
)
91-
92-
93-
@admin.register(models.State)
94-
class StateAdmin(BaseAdmin):
95-
96-
list_display = (
97-
'countryShortCode', 'stateName', 'state',
98-
'totalTestResults', 'positive', 'negative', 'pending',
99-
'hospitalized', 'death', 'recovered', 'dateModified'
93+
'continents', 'countryFullName', 'countryCode', 'countryName'
10094
)
101-
search_fields = ('countryShortCode', 'stateName', 'state')

django_covid19/apps.py

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44

55
class DjangoCovid19Config(AppConfig):
6+
67
name = 'django_covid19'
78
verbose_name = _('django_covid19')
89

django_covid19/filters.py

+10-33
Original file line numberDiff line numberDiff line change
@@ -9,64 +9,41 @@ class CharInFilter(django_filters.BaseInFilter, django_filters.CharFilter):
99

1010
class CityFilter(django_filters.rest_framework.FilterSet):
1111

12-
provinceShortNames = CharInFilter(
13-
field_name='province__provinceShortName', lookup_expr='in')
1412
provinceNames = CharInFilter(
15-
field_name='province__provinceName', lookup_expr='in')
13+
field_name='provinceName', lookup_expr='in')
14+
provinceCodes = CharInFilter(
15+
field_name='provinceCode', lookup_expr='in')
1616
cityNames = CharInFilter(
1717
field_name='cityName', lookup_expr='in')
1818

19-
provinceShortName = django_filters.CharFilter(
20-
field_name='province__provinceShortName', lookup_expr='exact')
21-
provinceName = django_filters.CharFilter(
22-
field_name='province__provinceName', lookup_expr='exact')
23-
cityName = django_filters.CharFilter(
24-
field_name='cityName', lookup_expr='exact')
25-
2619
class Meta:
2720
model = models.City
28-
fields = ['provinceShortName', 'provinceName', 'cityName']
21+
fields = ['provinceName', 'provinceCode', 'cityName']
2922

3023

3124
class ProvinceFilter(django_filters.rest_framework.FilterSet):
3225

33-
provinceShortNames = CharInFilter(
34-
field_name='provinceShortName', lookup_expr='in')
3526
provinceNames = CharInFilter(
3627
field_name='provinceName', lookup_expr='in')
37-
38-
provinceShortName = django_filters.CharFilter(
39-
field_name='provinceShortName', lookup_expr='exact')
40-
provinceName = django_filters.CharFilter(
41-
field_name='provinceName', lookup_expr='exact')
28+
provinceCodes = CharInFilter(
29+
field_name='provinceCode', lookup_expr='in')
4230

4331
class Meta:
4432
model = models.Province
45-
fields = ['provinceName', 'provinceShortName']
33+
fields = ['provinceName', 'provinceCode']
4634

4735

4836
class CountryFilter(django_filters.rest_framework.FilterSet):
4937

5038
continents = CharInFilter(
5139
field_name='continents', lookup_expr='in')
52-
countryShortCodes = CharInFilter(
53-
field_name='countryShortCode', lookup_expr='in')
40+
countryCodes = CharInFilter(
41+
field_name='countryCode', lookup_expr='in')
5442
countryNames = CharInFilter(
5543
field_name='countryName', lookup_expr='in')
5644

5745
class Meta:
5846
model = models.Country
5947
fields = [
60-
'continents', 'countryShortCode', 'countryName'
48+
'continents', 'countryCode', 'countryName'
6149
]
62-
63-
64-
class StateFilter(django_filters.rest_framework.FilterSet):
65-
66-
states = CharInFilter(field_name='state', lookup_expr='in')
67-
stateNames = CharInFilter(
68-
field_name='stateName', lookup_expr='in')
69-
70-
class Meta:
71-
model = models.State
72-
fields = ['state', 'stateName']

django_covid19/fixtures/city.json

+1
Large diffs are not rendered by default.

django_covid19/fixtures/country.json

+1
Large diffs are not rendered by default.

django_covid19/fixtures/province.json

+1
Large diffs are not rendered by default.

django_covid19/fixtures/statistics.json

+1
Large diffs are not rendered by default.

django_covid19/models.py

+37-87
Original file line numberDiff line numberDiff line change
@@ -34,57 +34,10 @@ class Meta:
3434
verbose_name_plural = _('Statistics')
3535

3636

37-
class Province(models.Model):
38-
39-
locationId = models.IntegerField(_('locationId'))
40-
provinceName = models.CharField(_('provinceName'), max_length=50)
41-
provinceShortName = models.CharField(_('provinceShortName'), max_length=20)
42-
currentConfirmedCount = models.IntegerField(_('currentConfirmedCount'), default=0)
43-
confirmedCount = models.IntegerField(_('confirmedCount'), default=0)
44-
suspectedCount = models.IntegerField(_('suspectedCount'), default=0)
45-
curedCount = models.IntegerField(_('curedCount'), default=0)
46-
deadCount = models.IntegerField(_('deadCount'), default=0)
47-
comment = models.CharField(_('comment'), max_length=200)
48-
statisticsData = models.CharField(_('statisticsData'), max_length=500)
49-
dailyData = models.TextField(_('dailyData'))
50-
createTime = models.DateTimeField(_('createTime'), auto_now_add=True, editable=False)
51-
modifyTime = models.DateTimeField(_('modifyTime'), auto_now=True, editable=False)
52-
53-
class Meta:
54-
verbose_name = _('Province')
55-
verbose_name_plural = _('Province')
56-
57-
58-
class City(models.Model):
59-
60-
locationId = models.IntegerField(_('locationId'))
61-
cityName = models.CharField(_('cityName'), max_length=50)
62-
currentConfirmedCount = models.IntegerField(_('currentConfirmedCount'), default=0)
63-
confirmedCount = models.IntegerField(_('confirmedCount'), default=0)
64-
suspectedCount = models.IntegerField(_('suspectedCount'), default=0)
65-
curedCount = models.IntegerField(_('curedCount'), default=0)
66-
deadCount = models.IntegerField(_('deadCount'), default=0)
67-
createTime = models.DateTimeField(_('createTime'), auto_now_add=True, editable=False)
68-
modifyTime = models.DateTimeField(_('modifyTime'), auto_now=True, editable=False)
69-
province = models.ForeignKey(
70-
"Province", verbose_name=_('province'), on_delete=models.CASCADE,
71-
related_name="cities", db_column="provinceId"
72-
)
73-
74-
@property
75-
def provinceName(self):
76-
return self.province.provinceName
77-
78-
class Meta:
79-
verbose_name = _('City')
80-
verbose_name_plural = _('City')
81-
82-
8337
class Country(models.Model):
8438

85-
locationId = models.IntegerField()
8639
continents = models.CharField(max_length=50)
87-
countryShortCode = models.CharField(max_length=20)
40+
countryCode = models.CharField(max_length=20)
8841
countryName = models.CharField(max_length=50)
8942
countryFullName = models.CharField(max_length=50)
9043
currentConfirmedCount = models.IntegerField(default=0)
@@ -113,44 +66,41 @@ class Meta:
11366
verbose_name_plural = _('Country')
11467

11568

116-
class State(models.Model):
117-
118-
countryShortCode = models.CharField(max_length=20)
119-
stateName = models.CharField(max_length=50, null=False)
120-
currentUrl = models.URLField(max_length=200, null=True, blank=True)
121-
dailyUrl = models.URLField(max_length=200, null=True, blank=True)
122-
dailyData = models.TextField(default='[]') # save daily data here
123-
124-
# fields in covidtracking api
125-
state = models.CharField(max_length=10, null=False)
126-
positive = models.IntegerField(null=True, blank=True)
127-
negative = models.IntegerField(null=True, blank=True)
128-
positiveScore = models.IntegerField(null=True, blank=True)
129-
negativeScore = models.IntegerField(null=True, blank=True)
130-
negativeRegularScore = models.IntegerField(null=True, blank=True)
131-
commercialScore = models.IntegerField(null=True, blank=True)
132-
score = models.IntegerField(null=True, blank=True)
133-
notes = models.TextField(null=True, blank=True)
134-
dataQualityGrade = models.CharField(max_length=20, null=True, blank=True)
135-
pending = models.IntegerField(null=True, blank=True)
136-
hospitalizedCurrently = models.IntegerField(null=True, blank=True)
137-
hospitalizedCumulative = models.IntegerField(null=True, blank=True)
138-
inIcuCurrently = models.IntegerField(null=True, blank=True)
139-
inIcuCumulative = models.IntegerField(null=True, blank=True)
140-
onVentilatorCurrently = models.IntegerField(null=True, blank=True)
141-
onVentilatorCumulative = models.IntegerField(null=True, blank=True)
142-
recovered = models.IntegerField(null=True, blank=True)
143-
lastUpdateEt = models.CharField(max_length=20, null=True, blank=True)
144-
checkTimeEt = models.CharField(max_length=20, null=True, blank=True)
145-
death = models.IntegerField(null=True, blank=True)
146-
hospitalized = models.IntegerField(null=True, blank=True)
147-
totalTestResults = models.IntegerField(null=True, blank=True)
148-
posNeg = models.IntegerField(null=True, blank=True)
149-
fips = models.CharField(max_length=20, null=True, blank=True)
150-
dateModified = models.CharField(max_length=50, null=True, blank=True)
151-
dateChecked = models.CharField(max_length=50, null=True, blank=True)
152-
hash = models.CharField(max_length=100, null=True, blank=True)
69+
class Province(models.Model):
70+
71+
countryCode = models.CharField(_('countryCode'), max_length=20)
72+
provinceName = models.CharField(_('provinceName'), max_length=50)
73+
provinceCode = models.CharField(_('provinceCode'), max_length=20)
74+
currentConfirmedCount = models.IntegerField(_('currentConfirmedCount'), default=0)
75+
confirmedCount = models.IntegerField(_('confirmedCount'), default=0)
76+
suspectedCount = models.IntegerField(_('suspectedCount'), default=0)
77+
curedCount = models.IntegerField(_('curedCount'), default=0)
78+
deadCount = models.IntegerField(_('deadCount'), default=0)
79+
dailyUrl = models.URLField(_('dailyUrl'), null=True, blank=True)
80+
currentUrl = models.URLField(_('currentUrl'), null=True, blank=True)
81+
dailyData = models.TextField(_('dailyData'), default='[]')
82+
createTime = models.DateTimeField(_('createTime'), auto_now_add=True, editable=False)
83+
modifyTime = models.DateTimeField(_('modifyTime'), auto_now=True, editable=False)
84+
85+
class Meta:
86+
verbose_name = _('Province')
87+
verbose_name_plural = _('Province')
88+
89+
90+
class City(models.Model):
91+
92+
countryCode = models.CharField(_('countryCode'), max_length=20)
93+
provinceCode = models.CharField(_('provinceCode'), max_length=20)
94+
provinceName = models.CharField(_('provinceName'), max_length=50)
95+
cityName = models.CharField(_('cityName'), max_length=50)
96+
currentConfirmedCount = models.IntegerField(_('currentConfirmedCount'), default=0)
97+
confirmedCount = models.IntegerField(_('confirmedCount'), default=0)
98+
suspectedCount = models.IntegerField(_('suspectedCount'), default=0)
99+
curedCount = models.IntegerField(_('curedCount'), default=0)
100+
deadCount = models.IntegerField(_('deadCount'), default=0)
101+
createTime = models.DateTimeField(_('createTime'), auto_now_add=True, editable=False)
102+
modifyTime = models.DateTimeField(_('modifyTime'), auto_now=True, editable=False)
153103

154104
class Meta:
155-
verbose_name = _('State')
156-
verbose_name_plural = _('State')
105+
verbose_name = _('City')
106+
verbose_name_plural = _('City')

0 commit comments

Comments
 (0)