circuits.py 2.6 KB

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