tables.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. template = '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
  11. self.template_code = template
  12. class ThumbnailColumn(tables.TemplateColumn):
  13. def __init__(self, field_name, *args, **kwargs):
  14. super(tables.TemplateColumn, self).__init__(*args, **kwargs)
  15. template = '{{% load thumbnail %}}\n\n{{% thumbnail record.{field} "100x100" as im %}}<img src="{{{{ im.url }}}}">{{% endthumbnail %}}'.format(field = field_name)
  16. self.template_code = template
  17. class OrdersTable(tables.Table):
  18. date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
  19. deadline = tables.DateColumn('d/m/Y/', verbose_name = 'Срок сдачи')
  20. product = tables.Column(verbose_name = 'Наименование')
  21. delivery = EditableColumn('delivery', verbose_name = 'Доставка')
  22. lifting = EditableColumn('lifting', verbose_name = 'Подъем')
  23. address = tables.Column(verbose_name = 'Адрес')
  24. price = tables.Column(verbose_name = 'Стоимость')
  25. paid = EditableColumn('paid', verbose_name = 'Оплачено')
  26. ostatok = tables.Column(verbose_name = 'Остаток')
  27. approved = EditableColumn('approved', verbose_name = 'Согласовано')
  28. sketch = tables.LinkColumn('asuzr.views.sketches', verbose_name = 'Эскизы', args=[tables.utils.A('pk')])
  29. executor = EditableColumn('executor', verbose_name = 'Исполнитель')
  30. is_done = EditableColumn('is_done', verbose_name = 'Сдан')
  31. id = tables.Column(visible = False)
  32. designer = tables.Column(visible = False)
  33. calls = tables.Column(visible = False)
  34. contact = tables.Column(visible = False)
  35. phone_num = tables.Column(visible = False)
  36. cancelled = tables.Column(visible = False)
  37. def render_price(self, value):
  38. return '%0.1f' % value
  39. def render_ostatok(self, value):
  40. return '%0.1f' % value
  41. class Meta:
  42. model = Order
  43. attrs = {'class': 'paleblue'}
  44. sequence = ('date',
  45. 'deadline',
  46. 'product',
  47. 'delivery',
  48. 'lifting',
  49. 'address',
  50. 'price',
  51. 'paid',
  52. 'ostatok',
  53. 'approved',
  54. 'sketch',
  55. 'executor',
  56. 'is_done',)
  57. class ArchiveOrdersTable(OrdersTable):
  58. calls = EditableColumn('calls', verbose_name = 'Обзвон')
  59. class Meta:
  60. attrs = {'class': 'paleblue'}
  61. empty_text = 'Архивных заказов нет'
  62. class SketchesTable(tables.Table):
  63. sketch_file = tables.FileColumn(verbose_name = 'Имя файла')
  64. sketch_image = ThumbnailColumn('sketch_file', verbose_name = 'Эскиз', orderable = False)
  65. class Meta:
  66. attrs = {'class': 'paleblue'}