tables.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import django_tables2 as tables
  2. from django_tables2.utils import Accessor
  3. from tenancy.tables import COL_TENANT
  4. from utilities.tables import BaseTable, ToggleColumn
  5. from .models import Circuit, CircuitType, Provider
  6. CIRCUITTYPE_ACTIONS = """
  7. <a href="{% url 'circuits:circuittype_changelog' slug=record.slug %}" class="btn btn-default btn-xs" title="Changelog">
  8. <i class="fa fa-history"></i>
  9. </a>
  10. {% if perms.circuit.change_circuittype %}
  11. <a href="{% url 'circuits:circuittype_edit' slug=record.slug %}?return_url={{ request.path }}"
  12. class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>
  13. {% endif %}
  14. """
  15. STATUS_LABEL = """
  16. <span class="label label-{{ record.get_status_class }}">{{ record.get_status_display }}</span>
  17. """
  18. #
  19. # Providers
  20. #
  21. class ProviderTable(BaseTable):
  22. pk = ToggleColumn()
  23. name = tables.LinkColumn()
  24. class Meta(BaseTable.Meta):
  25. model = Provider
  26. fields = ('pk', 'name', 'asn', 'account',)
  27. class ProviderDetailTable(ProviderTable):
  28. circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits')
  29. class Meta(ProviderTable.Meta):
  30. model = Provider
  31. fields = ('pk', 'name', 'asn', 'account', 'circuit_count')
  32. #
  33. # Circuit types
  34. #
  35. class CircuitTypeTable(BaseTable):
  36. pk = ToggleColumn()
  37. name = tables.LinkColumn()
  38. circuit_count = tables.Column(verbose_name='Circuits')
  39. actions = tables.TemplateColumn(
  40. template_code=CIRCUITTYPE_ACTIONS,
  41. attrs={'td': {'class': 'text-right noprint'}},
  42. verbose_name=''
  43. )
  44. class Meta(BaseTable.Meta):
  45. model = CircuitType
  46. fields = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions')
  47. #
  48. # Circuits
  49. #
  50. class CircuitTable(BaseTable):
  51. pk = ToggleColumn()
  52. cid = tables.LinkColumn(verbose_name='ID')
  53. provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
  54. status = tables.TemplateColumn(template_code=STATUS_LABEL, verbose_name='Status')
  55. tenant = tables.TemplateColumn(template_code=COL_TENANT)
  56. a_side = tables.Column(
  57. verbose_name='A Side'
  58. )
  59. z_side = tables.Column(
  60. verbose_name='Z Side'
  61. )
  62. class Meta(BaseTable.Meta):
  63. model = Circuit
  64. fields = ('pk', 'cid', 'status', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'description')