circuits.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. color = columns.ColorColumn()
  24. tags = columns.TagColumn(
  25. url_name='circuits:circuittype_list'
  26. )
  27. circuit_count = columns.LinkedCountColumn(
  28. viewname='circuits:circuit_list',
  29. url_params={'type_id': 'pk'},
  30. verbose_name=_('Circuits')
  31. )
  32. class Meta(NetBoxTable.Meta):
  33. model = CircuitType
  34. fields = (
  35. 'pk', 'id', 'name', 'circuit_count', 'color', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
  36. )
  37. default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug')
  38. class CircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
  39. cid = tables.Column(
  40. linkify=True,
  41. verbose_name=_('Circuit ID')
  42. )
  43. provider = tables.Column(
  44. verbose_name=_('Provider'),
  45. linkify=True
  46. )
  47. provider_account = tables.Column(
  48. linkify=True,
  49. verbose_name=_('Account')
  50. )
  51. status = columns.ChoiceFieldColumn()
  52. termination_a = tables.TemplateColumn(
  53. template_code=CIRCUITTERMINATION_LINK,
  54. verbose_name=_('Side A')
  55. )
  56. termination_z = tables.TemplateColumn(
  57. template_code=CIRCUITTERMINATION_LINK,
  58. verbose_name=_('Side Z')
  59. )
  60. commit_rate = CommitRateColumn(
  61. verbose_name=_('Commit Rate')
  62. )
  63. comments = columns.MarkdownColumn(
  64. verbose_name=_('Comments'),
  65. )
  66. tags = columns.TagColumn(
  67. url_name='circuits:circuit_list'
  68. )
  69. class Meta(NetBoxTable.Meta):
  70. model = Circuit
  71. fields = (
  72. 'pk', 'id', 'cid', 'provider', 'provider_account', 'type', 'status', 'tenant', 'tenant_group',
  73. 'termination_a', 'termination_z', 'install_date', 'termination_date', 'commit_rate', 'description',
  74. 'comments', 'contacts', 'tags', 'created', 'last_updated',
  75. )
  76. default_columns = (
  77. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'termination_a', 'termination_z', 'description',
  78. )