Commit ad2611858466bf0f7e8b58a93fb04bbe753aecda

Authored by Luan
1 parent 6c7f0db8

minor changes and caching home chart - closes #84

Showing 1 changed file with 18 additions and 5 deletions   Show diff stats
src/home/views.py
1 1
2 from collections import OrderedDict 2 from collections import OrderedDict
3 3
  4 +from django.core.cache import cache
4 from django.shortcuts import render 5 from django.shortcuts import render
5 6
6 from search.utils import trans 7 from search.utils import trans
7 from haystack.query import SearchQuerySet 8 from haystack.query import SearchQuerySet
8 9
  10 +from proxy.models import WikiCollabCount, TicketCollabCount
9 from super_archives.models import Thread 11 from super_archives.models import Thread
10 12
11 13
@@ -16,11 +18,22 @@ def index(request): @@ -16,11 +18,22 @@ def index(request):
16 latest_threads = Thread.objects.all()[:6] 18 latest_threads = Thread.objects.all()[:6]
17 hottest_threads = Thread.highest_score.from_haystack()[:6] 19 hottest_threads = Thread.highest_score.from_haystack()[:6]
18 20
19 - count_types = OrderedDict()  
20 - for type in ['thread', 'ticket', 'wiki', 'changeset', 'attachment']:  
21 - count_types[trans(type)] = SearchQuerySet().filter(  
22 - type=type,  
23 - ).count() 21 + count_types = cache.get('home_chart')
  22 + if count_types is None:
  23 + count_types = OrderedDict()
  24 + for type in ['thread', 'changeset', 'attachment']:
  25 + count_types[trans(type)] = SearchQuerySet().filter(
  26 + type=type,
  27 + ).count()
  28 +
  29 + count_types[trans('ticket')] = sum([
  30 + ticket.count for ticket in TicketCollabCount.objects.all()
  31 + ])
  32 +
  33 + count_types[trans('wiki')] = sum([
  34 + wiki.count for wiki in WikiCollabCount.objects.all()
  35 + ])
  36 + cache.set('home_chart', count_types, 60)
24 37
25 context = { 38 context = {
26 'hottest_threads': hottest_threads[:6], 39 'hottest_threads': hottest_threads[:6],