modules.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from django.utils.translation import gettext_lazy as _
  2. import django_tables2 as tables
  3. from dcim.models import Module, ModuleType
  4. from netbox.tables import NetBoxTable, columns
  5. from .template_code import WEIGHT
  6. __all__ = (
  7. 'ModuleTable',
  8. 'ModuleTypeTable',
  9. )
  10. class ModuleTypeTable(NetBoxTable):
  11. model = tables.Column(
  12. linkify=True,
  13. verbose_name=_('Module Type')
  14. )
  15. manufacturer = tables.Column(
  16. verbose_name=_('Manufacturer'),
  17. linkify=True
  18. )
  19. instance_count = columns.LinkedCountColumn(
  20. viewname='dcim:module_list',
  21. url_params={'module_type_id': 'pk'},
  22. verbose_name=_('Instances')
  23. )
  24. comments = columns.MarkdownColumn(
  25. verbose_name=_('Comments'),
  26. )
  27. tags = columns.TagColumn(
  28. url_name='dcim:moduletype_list'
  29. )
  30. weight = columns.TemplateColumn(
  31. verbose_name=_('Weight'),
  32. template_code=WEIGHT,
  33. order_by=('_abs_weight', 'weight_unit')
  34. )
  35. class Meta(NetBoxTable.Meta):
  36. model = ModuleType
  37. fields = (
  38. 'pk', 'id', 'model', 'manufacturer', 'part_number', 'weight', 'description', 'comments', 'tags',
  39. )
  40. default_columns = (
  41. 'pk', 'model', 'manufacturer', 'part_number',
  42. )
  43. class ModuleTable(NetBoxTable):
  44. device = tables.Column(
  45. verbose_name=_('Device'),
  46. linkify=True
  47. )
  48. module_bay = tables.Column(
  49. verbose_name=_('Module Bay'),
  50. linkify=True
  51. )
  52. manufacturer = tables.Column(
  53. verbose_name=_('Manufacturer'),
  54. accessor=tables.A('module_type__manufacturer'),
  55. linkify=True
  56. )
  57. module_type = tables.Column(
  58. verbose_name=_('Module Type'),
  59. linkify=True
  60. )
  61. status = columns.ChoiceFieldColumn(
  62. verbose_name=_('Status'),
  63. )
  64. comments = columns.MarkdownColumn(
  65. verbose_name=_('Comments'),
  66. )
  67. tags = columns.TagColumn(
  68. url_name='dcim:module_list'
  69. )
  70. class Meta(NetBoxTable.Meta):
  71. model = Module
  72. fields = (
  73. 'pk', 'id', 'device', 'module_bay', 'manufacturer', 'module_type', 'status', 'serial', 'asset_tag',
  74. 'description', 'comments', 'tags',
  75. )
  76. default_columns = (
  77. 'pk', 'id', 'device', 'module_bay', 'manufacturer', 'module_type', 'status', 'serial', 'asset_tag',
  78. )