power.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import django_tables2 as tables
  2. from dcim.models import PowerFeed, PowerPanel
  3. from utilities.tables import BaseTable, ChoiceFieldColumn, LinkedCountColumn, TagColumn, ToggleColumn
  4. from .devices import CableTerminationTable
  5. __all__ = (
  6. 'PowerFeedTable',
  7. 'PowerPanelTable',
  8. )
  9. #
  10. # Power panels
  11. #
  12. class PowerPanelTable(BaseTable):
  13. pk = ToggleColumn()
  14. name = tables.Column(
  15. linkify=True
  16. )
  17. site = tables.Column(
  18. linkify=True
  19. )
  20. powerfeed_count = LinkedCountColumn(
  21. viewname='dcim:powerfeed_list',
  22. url_params={'power_panel_id': 'pk'},
  23. verbose_name='Feeds'
  24. )
  25. tags = TagColumn(
  26. url_name='dcim:powerpanel_list'
  27. )
  28. class Meta(BaseTable.Meta):
  29. model = PowerPanel
  30. fields = ('pk', 'name', 'site', 'location', 'powerfeed_count', 'tags')
  31. default_columns = ('pk', 'name', 'site', 'location', 'powerfeed_count')
  32. #
  33. # Power feeds
  34. #
  35. # We're not using PathEndpointTable for PowerFeed because power connections
  36. # cannot traverse pass-through ports.
  37. class PowerFeedTable(CableTerminationTable):
  38. pk = ToggleColumn()
  39. name = tables.Column(
  40. linkify=True
  41. )
  42. power_panel = tables.Column(
  43. linkify=True
  44. )
  45. rack = tables.Column(
  46. linkify=True
  47. )
  48. status = ChoiceFieldColumn()
  49. type = ChoiceFieldColumn()
  50. max_utilization = tables.TemplateColumn(
  51. template_code="{{ value }}%"
  52. )
  53. available_power = tables.Column(
  54. verbose_name='Available power (VA)'
  55. )
  56. tags = TagColumn(
  57. url_name='dcim:powerfeed_list'
  58. )
  59. class Meta(BaseTable.Meta):
  60. model = PowerFeed
  61. fields = (
  62. 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase',
  63. 'max_utilization', 'mark_connected', 'cable', 'cable_color', 'cable_peer', 'connection', 'available_power',
  64. 'tags',
  65. )
  66. default_columns = (
  67. 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', 'cable',
  68. 'cable_peer',
  69. )