tables.py 3.0 KB

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