@@ -15,20 +15,20 @@ class HomepageView(generic.TemplateView):
1515 template_name = 'index.html'
1616
1717 def get_context_data (self , ** kwargs ):
18- active_links = Link .objects .filter (recent_check__isnull = False , live = True
19- ).only ('recent_check' ).order_by ('-recent_check__return_code' )
20- codes = active_links .values (
21- 'recent_check__return_code' ).distinct ()
18+ active_links = Link .objects .filter (recent_check__isnull = False , live = True )
2219 num_checked = active_links .count ()
2320 items = Item .objects .filter (status = 1 )
2421 num_items = items .count ()
2522 num_bad_items = active_links .exclude (recent_check__return_code = 200 ).values ('items'
2623 ).distinct ().count ()
2724
25+ codes = active_links .values (
26+ 'recent_check__return_code'
27+ ).annotate (
28+ count = Count ('id' )
29+ ).order_by ('-recent_check__return_code' )
30+
2831 for code in codes :
29- code ['count' ] = active_links .filter (
30- recent_check__return_code = code ['recent_check__return_code' ],
31- ).count ()
3232 code ['percent' ] = '{:.2%}' .format (code ['count' ] / num_checked )
3333 return {'num_checked' : num_checked , 'codes' : codes ,
3434 'num_items' : num_items , 'num_bad_items' : num_bad_items }
@@ -39,14 +39,16 @@ class ProblemsView(generic.TemplateView):
3939
4040 def get_context_data (self , ** kwargs ):
4141 code = kwargs ['code' ]
42-
42+
4343 problems = Link .objects .exclude (recent_check__isnull = True
4444 ).filter (recent_check__return_code__exact = code , live = True
45+ ).select_related ('recent_check'
4546 ).order_by ('provider' ).annotate (title = F ('items__title' ))
46- providers = problems .values ('provider' ).distinct ().annotate (Count ('provider' ))
47+ providers = problems .values ('provider' ).distinct ().annotate (
48+ link_count = Count ('provider' ))
4749 for provider in providers :
48- provider ['links' ] = problems .filter (provider = provider [ 'provider' ])
49- #provider['count'] = provider['links'].count()
50+ provider ['links' ] = problems .filter (
51+ provider = provider [ 'provider' ]). order_by ( 'url' )[: 100 ]
5052 return {'code' : code , 'providers' : providers }
5153
5254
0 commit comments