|
|
|
|
@ -3,6 +3,7 @@ from django.views.generic import TemplateView, CreateView, ListView, UpdateView, |
|
|
|
|
from django.conf import settings |
|
|
|
|
from django.http import HttpResponseRedirect |
|
|
|
|
from django.shortcuts import get_object_or_404 |
|
|
|
|
from django.db.models import Sum |
|
|
|
|
from expobanner.models import URL, BannerGroup, Banner, Paid, MainPage, Top |
|
|
|
|
from expobanner.forms import UrlCreateForm, BannerCreateGroupForm, BannerCreateForm, BannerGroupUpdateForm,\ |
|
|
|
|
PaidCreateForm, PaidUpdateForm, TopCreateForm, BannerLinkCreateForm, MainCreateForm, MainUpdateForm, TopUpdateForm |
|
|
|
|
@ -32,6 +33,7 @@ class CreateBanner(AbstractCreate): |
|
|
|
|
model = Banner |
|
|
|
|
form_class = BannerCreateForm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CreateLink(AbstractCreate): |
|
|
|
|
model = Banner |
|
|
|
|
form_class = BannerLinkCreateForm |
|
|
|
|
@ -67,6 +69,7 @@ class BannerList(AbstractList): |
|
|
|
|
qs = qs.filter(group__isnull=False) |
|
|
|
|
return qs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LinkList(AbstractList): |
|
|
|
|
model = Banner |
|
|
|
|
verbose = u'Список ссылок' |
|
|
|
|
@ -114,7 +117,10 @@ class PaidList(ListView): |
|
|
|
|
paginate_by = settings.ADMIN_PAGINATION |
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
return self.model.objects.language().filter(paid_new__isnull=False) |
|
|
|
|
qs = self.model.objects.language().filter(paid_new__isnull=False).order_by('-paid_new__public') |
|
|
|
|
if self.request.GET.get('onlypublic'): |
|
|
|
|
qs = qs.filter(paid_new__public=True) |
|
|
|
|
return qs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PaidCreate(CreateView): |
|
|
|
|
@ -162,6 +168,18 @@ class PaidStat(DetailView): |
|
|
|
|
model = Paid |
|
|
|
|
template_name = 'admin/expobanner/paid_stat.html' |
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
|
context = super(PaidStat, self).get_context_data(**kwargs) |
|
|
|
|
obj = self.object |
|
|
|
|
context['all'] = obj.paidstat_set.aggregate( |
|
|
|
|
official=Sum('official_clicks'), |
|
|
|
|
ticket=Sum('tickets_clicks'), |
|
|
|
|
participation=Sum('participation_clicks'), |
|
|
|
|
catalog=Sum('catalog_clicks') |
|
|
|
|
) |
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ---------------------------------- |
|
|
|
|
class MainList(ListView): |
|
|
|
|
model = Exposition |
|
|
|
|
@ -169,7 +187,10 @@ class MainList(ListView): |
|
|
|
|
paginate_by = settings.ADMIN_PAGINATION |
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
return self.model.objects.language().filter(main__isnull=False) |
|
|
|
|
qs = self.model.objects.language().filter(main__isnull=False).order_by('-main__public') |
|
|
|
|
if self.request.GET.get('onlypublic'): |
|
|
|
|
qs = qs.filter(main__public=True) |
|
|
|
|
return qs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MainCreate(CreateView): |
|
|
|
|
@ -202,6 +223,7 @@ def main_turn(request, pk, status): |
|
|
|
|
return HttpResponseRedirect('/admin/expobanners/main/list/') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MainStat(DetailView): |
|
|
|
|
model = MainPage |
|
|
|
|
template_name = 'admin/expobanner/main_stat.html' |
|
|
|
|
@ -210,10 +232,16 @@ class MainStat(DetailView): |
|
|
|
|
context = super(MainStat, self).get_context_data(**kwargs) |
|
|
|
|
obj = self.object |
|
|
|
|
context['stats'] = obj.link.banner_stat.all() |
|
|
|
|
context['all'] = obj.link.banner_stat.aggregate( |
|
|
|
|
views=Sum('view'), |
|
|
|
|
clicks=Sum('click'), |
|
|
|
|
unique_clicks=Sum('unique_click'), |
|
|
|
|
unique_views=Sum('unique_view') |
|
|
|
|
) |
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
# ------------------------------------ |
|
|
|
|
|
|
|
|
|
from datetime import date |
|
|
|
|
|
|
|
|
|
class TopList(ListView): |
|
|
|
|
model = Exposition |
|
|
|
|
@ -221,7 +249,10 @@ class TopList(ListView): |
|
|
|
|
paginate_by = settings.ADMIN_PAGINATION |
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
return self.model.objects.language().filter(top__isnull=False) |
|
|
|
|
qs = self.model.objects.language().filter(top__isnull=False).order_by('-top__fr') |
|
|
|
|
if self.request.GET.get('onlypublic'): |
|
|
|
|
qs = qs.filter(top__fr__lte=date.today(), top__to__gte=date.today()) |
|
|
|
|
return qs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TopCreate(CreateView): |
|
|
|
|
|