plugins.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import django_tables2 as tables
  2. from django.utils.translation import gettext_lazy as _
  3. from netbox.tables import BaseTable, columns
  4. from .template_code import PLUGIN_IS_INSTALLED
  5. __all__ = (
  6. 'CatalogPluginTable',
  7. 'PluginVersionTable',
  8. )
  9. class PluginVersionTable(BaseTable):
  10. version = tables.Column(
  11. verbose_name=_('Version')
  12. )
  13. last_updated = columns.DateTimeColumn(
  14. accessor=tables.A('date'),
  15. timespec='minutes',
  16. verbose_name=_('Last Updated')
  17. )
  18. min_version = tables.Column(
  19. accessor=tables.A('netbox_min_version'),
  20. verbose_name=_('Minimum NetBox Version')
  21. )
  22. max_version = tables.Column(
  23. accessor=tables.A('netbox_max_version'),
  24. verbose_name=_('Maximum NetBox Version')
  25. )
  26. class Meta(BaseTable.Meta):
  27. empty_text = _('No plugin data found')
  28. fields = (
  29. 'version', 'last_updated', 'min_version', 'max_version',
  30. )
  31. default_columns = (
  32. 'version', 'last_updated', 'min_version', 'max_version',
  33. )
  34. orderable = False
  35. class CatalogPluginTable(BaseTable):
  36. title_long = tables.Column(
  37. linkify=('core:plugin', [tables.A('config_name')]),
  38. verbose_name=_('Name')
  39. )
  40. author = tables.Column(
  41. accessor=tables.A('author__name'),
  42. verbose_name=_('Author')
  43. )
  44. is_local = columns.BooleanColumn(
  45. false_mark=None,
  46. verbose_name=_('Local')
  47. )
  48. is_installed = columns.TemplateColumn(
  49. verbose_name=_('Active'),
  50. template_code=PLUGIN_IS_INSTALLED
  51. )
  52. is_certified = columns.BooleanColumn(
  53. false_mark=None,
  54. verbose_name=_('Certified')
  55. )
  56. created_at = columns.DateTimeColumn(
  57. verbose_name=_('Published')
  58. )
  59. updated_at = columns.DateTimeColumn(
  60. verbose_name=_('Updated')
  61. )
  62. installed_version = tables.Column(
  63. verbose_name=_('Installed Version')
  64. )
  65. latest_version = tables.Column(
  66. accessor=tables.A('release_latest__version'),
  67. verbose_name=_('Latest Version')
  68. )
  69. class Meta(BaseTable.Meta):
  70. empty_text = _('No plugin data found')
  71. fields = (
  72. 'title_long', 'author', 'is_local', 'is_installed', 'is_certified', 'created_at', 'updated_at',
  73. 'installed_version', 'latest_version',
  74. )
  75. default_columns = (
  76. 'title_long', 'author', 'is_local', 'is_installed', 'is_certified', 'installed_version', 'latest_version',
  77. )
  78. # List installed plugins first, then certified plugins, then
  79. # everything else (with each tranche ordered alphabetically)
  80. order_by = ('-is_installed', '-is_certified', 'name')