Files
record/asuzr/tables.py
Denis V. Dedkov 3c6111e735 Подкраска ячеек в таблице посещений
Сделал подкраску ячеек в таблице посещений
Заодним немного облагородил общий вид страницы
2015-06-14 20:10:14 +05:00

136 lines
5.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
from django.utils.html import escape
import django_tables2 as tables
from models import *
class EditableColumn(tables.TemplateColumn):
def __init__(self, field_name, object_name = '', *args, **kwargs):
super(tables.TemplateColumn, self).__init__(*args, **kwargs)
template = '''
{{{{% load inplace_edit %}}}}
{main_part}
'''
main_part = ''
if object_name == '':
main_part = '''
{{% inplace_edit "record.{field}" auto_height = 1 %}}
'''
else:
main_part = '''
{{% if record.{object_name} %}}
{{% inplace_edit "record.{object_name}.{field}" auto_height = 1 %}}
{{% endif %}}
'''
template = template.format(main_part = main_part)
self.template_code = template.format(field = field_name, object_name = object_name)
class ThumbnailColumn(tables.TemplateColumn):
def __init__(self, field_name, *args, **kwargs):
super(tables.TemplateColumn, self).__init__(*args, **kwargs)
template = '''
{{% load thumbnail %}}
{{% thumbnail record.{field} "100x100" as im %}}
<img src="{{{{ im.url }}}}">
{{% endthumbnail %}}
'''.format(field = field_name)
self.template_code = template
class OrdersTable(tables.Table):
date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
deadline = tables.DateColumn('d/m/Y/', verbose_name = 'Срок сдачи')
product = tables.Column(verbose_name = 'Наименование')
delivery = EditableColumn('delivery', verbose_name = 'Доставка')
lifting = EditableColumn('lifting', verbose_name = 'Подъем')
address = tables.Column(verbose_name = 'Адрес')
price = tables.Column(verbose_name = 'Стоимость')
paid = EditableColumn('paid', verbose_name = 'Оплачено')
ostatok = tables.Column(verbose_name = 'Остаток')
approved = EditableColumn('approved', verbose_name = 'Согласовано')
sketch = tables.LinkColumn('asuzr.views.sketches', verbose_name = 'Эскизы', args=[tables.utils.A('pk')])
executor = EditableColumn('executor', verbose_name = 'Исполнитель')
is_done = EditableColumn('is_done', verbose_name = 'Сдан')
id = tables.Column(visible = False)
designer = tables.Column(visible = False)
calls = tables.Column(visible = False)
contact = tables.Column(visible = False)
phone_num = tables.Column(visible = False)
cancelled = tables.Column(visible = False)
def render_price(self, value):
return '%0.1f' % value
def render_ostatok(self, value):
return '%0.1f' % value
class Meta:
model = Order
attrs = {'class': 'paleblue'}
sequence = ('date',
'deadline',
'product',
'delivery',
'lifting',
'address',
'price',
'paid',
'ostatok',
'approved',
'sketch',
'executor',
'is_done',)
class ArchiveOrdersTable(OrdersTable):
calls = EditableColumn('calls', verbose_name = 'Обзвон')
class Meta:
attrs = {'class': 'paleblue'}
empty_text = 'Архивных заказов нет'
class DesignerTable(tables.Table):
full_name = tables.Column(empty_values=(), verbose_name = 'Дизайнер')
designer__count = tables.Column(verbose_name = 'Всего заказов')
price__sum = tables.Column(verbose_name = 'Общая сумма')
def render_full_name(self, record):
return " ".join((record['designer__first_name'], record['designer__last_name']))
def render_sum_price(self, value):
return '%0.1f' % value
class Meta:
attrs = {'class': 'paleblue'}
class SketchesTable(tables.Table):
sketch_file = tables.FileColumn(verbose_name = 'Имя файла')
sketch_image = ThumbnailColumn('sketch_file', verbose_name = 'Эскиз', orderable = False)
class Meta:
attrs = {'class': 'paleblue'}
class VisitTable(tables.Table):
date = tables.Column(verbose_name = 'Дата')
week_day = tables.Column(verbose_name = 'День недели', accessor = 'date.weekday_name')
calls = EditableColumn('calls', 'attend' ,verbose_name = 'Звонки', accessor = 'attend.calls')
visits = EditableColumn('visits','attend', verbose_name = 'Посещения', accessor = 'attend.visits')
orders = tables.Column(verbose_name = 'Заказы', accessor = 'order.product__count')
cost = tables.Column(verbose_name = 'Стоимость', accessor = 'order.price__sum')
designer = tables.Column(verbose_name = 'Дизайнеры')
def render_orders(self, value, record, column):
value = 0 if value == None else value
return mark_safe('<a href="%s?date=%s">%s</a>' % (
reverse('asuzr.views.visit_view'),
record['date'].strftime('%d.%m.%Y'),
escape(value),
))
class Meta:
attrs = {'class': 'paleblue'}
template = 'asuzr/table_templ.html'