From 6cc7e8884481a54d7e8d1a84da76a0cab3a5d08d Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Sun, 14 Jun 2015 21:49:27 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=82=D0=BE=D0=B3=D0=B8=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен вывод итогов для таблицы посещений --- asuzr/tables.py | 8 ++++++ asuzr/views.py | 12 +++++++-- templates/asuzr/weekend_table.html | 43 +++++++++--------------------- 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/asuzr/tables.py b/asuzr/tables.py index cad42c0..e46bf4c 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -121,7 +121,15 @@ class VisitTable(tables.Table): orders = tables.Column(verbose_name = 'Заказы', accessor = 'order.product__count') cost = tables.Column(verbose_name = 'Стоимость', accessor = 'order.price__sum') designer = tables.Column(verbose_name = 'Дизайнеры') + + summary = ['Всего','',0,0,0,0,''] + def set_summaries(self, summaries): + indexes = {'calls': 2, 'visits': 3, 'orders': 4, 'cost': 5} + for s in summaries: + idx = indexes[s] + self.summary[idx] = summaries[s] + def render_orders(self, value, record, column): value = 0 if value == None else value return mark_safe('%s' % ( diff --git a/asuzr/views.py b/asuzr/views.py index 58d6aea..162497f 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -52,13 +52,17 @@ def visit_view(request): edate = date(y,m,day_in_month) attend_list = Attendance.objects.filter(date__range = (sdate,edate)) + attend_sum = attend_list.aggregate(Sum('calls'), Sum('visits')) for attend in attend_list: month_days[attend.date.day]['attend'] = attend order_list = Order.objects.filter(date__range = (sdate,edate)) + order_sum = order_list.aggregate(Count('product'), Sum('price')) order_list = order_list.values('date') order_list = order_list.annotate(Count('product'), Sum('price')) + print order_sum + for order in order_list: month_days[order['date'].day]['order'] = order @@ -71,10 +75,14 @@ def visit_view(request): else: month_days[day]['designer'] = designer - print month_days - table = VisitTable(month_days.values()) RequestConfig(request, paginate={'per_page': 32}).configure(table) + table.set_summaries({ + 'calls': attend_sum['calls__sum'], + 'visits': attend_sum['visits__sum'], + 'orders': order_sum['product__count'], + 'cost': order_sum['price__sum'], + }) title = 'Таблица посещаемости на %s г.' % curr_date.strftime('%B %Y') return render(request, 'asuzr/table.html', {'table': table, 'title': title}) diff --git a/templates/asuzr/weekend_table.html b/templates/asuzr/weekend_table.html index e3d4c5d..0b167f9 100644 --- a/templates/asuzr/weekend_table.html +++ b/templates/asuzr/weekend_table.html @@ -24,11 +24,10 @@ {% for row in table.page.object_list|default:table.rows %} {# support pagination #} {% block table.tbody.row %} - {% if row.date.is_weekend %} - {# avoid cycle for Django 1.2-1.6 compatibility #} - {% else %} - {# avoid cycle for Django 1.2-1.6 compatibility #} - {% endif %} + {# avoid cycle for Django 1.2-1.6 compatibility #} {% for column, cell in row.items %} {% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %} {% endfor %} @@ -44,34 +43,18 @@ {% endblock table.tbody %} {% block table.tfoot %} - + + {% if table.summary %} + + {% for summary in table.summary %} + {{ summary }} + {% endfor %} + + {% endif %} + {% endblock table.tfoot %} {% endnospaceless %} {% endblock table %} -{% if table.page %} -{% with table.page.paginator.count as total %} -{% with table.page.object_list|length as count %} -{% block pagination %} - -{% endblock pagination %} -{% endwith %} -{% endwith %} - -{% endif %} {% endspaceless %}