virtual_circuits.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext_lazy as _
  3. from circuits.models import *
  4. from netbox.tables import NetBoxTable, columns
  5. from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
  6. __all__ = (
  7. 'VirtualCircuitTable',
  8. 'VirtualCircuitTerminationTable',
  9. 'VirtualCircuitTypeTable',
  10. )
  11. class VirtualCircuitTypeTable(NetBoxTable):
  12. name = tables.Column(
  13. linkify=True,
  14. verbose_name=_('Name'),
  15. )
  16. color = columns.ColorColumn()
  17. tags = columns.TagColumn(
  18. url_name='circuits:virtualcircuittype_list'
  19. )
  20. virtual_circuit_count = columns.LinkedCountColumn(
  21. viewname='circuits:virtualcircuit_list',
  22. url_params={'type_id': 'pk'},
  23. verbose_name=_('Circuits')
  24. )
  25. class Meta(NetBoxTable.Meta):
  26. model = VirtualCircuitType
  27. fields = (
  28. 'pk', 'id', 'name', 'virtual_circuit_count', 'color', 'description', 'slug', 'tags', 'created',
  29. 'last_updated', 'actions',
  30. )
  31. default_columns = ('pk', 'name', 'virtual_circuit_count', 'color', 'description')
  32. class VirtualCircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
  33. cid = tables.Column(
  34. linkify=True,
  35. verbose_name=_('Circuit ID')
  36. )
  37. provider = tables.Column(
  38. accessor=tables.A('provider_network__provider'),
  39. verbose_name=_('Provider'),
  40. linkify=True
  41. )
  42. provider_network = tables.Column(
  43. linkify=True,
  44. verbose_name=_('Provider network')
  45. )
  46. provider_account = tables.Column(
  47. linkify=True,
  48. verbose_name=_('Account')
  49. )
  50. type = tables.Column(
  51. verbose_name=_('Type'),
  52. linkify=True
  53. )
  54. status = columns.ChoiceFieldColumn()
  55. termination_count = columns.LinkedCountColumn(
  56. viewname='circuits:virtualcircuittermination_list',
  57. url_params={'virtual_circuit_id': 'pk'},
  58. verbose_name=_('Terminations')
  59. )
  60. comments = columns.MarkdownColumn(
  61. verbose_name=_('Comments')
  62. )
  63. tags = columns.TagColumn(
  64. url_name='circuits:virtualcircuit_list'
  65. )
  66. class Meta(NetBoxTable.Meta):
  67. model = VirtualCircuit
  68. fields = (
  69. 'pk', 'id', 'cid', 'provider', 'provider_account', 'provider_network', 'type', 'status', 'tenant',
  70. 'tenant_group', 'description', 'comments', 'tags', 'created', 'last_updated',
  71. )
  72. default_columns = (
  73. 'pk', 'cid', 'provider', 'provider_account', 'provider_network', 'type', 'status', 'tenant',
  74. 'termination_count', 'description',
  75. )
  76. class VirtualCircuitTerminationTable(NetBoxTable):
  77. virtual_circuit = tables.Column(
  78. verbose_name=_('Virtual circuit'),
  79. linkify=True
  80. )
  81. provider = tables.Column(
  82. accessor=tables.A('virtual_circuit__provider_network__provider'),
  83. verbose_name=_('Provider'),
  84. linkify=True
  85. )
  86. provider_network = tables.Column(
  87. accessor=tables.A('virtual_circuit__provider_network'),
  88. linkify=True,
  89. verbose_name=_('Provider network')
  90. )
  91. provider_account = tables.Column(
  92. linkify=True,
  93. verbose_name=_('Account')
  94. )
  95. role = columns.ChoiceFieldColumn()
  96. device = tables.Column(
  97. accessor=tables.A('interface__device'),
  98. linkify=True,
  99. verbose_name=_('Device')
  100. )
  101. interface = tables.Column(
  102. verbose_name=_('Interface'),
  103. linkify=True
  104. )
  105. class Meta(NetBoxTable.Meta):
  106. model = VirtualCircuitTermination
  107. fields = (
  108. 'pk', 'id', 'virtual_circuit', 'provider', 'provider_network', 'provider_account', 'role', 'interfaces',
  109. 'description', 'created', 'last_updated', 'actions',
  110. )
  111. default_columns = (
  112. 'pk', 'id', 'virtual_circuit', 'role', 'device', 'interface', 'description',
  113. )