circuits.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import django_tables2 as tables
  2. from circuits.models import *
  3. from netbox.tables import NetBoxTable, columns
  4. from tenancy.tables import TenantColumn
  5. from .columns import CommitRateColumn
  6. __all__ = (
  7. 'CircuitTable',
  8. 'CircuitTypeTable',
  9. )
  10. CIRCUITTERMINATION_LINK = """
  11. {% if value.site %}
  12. <a href="{{ value.site.get_absolute_url }}">{{ value.site }}</a>
  13. {% elif value.provider_network %}
  14. <a href="{{ value.provider_network.get_absolute_url }}">{{ value.provider_network }}</a>
  15. {% endif %}
  16. """
  17. class CircuitTypeTable(NetBoxTable):
  18. name = tables.Column(
  19. linkify=True
  20. )
  21. tags = columns.TagColumn(
  22. url_name='circuits:circuittype_list'
  23. )
  24. circuit_count = tables.Column(
  25. verbose_name='Circuits'
  26. )
  27. class Meta(NetBoxTable.Meta):
  28. model = CircuitType
  29. fields = (
  30. 'pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
  31. )
  32. default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug')
  33. class CircuitTable(NetBoxTable):
  34. cid = tables.Column(
  35. linkify=True,
  36. verbose_name='Circuit ID'
  37. )
  38. provider = tables.Column(
  39. linkify=True
  40. )
  41. status = columns.ChoiceFieldColumn()
  42. tenant = TenantColumn()
  43. termination_a = tables.TemplateColumn(
  44. template_code=CIRCUITTERMINATION_LINK,
  45. verbose_name='Side A'
  46. )
  47. termination_z = tables.TemplateColumn(
  48. template_code=CIRCUITTERMINATION_LINK,
  49. verbose_name='Side Z'
  50. )
  51. commit_rate = CommitRateColumn()
  52. comments = columns.MarkdownColumn()
  53. contacts = columns.ManyToManyColumn(
  54. linkify_item=True
  55. )
  56. tags = columns.TagColumn(
  57. url_name='circuits:circuit_list'
  58. )
  59. class Meta(NetBoxTable.Meta):
  60. model = Circuit
  61. fields = (
  62. 'pk', 'id', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'install_date',
  63. 'termination_date', 'commit_rate', 'description', 'comments', 'contacts', 'tags', 'created', 'last_updated',
  64. )
  65. default_columns = (
  66. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'description',
  67. )