Шаблон для трех таблиц на странице

Сделал шаблон для трех таблиц на странице
This commit is contained in:
2015-06-16 20:29:07 +05:00
parent a05ecadf01
commit bef243a2bf
4 changed files with 37 additions and 13 deletions

View File

@@ -42,15 +42,13 @@ def get_orders_by_date(dt):
order_list = Order.objects.filter(date=dt).order_by('id') order_list = Order.objects.filter(date=dt).order_by('id')
return order_list return order_list
@login_required def get_attendance_table(year, month, prefix):
def visit_view(request): day_in_month = calendar.monthrange(year,month)[1]
curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y') sdate = date(year,month,1)
y,m = curr_date.year, curr_date.month edate = date(year,month,day_in_month)
day_in_month = calendar.monthrange(y,m)[1]
month_days = {i+1: {'date': custom_date(y,m,i+1)} for i in range(day_in_month)}
sdate = date(y,m,1)
edate = date(y,m,day_in_month)
month_days = {i+1: {'date': custom_date(year,month,i+1)} for i in range(day_in_month)}
attend_list = Attendance.objects.filter(date__range = (sdate,edate)) attend_list = Attendance.objects.filter(date__range = (sdate,edate))
attend_sum = attend_list.aggregate(Sum('calls'), Sum('visits')) attend_sum = attend_list.aggregate(Sum('calls'), Sum('visits'))
for attend in attend_list: for attend in attend_list:
@@ -61,8 +59,6 @@ def visit_view(request):
order_list = order_list.values('date') order_list = order_list.values('date')
order_list = order_list.annotate(Count('product'), Sum('price')) order_list = order_list.annotate(Count('product'), Sum('price'))
print order_sum
for order in order_list: for order in order_list:
month_days[order['date'].day]['order'] = order month_days[order['date'].day]['order'] = order
@@ -75,16 +71,28 @@ def visit_view(request):
else: else:
month_days[day]['designer'] = designer month_days[day]['designer'] = designer
table = VisitTable(month_days.values()) table = VisitTable(month_days.values(), prefix = prefix)
RequestConfig(request, paginate={'per_page': 32}).configure(table) table.verbose_name = 'Сводная информация'
table.set_summaries({ table.set_summaries({
'calls': attend_sum['calls__sum'], 'calls': attend_sum['calls__sum'],
'visits': attend_sum['visits__sum'], 'visits': attend_sum['visits__sum'],
'orders': order_sum['product__count'], 'orders': order_sum['product__count'],
'cost': order_sum['price__sum'], 'cost': order_sum['price__sum'],
}) })
return table
@login_required
def visit_view(request):
curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y')
attendance_table = get_attendance_table(curr_date.year, curr_date.month, 'attendance-')
RequestConfig(request, paginate={'per_page': 32}).configure(attendance_table)
title = 'Таблица посещаемости на %s г.' % curr_date.strftime('%B %Y') title = 'Таблица посещаемости на %s г.' % curr_date.strftime('%B %Y')
return render(request, 'asuzr/table.html', {'table': table, 'title': title}) return render(request, 'asuzr/table3.html', {
'table1': attendance_table,
'table2': attendance_table,
'table3': attendance_table,
'title': title})
@login_required @login_required
def main(request, day, month, year): def main(request, day, month, year):

View File

@@ -29,6 +29,9 @@
table.paleblue tr.weekend { table.paleblue tr.weekend {
background-color: #FFE4E1 background-color: #FFE4E1
} }
.inline {
display: inline-block;
}
</style> </style>
</head> </head>
<body> <body>

View File

@@ -0,0 +1,10 @@
{% extends "asuzr/base.html" %}
{% load inplace_edit %}
{% load render_table from django_tables2 %}
{% block page %}
<div class="inline"><div><h3>{{ table1.verbose_name }}</h3></div>{% render_table table1 %}</div>
<div class="inline"><div><h3>{{ table2.verbose_name }}</h3></div>{% render_table table2 %}</div>
<div><hr><div><h3>{{ table3.verbose_name }}</h3></div>{% render_table table3 %}</div>
{% endblock %}

View File

@@ -56,5 +56,8 @@
{% endnospaceless %} {% endnospaceless %}
</table> </table>
{% endblock table %} {% endblock table %}
{% if table.page %}
</div>
{% endif %}
{% endspaceless %} {% endspaceless %}