tables.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import django_tables2 as tables
  2. from django_tables2.utils import Accessor
  3. from utilities.tables import BaseTable, SearchTable, ToggleColumn
  4. from .models import Circuit, CircuitType, Provider
  5. CIRCUITTYPE_ACTIONS = """
  6. {% if perms.circuit.change_circuittype %}
  7. <a href="{% url 'circuits:circuittype_edit' slug=record.slug %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>
  8. {% endif %}
  9. """
  10. #
  11. # Providers
  12. #
  13. class ProviderTable(BaseTable):
  14. pk = ToggleColumn()
  15. name = tables.LinkColumn()
  16. circuit_count = tables.Column(accessor=Accessor('count_circuits'), verbose_name='Circuits')
  17. class Meta(BaseTable.Meta):
  18. model = Provider
  19. fields = ('pk', 'name', 'asn', 'account', 'circuit_count')
  20. class ProviderSearchTable(SearchTable):
  21. name = tables.LinkColumn()
  22. class Meta(SearchTable.Meta):
  23. model = Provider
  24. fields = ('name', 'asn', 'account')
  25. #
  26. # Circuit types
  27. #
  28. class CircuitTypeTable(BaseTable):
  29. pk = ToggleColumn()
  30. name = tables.LinkColumn()
  31. circuit_count = tables.Column(verbose_name='Circuits')
  32. actions = tables.TemplateColumn(
  33. template_code=CIRCUITTYPE_ACTIONS, attrs={'td': {'class': 'text-right'}}, verbose_name=''
  34. )
  35. class Meta(BaseTable.Meta):
  36. model = CircuitType
  37. fields = ('pk', 'name', 'circuit_count', 'slug', 'actions')
  38. #
  39. # Circuits
  40. #
  41. class CircuitTable(BaseTable):
  42. pk = ToggleColumn()
  43. cid = tables.LinkColumn(verbose_name='ID')
  44. provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
  45. tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')])
  46. a_side = tables.LinkColumn(
  47. 'dcim:site', accessor=Accessor('termination_a.site'), orderable=False,
  48. args=[Accessor('termination_a.site.slug')]
  49. )
  50. z_side = tables.LinkColumn(
  51. 'dcim:site', accessor=Accessor('termination_z.site'), orderable=False,
  52. args=[Accessor('termination_z.site.slug')]
  53. )
  54. class Meta(BaseTable.Meta):
  55. model = Circuit
  56. fields = ('pk', 'cid', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'description')
  57. class CircuitSearchTable(SearchTable):
  58. cid = tables.LinkColumn(verbose_name='ID')
  59. provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
  60. tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')])
  61. class Meta(SearchTable.Meta):
  62. model = Circuit
  63. fields = ('cid', 'type', 'provider', 'tenant', 'description')