tables.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import django_tables2 as tables
  2. from django_tables2.utils import Accessor
  3. from tenancy.tables import TenantColumn
  4. from utilities.tables import BaseTable, ButtonsColumn, ChoiceFieldColumn, MarkdownColumn, TagColumn, ToggleColumn
  5. from .models import *
  6. __all__ = (
  7. 'CircuitTable',
  8. 'CircuitTypeTable',
  9. 'ProviderTable',
  10. 'ProviderNetworkTable',
  11. )
  12. CIRCUITTERMINATION_LINK = """
  13. {% if value.site %}
  14. <a href="{{ value.site.get_absolute_url }}">{{ value.site }}</a>
  15. {% elif value.provider_network %}
  16. <a href="{{ value.provider_network.get_absolute_url }}">{{ value.provider_network }}</a>
  17. {% endif %}
  18. """
  19. #
  20. # Providers
  21. #
  22. class ProviderTable(BaseTable):
  23. pk = ToggleColumn()
  24. name = tables.Column(
  25. linkify=True
  26. )
  27. circuit_count = tables.Column(
  28. accessor=Accessor('count_circuits'),
  29. verbose_name='Circuits'
  30. )
  31. comments = MarkdownColumn()
  32. tags = TagColumn(
  33. url_name='circuits:provider_list'
  34. )
  35. class Meta(BaseTable.Meta):
  36. model = Provider
  37. fields = (
  38. 'pk', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count', 'comments',
  39. 'tags',
  40. )
  41. default_columns = ('pk', 'name', 'asn', 'account', 'circuit_count')
  42. #
  43. # Provider networks
  44. #
  45. class ProviderNetworkTable(BaseTable):
  46. pk = ToggleColumn()
  47. name = tables.Column(
  48. linkify=True
  49. )
  50. provider = tables.Column(
  51. linkify=True
  52. )
  53. comments = MarkdownColumn()
  54. tags = TagColumn(
  55. url_name='circuits:providernetwork_list'
  56. )
  57. class Meta(BaseTable.Meta):
  58. model = ProviderNetwork
  59. fields = ('pk', 'name', 'provider', 'description', 'comments', 'tags')
  60. default_columns = ('pk', 'name', 'provider', 'description')
  61. #
  62. # Circuit types
  63. #
  64. class CircuitTypeTable(BaseTable):
  65. pk = ToggleColumn()
  66. name = tables.Column(
  67. linkify=True
  68. )
  69. tags = TagColumn(
  70. url_name='circuits:circuittype_list'
  71. )
  72. circuit_count = tables.Column(
  73. verbose_name='Circuits'
  74. )
  75. actions = ButtonsColumn(CircuitType)
  76. class Meta(BaseTable.Meta):
  77. model = CircuitType
  78. fields = ('pk', 'name', 'circuit_count', 'description', 'slug', 'tags', 'actions')
  79. default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions')
  80. #
  81. # Circuits
  82. #
  83. class CircuitTable(BaseTable):
  84. pk = ToggleColumn()
  85. cid = tables.Column(
  86. linkify=True,
  87. verbose_name='ID'
  88. )
  89. provider = tables.Column(
  90. linkify=True
  91. )
  92. status = ChoiceFieldColumn()
  93. tenant = TenantColumn()
  94. termination_a = tables.TemplateColumn(
  95. template_code=CIRCUITTERMINATION_LINK,
  96. verbose_name='Side A'
  97. )
  98. termination_z = tables.TemplateColumn(
  99. template_code=CIRCUITTERMINATION_LINK,
  100. verbose_name='Side Z'
  101. )
  102. comments = MarkdownColumn()
  103. tags = TagColumn(
  104. url_name='circuits:circuit_list'
  105. )
  106. class Meta(BaseTable.Meta):
  107. model = Circuit
  108. fields = (
  109. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'install_date',
  110. 'commit_rate', 'description', 'comments', 'tags',
  111. )
  112. default_columns = (
  113. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'description',
  114. )