tables.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 TestTable(tables.Table):
  13. name = EditableColumn('name', "Наименование")
  14. prod_period = EditableColumn('prod_period', "Время производства")
  15. class Meta:
  16. model = Product
  17. attrs = {"class": "paleblue"}
  18. class OrdersTable(tables.Table):
  19. date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
  20. deadline = tables.DateColumn('d/m/Y/', verbose_name = 'Срок сдачи')
  21. product = tables.Column(verbose_name = 'Наименование')
  22. delivery = EditableColumn('delivery', verbose_name = 'Доставка')
  23. lifting = EditableColumn('lifting', verbose_name = 'Подъем')
  24. address = tables.Column(verbose_name = 'Адрес')
  25. price = tables.Column(verbose_name = 'Стоимость')
  26. paid = EditableColumn('paid', verbose_name = 'Оплачено')
  27. ostatok = tables.Column(verbose_name = 'Остаток')
  28. approved = EditableColumn('approved', verbose_name = 'Согласовано')
  29. sketch = tables.LinkColumn('sketches', verbose_name = 'Эскиз')
  30. executor = EditableColumn('executor', verbose_name = 'Исполнитель')
  31. is_done = EditableColumn('is_done', verbose_name = 'Сдан')
  32. id = tables.Column(visible = False)
  33. designer = tables.Column(visible = False)
  34. calls = tables.Column(visible = False)
  35. contact = tables.Column(visible = False)
  36. phone_num = tables.Column(visible = False)
  37. cancelled = tables.Column(visible = False)
  38. def render_price(self, value):
  39. return '%0.1f' % value
  40. def render_ostatok(self, value):
  41. return '%0.1f' % value
  42. class Meta:
  43. model = Order
  44. attrs = {'class': 'paleblue'}
  45. sequence = ('date',
  46. 'deadline',
  47. 'product',
  48. 'delivery',
  49. 'lifting',
  50. 'address',
  51. 'price',
  52. 'paid',
  53. 'ostatok',
  54. 'approved',
  55. 'sketch',
  56. 'executor',
  57. 'is_done',)
  58. class ArchiveOrdersTable(OrdersTable):
  59. calls = EditableColumn('calls', verbose_name = 'Обзвон')
  60. class Meta:
  61. attrs = {'class': 'paleblue'}
  62. class DesignerTable(tables.Table):
  63. full_name = tables.Column(empty_values=(), verbose_name = 'Дизайнер')
  64. designer__count = tables.Column(verbose_name = 'Всего заказов')
  65. price__sum = tables.Column(verbose_name = 'Общая сумма')
  66. def render_full_name(self, record):
  67. return " ".join((record['designer__first_name'], record['designer__last_name']))
  68. def render_sum_price(self, value):
  69. return '%0.1f' % value
  70. class Meta:
  71. attrs = {'class': 'paleblue'}