plugins.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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, PLUGIN_NAME_TEMPLATE
  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 = columns.TemplateColumn(
  37. template_code=PLUGIN_NAME_TEMPLATE,
  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. accessor=tables.A('is_loaded'),
  50. verbose_name=_('Active'),
  51. template_code=PLUGIN_IS_INSTALLED
  52. )
  53. is_certified = columns.BooleanColumn(
  54. false_mark=None,
  55. verbose_name=_('Certified')
  56. )
  57. created_at = columns.DateTimeColumn(
  58. verbose_name=_('Published')
  59. )
  60. updated_at = columns.DateTimeColumn(
  61. verbose_name=_('Updated')
  62. )
  63. installed_version = tables.Column(
  64. verbose_name=_('Installed Version')
  65. )
  66. latest_version = tables.Column(
  67. accessor=tables.A('release_latest__version'),
  68. verbose_name=_('Latest Version')
  69. )
  70. class Meta(BaseTable.Meta):
  71. empty_text = _('No plugin data found')
  72. fields = (
  73. 'title_long', 'author', 'is_local', 'is_installed', 'is_certified', 'created_at', 'updated_at',
  74. 'installed_version', 'latest_version',
  75. )
  76. default_columns = (
  77. 'title_long', 'author', 'is_local', 'is_installed', 'is_certified', 'installed_version', 'latest_version',
  78. )
  79. # List installed plugins first, then certified plugins, then
  80. # everything else (with each tranche ordered alphabetically)
  81. order_by = ('-is_installed', '-is_certified', 'title_long')