diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 816f71f77e..ae5f2bb9e1 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -2,11 +2,14 @@ # InvenTree API version -INVENTREE_API_VERSION = 122 +INVENTREE_API_VERSION = 123 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v123 -> 2023-06-15 : https://github.com/inventree/InvenTree/pull/5019 + - Add Metadata to: Plugin Config + v122 -> 2023-06-14 : https://github.com/inventree/InvenTree/pull/5034 - Adds new BuildLineLabel label type diff --git a/InvenTree/plugin/admin.py b/InvenTree/plugin/admin.py index 859f78ea89..39f0dfbb58 100644 --- a/InvenTree/plugin/admin.py +++ b/InvenTree/plugin/admin.py @@ -56,6 +56,7 @@ class PluginConfigAdmin(admin.ModelAdmin): list_filter = ['active'] actions = [plugin_activate, plugin_deactivate, ] inlines = [PluginSettingInline, ] + exclude = ['metadata', ] class NotificationUserSettingAdmin(admin.ModelAdmin): diff --git a/InvenTree/plugin/api.py b/InvenTree/plugin/api.py index 5568e5595b..1752704fd9 100644 --- a/InvenTree/plugin/api.py +++ b/InvenTree/plugin/api.py @@ -9,6 +9,7 @@ from rest_framework.response import Response import plugin.serializers as PluginSerializers from common.api import GlobalSettingsPermissions +from InvenTree.api import MetadataView from InvenTree.filters import SEARCH_ORDER_FILTER from InvenTree.mixins import (CreateAPI, ListAPI, RetrieveUpdateAPI, RetrieveUpdateDestroyAPI, UpdateAPI) @@ -266,6 +267,9 @@ plugin_api_urls = [ re_path(r'^.*$', PluginDetail.as_view(), name='api-plugin-detail'), ])), + # Metadata + re_path('^metadata/', MetadataView.as_view(), {'model': PluginConfig}, name='api-plugin-metadata'), + # Plugin management re_path(r'^install/', PluginInstall.as_view(), name='api-plugin-install'), re_path(r'^activate/', PluginActivate.as_view(), name='api-plugin-activate'), diff --git a/InvenTree/plugin/migrations/0006_pluginconfig_metadata.py b/InvenTree/plugin/migrations/0006_pluginconfig_metadata.py new file mode 100644 index 0000000000..f874365070 --- /dev/null +++ b/InvenTree/plugin/migrations/0006_pluginconfig_metadata.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.19 on 2023-06-11 16:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('plugin', '0005_notificationusersetting'), + ] + + operations = [ + migrations.AddField( + model_name='pluginconfig', + name='metadata', + field=models.JSONField(blank=True, help_text='JSON metadata field, for use by external plugins', null=True, verbose_name='Plugin Metadata'), + ), + ] diff --git a/InvenTree/plugin/models.py b/InvenTree/plugin/models.py index 4f7b1eb443..8877997f9a 100644 --- a/InvenTree/plugin/models.py +++ b/InvenTree/plugin/models.py @@ -10,10 +10,11 @@ from django.db import models from django.utils.translation import gettext_lazy as _ import common.models +import InvenTree.models from plugin import InvenTreePlugin, registry -class PluginConfig(models.Model): +class PluginConfig(InvenTree.models.MetadataMixin, models.Model): """A PluginConfig object holds settings for plugins. Attributes: