41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
from django.views.generic import View
|
|
from django.template import RequestContext
|
|
from django.shortcuts import render_to_response
|
|
from django.db.models import Count
|
|
from shelfzilla.apps.users.models import User
|
|
from shelfzilla.apps.manga.models import Volume, Series
|
|
|
|
|
|
class HomepageView(View):
|
|
template = 'homepage/home.html'
|
|
|
|
def get(self, request):
|
|
data = {}
|
|
from datetime import datetime
|
|
# TOP 5
|
|
data['TOP_5_COLLECTORS'] = User.objects.filter(pk__gt=1)\
|
|
.annotate(num_volumes=Count('have_volumes'))\
|
|
.order_by('-num_volumes')[:5]
|
|
|
|
# Latest manga
|
|
data['LATEST_MANGA_ADDED'] = Volume.objects\
|
|
.filter(release_date__lte=datetime.now())\
|
|
.order_by('-release_date')[:6]
|
|
|
|
# Future releases
|
|
data['FUTURE_RELEASES'] = Volume.objects\
|
|
.filter(release_date__gt=datetime.now())\
|
|
.order_by('release_date')[:6]
|
|
|
|
# Stats
|
|
data['STATS'] = {
|
|
'users': User.objects.count() - 1,
|
|
'series': Series.objects.count(),
|
|
'series_review': Series.objects.filter(for_review=True).count(),
|
|
'volumes': Volume.objects.count(),
|
|
'volumes_review': Volume.objects.filter(for_review=True).count(),
|
|
}
|
|
|
|
ctx = RequestContext(request, data)
|
|
return render_to_response(self.template, context_instance=ctx)
|