2121from .filters import CityFilter , ProvinceFilter , CountryFilter
2222
2323from collections import OrderedDict
24+ import json
2425
2526TIMEOUT = 60 * 60
2627
@@ -29,9 +30,9 @@ class LatestStatisticsView(APIView):
2930 """最新统计信息"""
3031
3132 def get_object (self ):
32- try :
33- crawler = Crawler . objects .order_by ('-id' ).first ()
34- except Crawler . DoesNotExist :
33+ crawler = Crawler . objects . exclude (
34+ modifyTime__isnull = True ) .order_by ('-id' ).first ()
35+ if crawler is None :
3536 raise Http404
3637 result = {}
3738 insts = Statistics .objects .filter (crawler = crawler ).all ()
@@ -120,7 +121,8 @@ class ProvinceListView(ListAPIView):
120121 filter_class = ProvinceFilter
121122
122123 def get_queryset (self ):
123- crawler = Crawler .objects .order_by ('-id' ).first ()
124+ crawler = Crawler .objects .exclude (
125+ modifyTime__isnull = True ).order_by ('-id' ).first ()
124126 queryset = Province .objects .filter (crawler = crawler )
125127 return queryset
126128
@@ -129,14 +131,34 @@ def dispatch(self, *args, **kwargs):
129131 return super (ProvinceListView , self ).dispatch (* args , ** kwargs )
130132
131133
132- class ProvinceRetrieveByNameView (APIView ):
133- """通过省名获取数据"""
134+ class ProvinceDailyListView (APIView ):
135+
136+ """省按天返回列表"""
134137
135138 def get_object (self , provinceShortName ):
139+ crawler = Crawler .objects .exclude (
140+ modifyTime__isnull = True ).order_by ('-id' ).first ()
136141 try :
137- crawler = Crawler .objects .order_by ('-id' ).first ()
138- except Crawler .DoesNotExist :
142+ return Province .objects .filter (
143+ crawler = crawler ,
144+ provinceShortName = provinceShortName ).first ()
145+ except Province .DoesNotExist :
139146 raise Http404
147+
148+ @method_decorator (cache_page (TIMEOUT ))
149+ def get (self , request , provinceShortName ):
150+ province = self .get_object (provinceShortName )
151+ result = province .dailyData
152+ result = json .loads (result )
153+ return Response (result )
154+
155+
156+ class ProvinceRetrieveByNameView (APIView ):
157+ """通过省名获取数据"""
158+
159+ def get_object (self , provinceShortName ):
160+ crawler = Crawler .objects .exclude (
161+ modifyTime__isnull = True ).order_by ('-id' ).first ()
140162 try :
141163 return Province .objects .filter (
142164 crawler = crawler ,
@@ -172,7 +194,8 @@ class CountryListView(ListAPIView):
172194 filter_class = CountryFilter
173195
174196 def get_queryset (self ):
175- crawler = Crawler .objects .order_by ('-id' ).first ()
197+ crawler = Crawler .objects .exclude (
198+ modifyTime__isnull = True ).order_by ('-id' ).first ()
176199 queryset = Country .objects .filter (crawler = crawler )
177200 return queryset .all ()
178201
@@ -196,13 +219,30 @@ def get(self, request, pk):
196219 return Response (serializer .data )
197220
198221
199- class CountryRetrieveByNameView (APIView ):
222+ class CountryDailyListView (APIView ):
200223
201224 def get_object (self , countryName ):
225+ crawler = Crawler .objects .exclude (
226+ modifyTime__isnull = True ).order_by ('-id' ).first ()
202227 try :
203- crawler = Crawler .objects .order_by ('-id' ).first ()
204- except Crawler .DoesNotExist :
228+ return Country .objects .filter (
229+ crawler = crawler , countryName = countryName ).first ()
230+ except Country .DoesNotExist :
205231 raise Http404
232+
233+ @method_decorator (cache_page (TIMEOUT ))
234+ def get (self , request , countryName ):
235+ country = self .get_object (countryName )
236+ result = country .dailyData
237+ result = json .loads (result )
238+ return Response (result )
239+
240+
241+ class CountryRetrieveByNameView (APIView ):
242+
243+ def get_object (self , countryName ):
244+ crawler = Crawler .objects .exclude (
245+ modifyTime__isnull = True ).order_by ('-id' ).first ()
206246 try :
207247 return Country .objects .filter (
208248 crawler = crawler , countryName = countryName ).first ()
@@ -222,7 +262,8 @@ class CityListView(ListAPIView):
222262 filter_class = CityFilter
223263
224264 def get_queryset (self ):
225- crawler = Crawler .objects .order_by ('-id' ).first ()
265+ crawler = Crawler .objects .exclude (
266+ modifyTime__isnull = True ).order_by ('-id' ).first ()
226267 queryset = City .objects .filter (crawler = crawler )
227268 return queryset
228269
@@ -249,10 +290,8 @@ def get(self, request, pk):
249290class CityRetrieveByNameView (APIView ):
250291
251292 def get_object (self , cityName ):
252- try :
253- crawler = Crawler .objects .order_by ('-id' ).first ()
254- except Crawler .DoesNotExist :
255- raise Http404
293+ crawler = Crawler .objects .exclude (
294+ modifyTime__isnull = True ).order_by ('-id' ).first ()
256295 try :
257296 return City .objects .filter (
258297 crawler = crawler , cityName = cityName ).first ()
0 commit comments