banner statistic period search

remotes/origin/1203
Ivan Kovalkovskyi 11 years ago
parent 515073c6ea
commit dde59aee55
  1. 37
      expobanner/admin.py
  2. 31
      templates/admin/expobanner/banner_stat.html
  3. 36
      templates/admin/expobanner/main_stat.html
  4. 31
      templates/admin/expobanner/paid_stat.html
  5. 6
      templates/client/blank.html
  6. 2
      templates/client/exposition/exposition_detail.html
  7. 28
      templates/client/includes/conference/default_description.html
  8. 54
      templates/client/includes/exposition/default_description.html

@ -110,6 +110,20 @@ class BannerStat(DetailView):
model = Banner model = Banner
template_name = 'admin/expobanner/banner_stat.html' template_name = 'admin/expobanner/banner_stat.html'
def get_context_data(self, **kwargs):
context = super(BannerStat, self).get_context_data(**kwargs)
obj = self.object
qs = obj.banner_stat.all()
date_from, date_to = self.request.GET.get('date_from'), self.request.GET.get('date_to')
if date_from:
date_from = datetime.strptime(date_from, "%d.%m.%Y")
qs = qs.filter(date__gt=date_from)
if date_to:
date_to = datetime.strptime(date_to, "%d.%m.%Y")
qs = qs.filter(date__lt=date_to)
context['stats'] = qs
return context
class PaidList(ListView): class PaidList(ListView):
model = Exposition model = Exposition
@ -177,9 +191,17 @@ class PaidStat(DetailView):
participation=Sum('participation_clicks'), participation=Sum('participation_clicks'),
catalog=Sum('catalog_clicks') catalog=Sum('catalog_clicks')
) )
qs = obj.paidstat_set.all()
date_from, date_to = self.request.GET.get('date_from'), self.request.GET.get('date_to')
if date_from:
date_from = datetime.strptime(date_from, "%d.%m.%Y")
qs = qs.filter(date__gt=date_from)
if date_to:
date_to = datetime.strptime(date_to, "%d.%m.%Y")
qs = qs.filter(date__lt=date_to)
context['stats'] = qs
return context return context
# ---------------------------------- # ----------------------------------
class MainList(ListView): class MainList(ListView):
model = Exposition model = Exposition
@ -222,7 +244,7 @@ def main_turn(request, pk, status):
main.save() main.save()
return HttpResponseRedirect('/admin/expobanners/main/list/') return HttpResponseRedirect('/admin/expobanners/main/list/')
from datetime import datetime
class MainStat(DetailView): class MainStat(DetailView):
model = MainPage model = MainPage
@ -231,13 +253,22 @@ class MainStat(DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(MainStat, self).get_context_data(**kwargs) context = super(MainStat, self).get_context_data(**kwargs)
obj = self.object obj = self.object
context['stats'] = obj.link.banner_stat.all()
context['all'] = obj.link.banner_stat.aggregate( context['all'] = obj.link.banner_stat.aggregate(
views=Sum('view'), views=Sum('view'),
clicks=Sum('click'), clicks=Sum('click'),
unique_clicks=Sum('unique_click'), unique_clicks=Sum('unique_click'),
unique_views=Sum('unique_view') unique_views=Sum('unique_view')
) )
qs = obj.link.banner_stat.all()
date_from, date_to = self.request.GET.get('date_from'), self.request.GET.get('date_to')
if date_from:
date_from = datetime.strptime(date_from, "%d.%m.%Y")
qs = qs.filter(date__gt=date_from)
if date_to:
date_to = datetime.strptime(date_to, "%d.%m.%Y")
qs = qs.filter(date__lt=date_to)
context['stats'] = qs
return context return context
# ------------------------------------ # ------------------------------------

@ -1,5 +1,6 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load static %} {% load static %}
{% load i18n %}
{% block scripts %} {% block scripts %}
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> <script src="{% static 'js/jquery.dataTables.min.js' %}"></script>
{% endblock %} {% endblock %}
@ -12,6 +13,20 @@
<h2><i class="icon-align-justify"></i> {{ object }} (Пароль: {{ object.stat_pswd }})</h2> <h2><i class="icon-align-justify"></i> {{ object }} (Пароль: {{ object.stat_pswd }})</h2>
</div> </div>
<div class="box-content"> <div class="box-content">
<!-- date filter -->
<div class="row-fluid">
<form class = "form-inline" method="get" >
<div class="form-group ">
<label class="control-label" for="id_date_from"> {% trans "с: " %}</label>
<input class="form-control" type="text" name="date_from" id="id_date_from">
<label for="id_date_to" >{% trans "по: " %}</label>
<input class="form-control" type="text" name="date_to" id="id_date_to" >
<button class="btn btn-primary" type="submit" >{% trans "Фильтровать" %}</button>
</div>
</form>
</div>
<!-- end date filter -->
<table class="table table-striped table-bordered bootstrap-datatable datatable"> <table class="table table-striped table-bordered bootstrap-datatable datatable">
<thead> <thead>
<tr> <tr>
@ -23,7 +38,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% with stats=object.banner_stat.all %} {% with stats=stats %}
{% for stat in stats %} {% for stat in stats %}
<tr> <tr>
<td>{{ stat.date|date:"Y-m-d" }}</td> <td>{{ stat.date|date:"Y-m-d" }}</td>
@ -39,5 +54,19 @@
</div> </div>
</div> </div>
</div> </div>
<script>
console.log("down");
$('#id_date_from').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_date_to').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
console.log("1");
</script>
{% endblock %} {% endblock %}

