| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- # -*- 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/weekend_table.html'
|