فهرست منبع

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

Сделал шаблон для трех таблиц на странице
Denis V. Dedkov 10 سال پیش
والد
کامیت
bef243a2bf
4فایلهای تغییر یافته به همراه37 افزوده شده و 13 حذف شده
  1. 21 13
      asuzr/views.py
  2. 3 0
      templates/asuzr/base.html
  3. 10 0
      templates/asuzr/table3.html
  4. 3 0
      templates/asuzr/weekend_table.html

+ 21 - 13
asuzr/views.py

@@ -42,15 +42,13 @@ def get_orders_by_date(dt):
   order_list = Order.objects.filter(date=dt).order_by('id')
   return order_list
 
-@login_required
-def visit_view(request):
-  curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y')
-  y,m = curr_date.year, curr_date.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)
+def get_attendance_table(year, month, prefix):
+  day_in_month = calendar.monthrange(year,month)[1]
+  sdate = date(year,month,1)
+  edate = date(year,month,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_sum = attend_list.aggregate(Sum('calls'), Sum('visits'))
   for attend in attend_list:
@@ -61,8 +59,6 @@ def visit_view(request):
   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
 
@@ -75,16 +71,28 @@ def visit_view(request):
     else:
       month_days[day]['designer'] = designer
 
-  table = VisitTable(month_days.values())
-  RequestConfig(request, paginate={'per_page': 32}).configure(table)
+  table = VisitTable(month_days.values(), prefix = prefix)
+  table.verbose_name = 'Сводная информация'
   table.set_summaries({
                         'calls': attend_sum['calls__sum'],
                         'visits': attend_sum['visits__sum'],
                         'orders': order_sum['product__count'],
                         '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')
-  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 
 def main(request, day, month, year):

+ 3 - 0
templates/asuzr/base.html

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

+ 10 - 0
templates/asuzr/table3.html

@@ -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 %}
+

+ 3 - 0
templates/asuzr/weekend_table.html

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