big statistics task

remotes/origin/1203
Ivan 10 years ago
parent bac139099b
commit 7178ffc734
  1. 2
      emencia/django/newsletter/models.py
  2. 8
      emencia/django/newsletter/views/admin_views.py
  3. 24
      expobanner/admin.py
  4. 3
      exposition/models.py
  5. 42
      templates/admin/expobanner/banner_list.html
  6. 11
      templates/admin/expobanner/banner_stat.html
  7. 1
      templates/admin/expobanner/default_list.html
  8. 2
      templates/admin/expobanner/link_list.html
  9. 4
      templates/admin/expobanner/main_list.html
  10. 2
      templates/admin/expobanner/main_stat.html
  11. 33
      templates/admin/expobanner/paid_list.html
  12. 2
      templates/admin/expobanner/paid_stat.html
  13. 4
      templates/admin/expobanner/top_list.html

@ -558,7 +558,7 @@ from theme.models import Theme
class PopupCount(models.Model):
theme = models.ForeignKey(Theme)
theme = models.ForeignKey(Theme, null=True)
date = models.DateField(auto_created=True)
cnt = models.PositiveIntegerField(default=0)

@ -355,12 +355,14 @@ class PopupStatisticsView(TemplateView):
template_name='admin/newsletters/popup_count.html'
def get(self, request, *args, **kwargs):
qs = PopupCount.objects.filter(date=datetime.date.today())
qs = PopupCount.objects.all()
data = self.request.GET
if 'from' in data:
if data.get('from'):
qs = qs.filter(date__gte=datetime.datetime.strptime(data['from'], '%d.%m.%Y').date())
if 'to' in data:
if data.get('to'):
qs = qs.filter(date__lt=datetime.datetime.strptime(data['to'], '%d.%m.%Y').date())
if not data.get('from') and not data.get('to'):
qs = qs.filter(date=datetime.date.today())
if qs:
res = {'cnt':qs.aggregate(cnt=Sum('cnt'))['cnt'], 'subscr':qs[0].get_subscr(), 'active':qs[0].get_active()}
else:

@ -58,6 +58,7 @@ class BannerGroupList(AbstractList):
model = BannerGroup
verbose = u'Список груп'
from django.db.models import Q
class BannerList(AbstractList):
model = Banner
@ -65,8 +66,11 @@ class BannerList(AbstractList):
template_name = 'admin/expobanner/banner_list.html'
def get_queryset(self):
qs = super(BannerList, self).get_queryset()
qs = qs.filter(group__isnull=False)
qs = self.model.objects.filter(group__isnull=False).order_by('-fr')
if not self.request.GET.get('show_inactive'):
qs = qs.filter(Q(fr__lte=date.today()) & (Q(to__isnull=True) | Q( to__gte=date.today())))
if self.request.GET.get('q'):
qs = qs.filter(title__icontains=self.request.GET['q'])
return qs
@ -121,6 +125,12 @@ class BannerStat(DetailView):
if date_to:
date_to = datetime.strptime(date_to, "%d.%m.%Y")
qs = qs.filter(date__lte=date_to)
context['all'] = qs.aggregate(
view=Sum('view'),
click=Sum('click'),
unique_view=Sum('unique_view'),
unique_click=Sum('unique_click')
)
context['stats'] = qs
return context
@ -132,8 +142,10 @@ class PaidList(ListView):
def get_queryset(self):
qs = self.model.objects.language().filter(paid_new__isnull=False).order_by('-paid_new__public')
if self.request.GET.get('onlypublic'):
if not self.request.GET.get('show_inactive'):
qs = qs.filter(paid_new__public=True)
if self.request.GET.get('q'):
qs = qs.filter(name__icontains=self.request.GET['q'])
return qs
@ -212,7 +224,7 @@ class MainList(ListView):
def get_queryset(self):
qs = self.model.objects.language().filter(main__isnull=False).order_by('-main__public')
if self.request.GET.get('onlypublic'):
if not self.request.GET.get('show_inactive'):
qs = qs.filter(main__public=True)
return qs
@ -243,7 +255,7 @@ class MainConfList(ListView):
def get_queryset(self):
qs = self.model.objects.language().filter(main__isnull=False).order_by('-main__public')
if self.request.GET.get('onlypublic'):
if not self.request.GET.get('show_inactive'):
qs = qs.filter(main__public=True)
return qs
@ -327,7 +339,7 @@ class TopList(ListView):
def get_queryset(self):
qs = self.model.objects.language().filter(top__isnull=False).order_by('-top__fr')
if self.request.GET.get('onlypublic'):
if not self.request.GET.get('show_inactive'):
qs = qs.filter(top__fr__lte=date.today(), top__to__gte=date.today())
return qs

@ -284,6 +284,9 @@ class Exposition(TranslatableModel, EventMixin, ExpoMixin):
else:
return self.get_permanent_url()
def clicks(self):
return self.paid_new.tickets.clicks() + self.paid_new.participation.clicks() + self.paid_new.official.clicks()
class Statistic(TranslatableModel):
exposition = models.ForeignKey(Exposition, related_name='statistic')

