diff --git a/netbox/core/plugins.py b/netbox/core/plugins.py index c09f82a20..29020bcce 100644 --- a/netbox/core/plugins.py +++ b/netbox/core/plugins.py @@ -63,6 +63,7 @@ class Plugin: release_recent_history: list[PluginVersion] = field(default_factory=list) is_local: bool = False # extra field for locally installed plugins is_installed: bool = False + installed_version: str = '' def get_local_plugins(): @@ -81,6 +82,7 @@ def get_local_plugins(): description_short=plugin_config.description, is_local=True, is_installed=True, + installed_version=plugin_config.version, ) return plugins diff --git a/netbox/core/tables/plugins.py b/netbox/core/tables/plugins.py index 4f1d6b83a..529fe60f4 100644 --- a/netbox/core/tables/plugins.py +++ b/netbox/core/tables/plugins.py @@ -62,11 +62,15 @@ class CatalogPluginTable(BaseTable): updated_at = columns.DateTimeColumn( verbose_name=_('Updated') ) + installed_version = tables.Column( + verbose_name=_('Installed version') + ) class Meta(BaseTable.Meta): empty_text = _('No plugin data found') fields = ( 'title_short', 'author', 'is_local', 'is_installed', 'is_certified', 'created_at', 'updated_at', + 'installed_version', ) default_columns = ( 'title_short', 'author', 'is_local', 'is_installed', 'is_certified', 'created_at', 'updated_at', diff --git a/netbox/core/views.py b/netbox/core/views.py index d58c55833..79ef33e1d 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -654,7 +654,7 @@ class PluginListView(UserPassesTestMixin, View): plugins = get_plugins().values() if q: - plugins = [obj for obj in plugins if q.casefold() in obj.name.casefold()] + plugins = [obj for obj in plugins if q.casefold() in obj.title_short.casefold()] table = CatalogPluginTable(plugins, user=request.user) table.configure(request) @@ -678,6 +678,8 @@ class PluginView(UserPassesTestMixin, View): def get(self, request, name): plugins = get_plugins() + if name not in plugins: + raise Http404(_("Plugin {name} not found").format(name=name)) plugin = plugins[name] table = PluginVersionTable(plugin.release_recent_history, user=request.user) diff --git a/netbox/templates/core/plugin.html b/netbox/templates/core/plugin.html index 733a0b093..77702d579 100644 --- a/netbox/templates/core/plugin.html +++ b/netbox/templates/core/plugin.html @@ -15,7 +15,7 @@ {% block subtitle %}
{{ plugin.tag_line }} - Learn more + Learn more
{% endblock subtitle %} @@ -53,12 +53,40 @@
+
+
{% trans "Author" %}
+ + + + + + + + +
{% trans "Author" %} {{ plugin.author.name }}
{% trans "Org id" %}{{ plugin.author.org_id|placeholder }}
{% trans "URL" %}{{ plugin.author.url|urlize|placeholder }}
+
+ +
+
{% trans "Plugin" %}
+ + + + + + + + + + + + + @@ -67,6 +95,22 @@ + + + + + + + + + + + + + + + +
{% trans "Name" %}{{ plugin.title_short }}
{% trans "Tag line" %}{{ plugin.tag_line|placeholder }}
{% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
{% trans "License" %} {{ plugin.license_type }}{% trans "Description" %} {{ plugin.description_short|markdown }}
{% trans "URL" %}{{ plugin.homepage_url|urlize|placeholder }}
{% trans "Certified" %}{% checkmark plugin.is_certified %}
{% trans "Local" %}{% checkmark plugin.is_local %}
{% trans "Installed" %}{% checkmark plugin.is_installed %}
diff --git a/netbox/templates/core/plugin_list.html b/netbox/templates/core/plugin_list.html index 01a776b2c..aa9f90dd7 100644 --- a/netbox/templates/core/plugin_list.html +++ b/netbox/templates/core/plugin_list.html @@ -17,27 +17,3 @@ {% endblock tabs %} -{% block content %} -
-

{% trans "NetBox plugins enable you to document and model new kinds of resources, connect automations, add workflows, and much more." %}

- -
-
-
- - - - -
-
-
- -
-
- {% include 'htmx/table.html' %} -
-
- -
-{% endblock content %}