tables.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import django_tables2 as tables
  2. from django_tables2.utils import Accessor
  3. from tenancy.tables import COL_TENANT
  4. from utilities.tables import BaseTable, ButtonsColumn, ChoiceFieldColumn, TagColumn, ToggleColumn
  5. from .models import Circuit, CircuitType, Provider
  6. #
  7. # Providers
  8. #
  9. class ProviderTable(BaseTable):
  10. pk = ToggleColumn()
  11. name = tables.LinkColumn()
  12. circuit_count = tables.Column(
  13. accessor=Accessor('count_circuits'),
  14. verbose_name='Circuits'
  15. )
  16. tags = TagColumn(
  17. url_name='circuits:provider_list'
  18. )
  19. class Meta(BaseTable.Meta):
  20. model = Provider
  21. fields = (
  22. 'pk', 'name', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'circuit_count', 'tags',
  23. )
  24. default_columns = ('pk', 'name', 'asn', 'account', 'circuit_count')
  25. #
  26. # Circuit types
  27. #
  28. class CircuitTypeTable(BaseTable):
  29. pk = ToggleColumn()
  30. name = tables.LinkColumn()
  31. circuit_count = tables.Column(
  32. verbose_name='Circuits'
  33. )
  34. actions = ButtonsColumn(CircuitType, pk_field='slug')
  35. class Meta(BaseTable.Meta):
  36. model = CircuitType
  37. fields = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions')
  38. default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug', 'actions')
  39. #
  40. # Circuits
  41. #
  42. class CircuitTable(BaseTable):
  43. pk = ToggleColumn()
  44. cid = tables.LinkColumn(
  45. verbose_name='ID'
  46. )
  47. provider = tables.LinkColumn(
  48. viewname='circuits:provider',
  49. args=[Accessor('provider__slug')]
  50. )
  51. status = ChoiceFieldColumn()
  52. tenant = tables.TemplateColumn(
  53. template_code=COL_TENANT
  54. )
  55. a_side = tables.Column(
  56. verbose_name='A Side'
  57. )
  58. z_side = tables.Column(
  59. verbose_name='Z Side'
  60. )
  61. tags = TagColumn(
  62. url_name='circuits:circuit_list'
  63. )
  64. class Meta(BaseTable.Meta):
  65. model = Circuit
  66. fields = (
  67. 'pk', 'cid', 'provider', 'type', 'status', 'tenant', 'a_side', 'z_side', 'install_date', 'commit_rate',
  68. 'description', 'tags',
  69. )
  70. default_columns = ('pk', 'cid', 'provider', 'type', 'status', 'tenant', 'a_side', 'z_side', 'description')