@ -8,11 +8,39 @@
</div>
<div class="box-content">
{% block list_table %}
<div class="row-fluid">
<div class="span9">
<form name="search" class="form-horizontal" method="get">
<div class="control-group">
<div>
<div class="input-append">
<input placeholder="Введите название баннера" id="id_search" size="16" type="text"
name="q">
<button class="btn" type="submit">Найти!</button>
</div>
</div>
</div>
</form>
</div>
<div class="span3">
<form method="get" id="form">
Показать неактивные <input id="public" type="checkbox" name="show_inactive" value="true">
</form>
</div>
</div>
<table class="table table-hover">
<colgroup>
<col width="45%">
<col width="15%">
<col width="10%">
<col width="10%">
</colgroup>
<thead>
<tr>
<th>Объект</th>
<th>Всего кликов</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
@ -21,6 +49,7 @@
{% for item in object_list %}
<tr>
<td>{{ item }}</td>
<td>{{ item.clicks }}</td>
<td><a href="{{ item.get_admin_url }}">Изменить</a> </td>
<td><a href="{% url 'expobanner_stat_banner' item.id %}">Статистика</a> </td>
</tr>
@ -30,7 +59,16 @@
{% endblock %}
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %}
</div>
<a href="{% url 'expobanner-baneers_control' %}">Назад к управлению баннерами</a>
<script>
var cbox = $("#public");
var form = $("#form");
if(location.search.indexOf("show_inactive")>0)
cbox.attr('checked', true);
cbox.click(function(){
form.submit()
});
</script>
{% endblock %}

@ -38,7 +38,14 @@
</tr>
</thead>
<tbody>
{% with stats=stats %}
<tr>
<td><b>За весь период</b></td>
<td>{{ all.view }}</td>
<td>{{ all.click }}</td>
<td>{{ all.unique_view}}</td>
<td>{{ all.unique_click }}</td>
</tr>
{% with stats=stats %}
{% for stat in stats %}
<tr>
<td>{{ stat.date|date:"Y-m-d" }}</td>
@ -53,6 +60,8 @@
</table>
</div>
</div>
<a href="{{ request.META.HTTP_REFERER }}">Назад</a>
<div style="height:100px"></div>
</div>
<script>
console.log("down");

@ -30,5 +30,6 @@
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
<a href="{% url 'expobanner-baneers_control' %}">Назад к управлению баннерами</a>
{% endblock %}

@ -34,5 +34,5 @@
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
<a href="{% url 'expobanner-baneers_control' %}">Назад к управлению баннерами</a>
{% endblock %}

@ -17,7 +17,7 @@
</div>
<div style="float:right;">
<form method="get" id="form">
Только опубликование<input id="public" type="checkbox" name="onlypublic" value="true">
Показать неактивные <input id="public" type="checkbox" name="show_inactive" value="false">
</form>
</div>
<table class="table table-hover">
@ -54,7 +54,7 @@
{% endblock %}
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %}
</div>
<script>
var cbox = $("#public");

@ -66,6 +66,8 @@
</div>
</div>
</div>
<a href="{{ request.META.HTTP_REFERER }}">Назад</a>
<div style="height:100px"></div>
<script>
console.log("down");
$('#id_date_from').datetimepicker({

@ -1,23 +1,39 @@
{% extends 'base.html' %}
{% block body %}
<div class="box span8">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>Список проплаченых выставок</h2>
</div>
<div class="box-content">
{% block list_table %}
<a class="btn btn-success" href="{% url 'expobanner-create_paid' %}"><i class="icon-plus-sign icon-white"></i> Добавить выставку</a>
<div style="float:right;">
<form method="get" id="form">
Только опубликование<input id="public" type="checkbox" name="onlypublic" value="true">
</form>
<div class="row-fluid">
<div class="span9">
<form name="search" class="form-horizontal" method="get">
<div class="control-group">
<div>
<div class="input-append">
<input placeholder="Введите название выставки" id="id_search" size="16" type="text"
name="q">
<button class="btn" type="submit">Найти!</button>
</div>
</div>
</div>
</form>
</div>
<div class="span3">
<form method="get" id="form">
Показать неактивные <input id="public" type="checkbox" name="show_inactive" value="true">
</form>
</div>
</div>
<a class="btn btn-success" href="{% url 'expobanner-create_paid' %}"><i class="icon-plus-sign icon-white"></i> Добавить выставку</a>
<table class="table table-hover">
<thead>
<tr>
<th>Выставка</th>
<th>Кликов</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
@ -27,6 +43,7 @@
{% for item in object_list %}
<tr>
<td>{{ item }}</td>
<td>{{ item.clicks }}</td>
<td><a href="{% url 'expobanner-update_paid' item.paid_new.id %}">Изменить</a> </td>
<td>{% if item.paid_new.public %}<a href="{% url 'expobanner-paid-turn' item.paid_new.id 'off' %}">отключить</a>{% else %}<a href="{% url 'expobanner-paid-turn' item.paid_new.id 'on' %}">включить</a>{% endif %} </td>
<td><a href="{% url 'expobanner_stat_paid' item.paid_new.id %}">Статистика</a> </td>
@ -37,12 +54,12 @@
{% endblock %}
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %}
</div>
<script>
var cbox = $("#public");
var form = $("#form");
if(location.search != "")
if(location.search.indexOf('show_inactive')>0)
cbox.attr('checked', true);
cbox.click(function(){
form.submit()

@ -65,6 +65,8 @@
</div>
</div>
</div>
<a href="{{ request.META.HTTP_REFERER }}">Назад</a>
<div style="height:100px"></div>
<script>
console.log("down");
$('#id_date_from').datetimepicker({

@ -11,7 +11,7 @@
<a class="btn btn-success" href="{% url 'expobanner-create_top' %}"><i class="icon-plus-sign icon-white"></i> Добавить выставку</a>
<div style="float:right;">
<form method="get" id="form">
Только активние <input id="public" type="checkbox" name="onlypublic" value="true">
Показать неактивные <input id="public" type="checkbox" name="show_inactive" value="false">
</form>
</div>
<table class="table table-hover">
@ -35,7 +35,7 @@
{% endblock %}
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
{% include 'admin/includes/admin_pagination.html' with page_obj=page_obj %}
</div>
<script>
var cbox = $("#public");

Loading…
Cancel
Save