circuits.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import django_tables2 as tables
  2. from circuits.models import *
  3. from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
  4. from netbox.tables import NetBoxTable, columns
  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 = columns.LinkedCountColumn(
  25. viewname='circuits:circuit_list',
  26. url_params={'type_id': 'pk'},
  27. verbose_name='Circuits'
  28. )
  29. class Meta(NetBoxTable.Meta):
  30. model = CircuitType
  31. fields = (
  32. 'pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
  33. )
  34. default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug')
  35. class CircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
  36. cid = tables.Column(
  37. linkify=True,
  38. verbose_name='Circuit ID'
  39. )
  40. provider = tables.Column(
  41. linkify=True
  42. )
  43. status = columns.ChoiceFieldColumn()
  44. termination_a = tables.TemplateColumn(
  45. template_code=CIRCUITTERMINATION_LINK,
  46. verbose_name='Side A'
  47. )
  48. termination_z = tables.TemplateColumn(
  49. template_code=CIRCUITTERMINATION_LINK,
  50. verbose_name='Side Z'
  51. )
  52. commit_rate = CommitRateColumn()
  53. comments = columns.MarkdownColumn()
  54. tags = columns.TagColumn(
  55. url_name='circuits:circuit_list'
  56. )
  57. class Meta(NetBoxTable.Meta):
  58. model = Circuit
  59. fields = (
  60. 'pk', 'id', 'cid', 'provider', 'type', 'status', 'tenant', 'tenant_group', 'termination_a', 'termination_z',
  61. 'install_date', 'termination_date', 'commit_rate', 'description', 'comments', 'contacts', 'tags', 'created',
  62. 'last_updated',
  63. )
  64. default_columns = (
  65. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'description',
  66. )