@ -1,7 +1,14 @@
{% extends 'admin/base.html' %} {% extends 'admin/base.html' %}
{% load static %} {% load static %}
{% load i18n %}
{% block scripts %} {% block scripts %}
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> {# datetimepicker #}
<script type="text/javascript">
console.log("2");
</script>
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script>
{% endblock %} {% endblock %}
@ -16,6 +23,19 @@
<div class="span8">Линк на статистику: <b>{{ request.get_host }}/expo-b/banner/{{ object.link.id }}/stat/</b></div> <div class="span8">Линк на статистику: <b>{{ request.get_host }}/expo-b/banner/{{ object.link.id }}/stat/</b></div>
<div class="span4">Пароль: <b>{{ object.link.stat_pswd }}</b></div> <div class="span4">Пароль: <b>{{ object.link.stat_pswd }}</b></div>
</div> </div>
<!-- date filter -->
<div class="row-fluid">
<form class = "form-inline" method="get" >
<div class="form-group ">
<label class="control-label" for="id_date_from"> {% trans "с: " %}</label>
<input class="form-control" type="text" name="date_from" id="id_date_from">
<label for="id_date_to" >{% trans "по: " %}</label>
<input class="form-control" type="text" name="date_to" id="id_date_to" >
<button class="btn btn-primary" type="submit" >{% trans "Фильтровать" %}</button>
</div>
</form>
</div>
<!-- end date filter -->
<table class="table table-striped table-bordered bootstrap-datatable datatable"> <table class="table table-striped table-bordered bootstrap-datatable datatable">
<thead> <thead>
<tr> <tr>
@ -52,5 +72,19 @@
</div> </div>
</div> </div>
</div> </div>
<script>
console.log("down");
$('#id_date_from').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_date_to').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
console.log("1");
</script>
{% endblock %} {% endblock %}

@ -1,4 +1,5 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load i18n %}
{% load static %} {% load static %}
{% block scripts %} {% block scripts %}
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> <script src="{% static 'js/jquery.dataTables.min.js' %}"></script>
@ -16,6 +17,20 @@
<div class="span8">Линк на статистику: <b>{{ request.get_host }}/expo-b/paid/{{ object.id }}/stat/</b></div> <div class="span8">Линк на статистику: <b>{{ request.get_host }}/expo-b/paid/{{ object.id }}/stat/</b></div>
<div class="span4">Пароль: <b>{{ object.stat_pswd }}</b></div> <div class="span4">Пароль: <b>{{ object.stat_pswd }}</b></div>
</div> </div>
<!-- date filter -->
<div class="row-fluid">
<form class = "form-inline" method="get" >
<div class="form-group ">
<label class="control-label" for="id_date_from"> {% trans "с: " %}</label>
<input class="form-control" type="text" name="date_from" id="id_date_from">
<label for="id_date_to" >{% trans "по: " %}</label>
<input class="form-control" type="text" name="date_to" id="id_date_to" >
<button class="btn btn-primary" type="submit" >{% trans "Фильтровать" %}</button>
</div>
</form>
</div>
<!-- end date filter -->
<table class="table table-striped table-bordered bootstrap-datatable datatable"> <table class="table table-striped table-bordered bootstrap-datatable datatable">
<thead> <thead>
<tr> <tr>
@ -34,7 +49,7 @@
<td>{{ all.participation}}</td> <td>{{ all.participation}}</td>
<td>{{ all.catalog }}</td> <td>{{ all.catalog }}</td>
</tr> </tr>
{% with stats=object.paidstat_set.all %} {% with stats=stats %}
{% for stat in stats %} {% for stat in stats %}
<tr> <tr>
<td>{{ stat.date|date:"Y-m-d" }}</td> <td>{{ stat.date|date:"Y-m-d" }}</td>
@ -50,5 +65,19 @@
</div> </div>
</div> </div>
</div> </div>
<script>
console.log("down");
$('#id_date_from').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
$('#id_date_to').datetimepicker({
todayHighlight: true,
format : 'dd.mm.yyyy',
minView:2
});
console.log("1");
</script>
{% endblock %} {% endblock %}

