##// END OF EJS Templates
Show all reply count and today reply count for threads on landing
Show all reply count and today reply count for threads on landing

File last commit:

r2004:d0cc4756 default
r2007:db58920c default
Show More
landing.py
41 lines | 1.4 KiB | text/x-python | PythonLexer
from datetime import datetime
from datetime import timedelta
from django.db.models import Count, Q
from django.shortcuts import render
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_protect
from boards import settings
from boards.models import Post, Tag, STATUS_ACTIVE, TagAlias
from boards.settings import SECTION_VIEW
from boards.views.base import BaseBoardView
PARAM_SECTION_STR = 'section_str'
PARAM_LATEST_THREADS = 'latest_threads'
TEMPLATE = 'boards/landing.html'
class LandingView(BaseBoardView):
@method_decorator(csrf_protect)
def get(self, request):
params = dict()
params[PARAM_SECTION_STR] = Tag.objects.get_tag_url_list(
Tag.objects.filter(Q(aliases__in=TagAlias.objects.filter_localized()) & Q(required=True))
.order_by('aliases__name'))
today = datetime.now() - timedelta(1)
ops = Post.objects.filter(thread__replies__pub_time__gt=today, opening=True, thread__status=STATUS_ACTIVE)\
.annotate(today_post_count=Count('thread__replies'))\
.order_by('-pub_time')
max_landing_threads = settings.get_int(SECTION_VIEW, 'MaxLandingThreads')
if max_landing_threads > 0:
ops = ops[:max_landing_threads]
params[PARAM_LATEST_THREADS] = ops
return render(request, TEMPLATE, params)