Jelajahi Sumber

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

Сделал шаблон для трех таблиц на странице
Denis V. Dedkov 10 tahun lalu
induk
melakukan
bef243a2bf
4 mengubah file dengan 37 tambahan dan 13 penghapusan
  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 %}