@ -89,7 +89,11 @@ This template include basic anf main styles and js files,
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P5C6GR');</script> })(window,document,'script','dataLayer','GTM-P5C6GR');</script>
<!-- End Google Tag Manager --> <!-- End Google Tag Manager -->
<style>
.text-indent-1-5em {
text-indent: 1.5em
}
</style>
</head> </head>

@ -1,4 +1,4 @@
{% extends 'base_catalog.html' %} {% extends 'client/base_catalog.html' %}
{% load i18n %} {% load i18n %}
{% load template_filters %} {% load template_filters %}

@ -1,21 +1,21 @@
{% load i18n %}
<div class="ied-text"> <div class="ied-text">
Конференция {{conf.name}} проходит {% include 'client/includes/show_date_block.html' with obj=conf %} в городе {{conf.city.name}}, {{conf.country.name}}. {% blocktrans with name=conf.name%}
<p class="text-indent-1-5em">Конференция {{name}} проходит {% endblocktrans %}{% include 'client/includes/show_date_block.html' with obj=conf %}
{% blocktrans with city=conf.name country=country.name name=conf.name id=conf.city.id code=request.LANGUAGE_CODE date1=conf.data_begin|date:'j' date2=conf.data_begin|date:'Y' date3=conf.data_begin|date:'n' date4=conf.data_end|date:'j' date5=conf.data_end|date:'Y' date6=conf.data_end|date:'n' %}
в городе {{city}}, {{country}}.
Посмотреть, как проехать в место проведения конференции, можно на сайте конгрессной площадки. Посмотреть, как проехать в место проведения конференции, можно на сайте конгрессной площадки.
Деловая программа {{conf.name}} разбита на секции по дням и размещается на сайте мероприятия с подробным списком Деловая программа {{name}} разбита на секции по дням и размещается на сайте мероприятия с подробным списком
докладчиков конференции. Спикеров конференции {{conf.name}} обычно окончательно утверждают за 1-2 месяца до начала конференции. докладчиков конференции. Спикеров конференции {{name}} обычно окончательно утверждают за 1-2 месяца до начала конференции.</p>
<br/> <h3>Ваши деловые контакты на {{name}} </h3>
<p><b>Ваши деловые контакты на {{conf.name}} </b></p> <p class="text-indent-1-5em">Добавьте конференцию {{name}} в расписание, чтобы не потерять важное событие,
<br/>
Добавьте конференцию {{conf.name}} в расписание, чтобы не потерять важное событие,
где встречаются профессионалы нужной Вам отрасли. Создавайте свой календарь мероприятий, просто нажав кнопку где встречаются профессионалы нужной Вам отрасли. Создавайте свой календарь мероприятий, просто нажав кнопку
"Добавить в календарь". "Добавить в календарь".</p>
<br/> <h3>Планируете самостоятельную поездку на {{name}} ? </h3>
<p><b>Планируете самостоятельную поездку на {{conf.name}} ? </b></p> <p class="text-indent-1-5em">Если Вам требуется размещение, мы рекомендуем посмотреть отели и цены в период проведения конференции <a href="http://www.booking.com/searchresults.html?aid=333667&city={{ id }}&do_availability_check=on&label=conf_search&lang={{ code }}&checkin_monthday={{ date1 }}&checkin_year_month={{ date2 }}-{{ date3 }}&checkout_monthday={{ date4 }}&checkout_year_month={{ date5 }}-{{ date6 }}">здесь</a>.
<br/>
Если Вам требуется размещение, мы рекомендуем посмотреть отели и цены в период проведения конференции <a href="http://www.booking.com/searchresults.html?aid=333667&city={{ conf.city.id }}&do_availability_check=on&label=conf_search&lang={{ request.LANGUAGE_CODE }}&checkin_monthday={{ conf.data_begin|date:'j' }}&checkin_year_month={{ conf.data_begin|date:'Y' }}-{{ conf.data_begin|date:'n' }}&checkout_monthday={{ conf.data_end|date:'j' }}&checkout_year_month={{ conf.data_end|date:'Y' }}-{{ conf.data_end|date:'n' }}">здесь</a>.
Не забудьте проверить место и даты конференции на официальном сайте и в календаре организатора. Событие могут перенести, Не забудьте проверить место и даты конференции на официальном сайте и в календаре организатора. Событие могут перенести,
отменить, объединить с проектом схожей тематики. Expomap не несет ответственности за неточности отменить, объединить с проектом схожей тематики. Expomap не несет ответственности за неточности
предоставляемой информации. предоставляемой информации.
Есть вопрос по участию в {{conf.name}} ? Ответим по тел. <b>+7 (499) 999-12-07</b> Есть вопрос по участию в {{name}} ? Ответим по тел. <b>+7 (499) 999-12-07</b></p>
{% endblocktrans %}
</div> </div>

