Исправлены конфликты

This commit is contained in:
Anastasia
2015-06-16 18:33:18 +05:00
5 changed files with 104 additions and 8 deletions

View File

@@ -16,4 +16,8 @@ class custom_date(date):
@property @property
def date_dd_mm_yy(self): def date_dd_mm_yy(self):
return self.strftime("%d/%m/%Y") return self.strftime("%d/%m/%Y")
@property
def is_weekend(self):
return self.weekday() >= 5

View File

@@ -124,8 +124,17 @@ class VisitTable(tables.Table):
orders = tables.Column(verbose_name = 'Заказы', accessor = 'order.product__count') orders = tables.Column(verbose_name = 'Заказы', accessor = 'order.product__count')
cost = tables.Column(verbose_name = 'Стоимость', accessor = 'order.price__sum') cost = tables.Column(verbose_name = 'Стоимость', accessor = 'order.price__sum')
designer = tables.Column(verbose_name = 'Дизайнеры') designer = tables.Column(verbose_name = 'Дизайнеры')
summary = ['Итого:','',0,0,0,0,'']
def render_orders(self, value, record): 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('<a href="%s?date=%s">%s</a>' % ( return mark_safe('<a href="%s?date=%s">%s</a>' % (
reverse('asuzr.views.visit_view'), reverse('asuzr.views.visit_view'),
record['date'].strftime('%d.%m.%Y'), record['date'].strftime('%d.%m.%Y'),
@@ -134,6 +143,8 @@ class VisitTable(tables.Table):
class Meta: class Meta:
attrs = {'class': 'paleblue'} attrs = {'class': 'paleblue'}
orderable = False
template = 'asuzr/weekend_table.html'
class ProdPlanTable(tables.Table): class ProdPlanTable(tables.Table):
date = tables.Column(verbose_name = 'Дата') date = tables.Column(verbose_name = 'Дата')

View File

@@ -53,13 +53,17 @@ def visit_view(request):
edate = date(y,m,day_in_month) edate = date(y,m,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'))
for attend in attend_list: for attend in attend_list:
month_days[attend.date.day]['attend'] = attend month_days[attend.date.day]['attend'] = attend
order_list = Order.objects.filter(date__range = (sdate,edate)) 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.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
@@ -71,9 +75,15 @@ def visit_view(request):
month_days[day]['designer'] = '%s, %s' % (month_days[day]['designer'], designer) month_days[day]['designer'] = '%s, %s' % (month_days[day]['designer'], designer)
else: else:
month_days[day]['designer'] = designer month_days[day]['designer'] = designer
table = VisitTable(month_days.values()) table = VisitTable(month_days.values())
RequestConfig(request, paginate={'per_page': 32}).configure(table) 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') title = 'Таблица посещаемости на %s г.' % curr_date.strftime('%B %Y')
return render(request, 'asuzr/table.html', {'table': table, 'title': title}) return render(request, 'asuzr/table.html', {'table': table, 'title': title})

View File

@@ -7,6 +7,7 @@
<script src="{{ STATIC_URL }}admin/js/jquery.min.js" type="text/javascript"></script> <script src="{{ STATIC_URL }}admin/js/jquery.min.js" type="text/javascript"></script>
{% inplace_static %} {% inplace_static %}
<link rel="stylesheet" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" /> <link rel="stylesheet" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" />
<link rel="stylesheet" href="{{ STATIC_URL }}admin/css/base.css" />
<style> <style>
#menu { #menu {
margin: 0; /* Обнуляем значение отступов */ margin: 0; /* Обнуляем значение отступов */
@@ -16,6 +17,7 @@
display: inline; /* Отображать как строчный элемент */ display: inline; /* Отображать как строчный элемент */
margin-right: 5px; /* Отступ слева */ margin-right: 5px; /* Отступ слева */
border: 1px solid #000; /* Рамка вокруг текста */ border: 1px solid #000; /* Рамка вокруг текста */
border-radius: 4px;
padding: 3px; /* Поля вокруг текста */ padding: 3px; /* Поля вокруг текста */
} }
#user { #user {
@@ -25,9 +27,13 @@
#menu, #user { #menu, #user {
display: inline; display: inline;
} }
table.paleblue tr.weekend {
background-color: #FFE4E1
}
</style> </style>
</head> </head>
<body> <body>
<div class="breadcrumbs">
{% block menu %} {% block menu %}
<ul id="menu" class="hr"> <ul id="menu" class="hr">
<li><a href={% url 'asuzr-main' %}>Таблица посещаемости</a></li> <li><a href={% url 'asuzr-main' %}>Таблица посещаемости</a></li>
@@ -38,17 +44,22 @@
{% if request.user.is_staff %}<li><a href={% url 'admin:index' %}>Администрирование</a></li>{% endif %} {% if request.user.is_staff %}<li><a href={% url 'admin:index' %}>Администрирование</a></li>{% endif %}
</ul> </ul>
<div id="user"> <div id="user">
{% if request.user.is_authenticated %} Добро пожаловать, {{ request.user.first_name }} {% if request.user.is_authenticated %}
{% else %}<a href="{% url 'django.contrib.auth.views.login' %}">Вход</a>{% endif %} Добро пожаловать, {{ request.user.first_name }}
<br><a href="{% url 'django.contrib.auth.views.logout' %}">Выход</a> (<a href="{% url 'django.contrib.auth.views.logout' %}">Выход</a>)
{% else %}
(<a href="{% url 'django.contrib.auth.views.login' %}">Вход</a>){% endif %}
</div>
</div> </div>
{% endblock %} {% endblock %}
<div id='content'>
<H1>{% block title %}{{ title }}{% endblock %}</H1> <H1>{% block title %}{{ title }}{% endblock %}</H1>
{% block page %} {% block page %}
Тело страницы Тело страницы
{% endblock %} {% endblock %}
</div>
{% block footer %} {% block footer %}
<hr> <hr>
{% endblock %} {% endblock %}

View File

@@ -0,0 +1,60 @@
{% spaceless %}
{% load django_tables2 %}
{% load i18n %}
{% if table.page %}
<div class="table-container">
{% endif %}
{% block table %}
<table{% if table.attrs %} {{ table.attrs.as_html }}{% endif %}>
{% nospaceless %}
{% block table.thead %}
<thead>
<tr>
{% for column in table.columns %}
{% if column.orderable %}
<th {{ column.attrs.th.as_html }}><a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}">{{ column.header }}</a></th>
{% else %}
<th {{ column.attrs.th.as_html }}>{{ column.header }}</th>
{% endif %}
{% endfor %}
</tr>
</thead>
{% endblock table.thead %}
{% block table.tbody %}
<tbody>
{% for row in table.page.object_list|default:table.rows %} {# support pagination #}
{% block table.tbody.row %}
<tr class="
{% if row.date.is_weekend %}weekend{% else %}
{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}{% endif %}
"> {# avoid cycle for Django 1.2-1.6 compatibility #}
{% for column, cell in row.items %}
<td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
</tbody>
{% endblock table.tbody %}
{% block table.tfoot %}
<tfoot>
{% if table.summary %}
<tr>
{% for summary in table.summary %}
<td> {{ summary }} </td>
{% endfor %}
</tr>
{% endif %}
</tfoot>
{% endblock table.tfoot %}
{% endnospaceless %}
</table>
{% endblock table %}
{% endspaceless %}