providers.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext_lazy as _
  3. from django_tables2.utils import Accessor
  4. from circuits.models import *
  5. from netbox.tables import PrimaryModelTable, columns
  6. from tenancy.tables import ContactsColumnMixin
  7. __all__ = (
  8. 'ProviderTable',
  9. 'ProviderAccountTable',
  10. 'ProviderNetworkTable',
  11. )
  12. class ProviderTable(ContactsColumnMixin, PrimaryModelTable):
  13. name = tables.Column(
  14. verbose_name=_('Name'),
  15. linkify=True
  16. )
  17. accounts = columns.ManyToManyColumn(
  18. linkify_item=True,
  19. verbose_name=_('Accounts')
  20. )
  21. account_count = columns.LinkedCountColumn(
  22. viewname='circuits:provideraccount_list',
  23. url_params={'provider_id': 'pk'},
  24. verbose_name=_('Account Count')
  25. )
  26. asns = columns.ManyToManyColumn(
  27. linkify_item=True,
  28. verbose_name=_('ASNs')
  29. )
  30. asn_count = columns.LinkedCountColumn(
  31. viewname='ipam:asn_list',
  32. url_params={'provider_id': 'pk'},
  33. verbose_name=_('ASN Count')
  34. )
  35. circuit_count = columns.LinkedCountColumn(
  36. accessor=Accessor('count_circuits'),
  37. viewname='circuits:circuit_list',
  38. url_params={'provider_id': 'pk'},
  39. verbose_name=_('Circuits')
  40. )
  41. tags = columns.TagColumn(
  42. url_name='circuits:provider_list'
  43. )
  44. class Meta(PrimaryModelTable.Meta):
  45. model = Provider
  46. fields = (
  47. 'pk', 'id', 'name', 'accounts', 'account_count', 'asns', 'asn_count', 'circuit_count', 'description',
  48. 'comments', 'contacts', 'tags', 'created', 'last_updated',
  49. )
  50. default_columns = ('pk', 'name', 'account_count', 'circuit_count')
  51. class ProviderAccountTable(ContactsColumnMixin, PrimaryModelTable):
  52. account = tables.Column(
  53. linkify=True,
  54. verbose_name=_('Account'),
  55. )
  56. name = tables.Column(
  57. verbose_name=_('Name'),
  58. )
  59. provider = tables.Column(
  60. verbose_name=_('Provider'),
  61. linkify=True
  62. )
  63. circuit_count = columns.LinkedCountColumn(
  64. accessor=Accessor('count_circuits'),
  65. viewname='circuits:circuit_list',
  66. url_params={'provider_account_id': 'pk'},
  67. verbose_name=_('Circuits')
  68. )
  69. tags = columns.TagColumn(
  70. url_name='circuits:provideraccount_list'
  71. )
  72. class Meta(PrimaryModelTable.Meta):
  73. model = ProviderAccount
  74. fields = (
  75. 'pk', 'id', 'account', 'name', 'provider', 'circuit_count', 'comments', 'contacts', 'tags', 'created',
  76. 'last_updated',
  77. )
  78. default_columns = ('pk', 'account', 'name', 'provider', 'circuit_count')
  79. class ProviderNetworkTable(PrimaryModelTable):
  80. name = tables.Column(
  81. verbose_name=_('Name'),
  82. linkify=True
  83. )
  84. provider = tables.Column(
  85. verbose_name=_('Provider'),
  86. linkify=True
  87. )
  88. tags = columns.TagColumn(
  89. url_name='circuits:providernetwork_list'
  90. )
  91. class Meta(PrimaryModelTable.Meta):
  92. model = ProviderNetwork
  93. fields = (
  94. 'pk', 'id', 'name', 'provider', 'service_id', 'description', 'comments', 'created', 'last_updated', 'tags',
  95. )
  96. default_columns = ('pk', 'name', 'provider', 'service_id', 'description')