@ -1,24 +1,34 @@
{% load i18n %}
<div class="ied-text"> <div class="ied-text">
Выставка {{expo.name}} проводится {% include 'client/includes/show_date_block.html' with obj=expo %} в городе {{expo.city.name}}, {{expo.country.name}}. {% blocktrans with name=expo.name %}
Экспонируемые продукты и разделы выставки Вы можете посмотреть ниже, в блоке <a href="#additional">«Дополнительная информация».</a> <p class="text-indent-1-5em">Выставка {{ name }} проводится{% endblocktrans %}
Полный список участников {{expo.name}} размещается на официальном сайте выставки и постоянно обновляется. {% include 'client/includes/show_date_block.html' with obj=expo %}
Там же Вы сможете найти экспонентов предыдущего года. Деловая программа {{expo.name}} обычно публикуется ближе к {% blocktrans with city=expo.city.name country=expo.country.name %} в городе {{ city }}, {{ country }}
началу события. .{% endblocktrans %}
<br/> {% blocktrans with name=expo.name id=expo.city.id code=request.LANGUAGE_CODE date1=expo.data_begin|date:'j' date2=expo.data_begin|date:'Y' date3=expo.data_begin|date:'n' date4=expo.data_end|date:'j' date5=expo.data_end|date:'Y' date6=expo.data_end|date:'n' %}
<p><b>Ваш личный календарь</b></p> Экспонируемые продукты и разделы выставки Вы можете посмотреть ниже, в блоке
<br/> <a href="#additional">«Дополнительная информация».</a>
Добавьте выставку {{expo.name}} в расписание, чтобы не потерять важное событие. Создавайте свой календарь мероприятий, Полный список участников {{ name }} размещается на официальном сайте выставки и постоянно обновляется.
просто нажав кнопку Добавить в календарь. Там же Вы сможете найти экспонентов предыдущего года. Деловая программа {{ name }} обычно публикуется ближе к
<br/> началу события.</p>
<p> <b>Планируете самостоятельную поездку на {{expo.name}}?</b></p>
<br/> <h3>Ваш личный календарь</h3>
Мы рекомендуем посмотреть отели и цены в период проведения выставки <a href="http://www.booking.com/searchresults.html?aid=333667&city={{ expo.city.id }}&do_availability_check=on&label=expo_search&lang={{ request.LANGUAGE_CODE }}&checkin_monthday={{ expo.data_begin|date:'j' }}&checkin_year_month={{ expo.data_begin|date:'Y' }}-{{ expo.data_begin|date:'n' }}&checkout_monthday={{ expo.data_end|date:'j' }}&checkout_year_month={{ expo.data_end|date:'Y' }}-{{ expo.data_end|date:'n' }}">здесь</a> . <p class="text-indent-1-5em">Добавьте выставку {{ name }} в <a href="/profile/calendar/">календарь</a>, чтобы не
{% if expo.place %} потерять важное событие. Создавайте свой календарь мероприятий,
Как добраться до выставочного центра {{expo.place.name}} можно посмотреть просто нажав кнопку Добавить в календарь.</p>
<a href="/places/{{expo.place.url}}">здесь</a>.
{% endif %} <h3>Планируете самостоятельную поездку на {{ name }}?</h3>
Не забудьте проверить место и даты выставки на официальном сайте и в календаре выставочного комплекса. <p class="text-indent-1-5em">Мы рекомендуем посмотреть отели и цены в период проведения выставки
Событие могут перенести, отменить, объединить с проектом схожей тематики. <a href="http://www.booking.com/searchresults.html?aid=333667&city={{ id }}&do_availability_check=on&label=expo_search&lang={{ code }}&checkin_monthday={{ date1 }}&checkin_year_month={{ date2 }}-{{ date3 }}&checkout_monthday={{ date4 }}&checkout_year_month={{ date5 }}-{{ date6 }}">здесь</a>.
Expomap не несет ответственности за неточности предоставляемой информации. {% endblocktrans %}{% if expo.place %}
Есть вопрос о посещении или участии в {{ expo.name }}? Ответим по тел. <b>+7 (499) 999-12-07</b> {% blocktrans with name=expo.place.name url=expo.place.url %}Как добраться до выставочного центра {{ name }} можно
посмотреть
<a href="/places/{{ url }}">здесь</a>.{% endblocktrans %}
{% endif %}
{% blocktrans with name=expo.name %}
Не забудьте проверить место и даты выставки на официальном сайте и в календаре выставочного комплекса.
Событие могут перенести, отменить, объединить с проектом схожей тематики.
Expomap не несет ответственности за неточности предоставляемой информации.
Есть вопрос о посещении или участии в {{ name }}? Ответим по тел. <b>+7 (499) 999-12-07</b></p>
{% endblocktrans %}
</div> </div>
Loading…
Cancel
Save