tables.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # -*- coding: utf-8 -*-
  2. from django.utils.safestring import mark_safe
  3. import django_tables2 as tables
  4. from models import *
  5. def editable(field_name):
  6. return '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
  7. class EditableColumn(tables.TemplateColumn):
  8. def __init__(self, field_name, *args, **kwargs):
  9. super(tables.TemplateColumn, self).__init__(*args, **kwargs)
  10. print kwargs
  11. template = '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
  12. self.template_code = template
  13. class ThumbnailColumn(tables.TemplateColumn):
  14. def __init__(self, field_name, *args, **kwargs):
  15. super(tables.TemplateColumn, self).__init__(*args, **kwargs)
  16. template = '{{% load thumbnail %}}\n\n{{% thumbnail record.{field} "100x100" as im %}}<img src="{{{{ im.url }}}}">{{% endthumbnail %}}'.format(field = field_name)
  17. self.template_code = template
  18. class TestTable(tables.Table):
  19. name = EditableColumn('name', "Наименование")
  20. prod_period = EditableColumn('prod_period', "Время производства")
  21. class Meta:
  22. model = Product
  23. attrs = {"class": "paleblue"}
  24. class OrdersTable(tables.Table):
  25. date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
  26. deadline = tables.DateColumn('d/m/Y/', verbose_name = 'Срок сдачи')
  27. product = tables.Column(verbose_name = 'Наименование')
  28. delivery = EditableColumn('delivery', verbose_name = 'Доставка')
  29. lifting = EditableColumn('lifting', verbose_name = 'Подъем')
  30. address = tables.Column(verbose_name = 'Адрес')
  31. price = tables.Column(verbose_name = 'Стоимость')
  32. paid = EditableColumn('paid', verbose_name = 'Оплачено')
  33. ostatok = tables.Column(verbose_name = 'Остаток')
  34. approved = EditableColumn('approved', verbose_name = 'Согласовано')
  35. sketch = tables.LinkColumn('asuzr.views.sketches', verbose_name = 'Эскизы', args=[tables.utils.A('pk')])
  36. executor = EditableColumn('executor', verbose_name = 'Исполнитель')
  37. is_done = EditableColumn('is_done', verbose_name = 'Сдан')
  38. id = tables.Column(visible = False)
  39. designer = tables.Column(visible = False)
  40. calls = tables.Column(visible = False)
  41. contact = tables.Column(visible = False)
  42. phone_num = tables.Column(visible = False)
  43. cancelled = tables.Column(visible = False)
  44. def render_price(self, value):
  45. return '%0.1f' % value
  46. def render_ostatok(self, value):
  47. return '%0.1f' % value
  48. class Meta:
  49. model = Order
  50. attrs = {'class': 'paleblue'}
  51. sequence = ('date',
  52. 'deadline',
  53. 'product',
  54. 'delivery',
  55. 'lifting',
  56. 'address',
  57. 'price',
  58. 'paid',
  59. 'ostatok',
  60. 'approved',
  61. 'sketch',
  62. 'executor',
  63. 'is_done',)
  64. class ArchiveOrdersTable(OrdersTable):
  65. calls = EditableColumn('calls', verbose_name = 'Обзвон')
  66. class Meta:
  67. attrs = {'class': 'paleblue'}
  68. class DesignerTable(tables.Table):
  69. full_name = tables.Column(empty_values=(), verbose_name = 'Дизайнер')
  70. designer__count = tables.Column(verbose_name = 'Всего заказов')
  71. price__sum = tables.Column(verbose_name = 'Общая сумма')
  72. def render_full_name(self, record):
  73. return " ".join((record['designer__first_name'], record['designer__last_name']))
  74. def render_sum_price(self, value):
  75. return '%0.1f' % value
  76. class SketchesTable(tables.Table):
  77. sketch_file = tables.FileColumn(verbose_name = 'Имя файла')
  78. sketch_image = ThumbnailColumn('sketch_file', verbose_name = 'Эскиз', orderable = False)
  79. class Meta:
  80. attrs = {'class': 'paleblue'}