mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
slugs for plugins
This commit is contained in:
parent
b416a13cc8
commit
7654d176cb
@ -667,14 +667,13 @@ INTEGRATION_PLUGIN_LIST = {}
|
|||||||
|
|
||||||
for plugin in inventree_plugins.load_integration_plugins():
|
for plugin in inventree_plugins.load_integration_plugins():
|
||||||
plugin = plugin()
|
plugin = plugin()
|
||||||
plugin_name = plugin.plugin_name()
|
|
||||||
|
|
||||||
INTEGRATION_PLUGINS.append(plugin)
|
INTEGRATION_PLUGINS.append(plugin)
|
||||||
INTEGRATION_PLUGIN_LIST[plugin_name] = plugin
|
INTEGRATION_PLUGIN_LIST[plugin.slug] = plugin
|
||||||
if plugin.mixin_enabled('settings'):
|
if plugin.mixin_enabled('settings'):
|
||||||
plugin_setting = plugin.settingspatterns
|
plugin_setting = plugin.settingspatterns
|
||||||
|
|
||||||
INTEGRATION_PLUGIN_SETTING[plugin_name] = plugin_setting
|
INTEGRATION_PLUGIN_SETTING[plugin.slug] = plugin_setting
|
||||||
INTEGRATION_PLUGIN_SETTINGS.update(plugin_setting)
|
INTEGRATION_PLUGIN_SETTINGS.update(plugin_setting)
|
||||||
|
|
||||||
if plugin.mixin_enabled('app'):
|
if plugin.mixin_enabled('app'):
|
||||||
|
@ -8,6 +8,7 @@ import inspect
|
|||||||
|
|
||||||
from django.conf.urls import url, include
|
from django.conf.urls import url, include
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils.text import slugify
|
||||||
|
|
||||||
import plugins.plugin as plugin
|
import plugins.plugin as plugin
|
||||||
|
|
||||||
@ -82,7 +83,7 @@ class SettingsMixin:
|
|||||||
get patterns for InvenTreeSetting defintion
|
get patterns for InvenTreeSetting defintion
|
||||||
"""
|
"""
|
||||||
if self.has_settings:
|
if self.has_settings:
|
||||||
return {f'PLUGIN_{self.plugin_name().upper()}_{key}': value for key, value in self.settings.items()}
|
return {f'PLUGIN_{self.slug.upper()}_{key}': value for key, value in self.settings.items()}
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_setting(self, key):
|
def get_setting(self, key):
|
||||||
@ -90,7 +91,7 @@ class SettingsMixin:
|
|||||||
get plugin setting by key
|
get plugin setting by key
|
||||||
"""
|
"""
|
||||||
from common.models import InvenTreeSetting
|
from common.models import InvenTreeSetting
|
||||||
return InvenTreeSetting.get_setting(f'PLUGIN_{self.PLUGIN_NAME.upper()}_{key}')
|
return InvenTreeSetting.get_setting(f'PLUGIN_{self.slug.upper()}_{key}')
|
||||||
|
|
||||||
|
|
||||||
class UrlsMixin:
|
class UrlsMixin:
|
||||||
@ -115,7 +116,14 @@ class UrlsMixin:
|
|||||||
"""
|
"""
|
||||||
returns base url for this plugin
|
returns base url for this plugin
|
||||||
"""
|
"""
|
||||||
return f'{settings.PLUGIN_URL}/{self.plugin_name()}/'
|
return f'{settings.PLUGIN_URL}/{self.slug}/'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def internal_name(self):
|
||||||
|
"""
|
||||||
|
returns the internal url pattern name
|
||||||
|
"""
|
||||||
|
return f'plugin:{self.slug}:'
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def urlpatterns(self):
|
def urlpatterns(self):
|
||||||
@ -123,7 +131,7 @@ class UrlsMixin:
|
|||||||
returns the urlpatterns for this plugin
|
returns the urlpatterns for this plugin
|
||||||
"""
|
"""
|
||||||
if self.has_urls:
|
if self.has_urls:
|
||||||
return url(f'^{self.plugin_name()}/', include((self.urls, self.plugin_name())), name=self.plugin_name())
|
return url(f'^{self.slug}/', include((self.urls, self.slug)), name=self.slug)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -238,6 +246,12 @@ class IntegrationPluginBase(MixinBase, plugin.InvenTreePlugin):
|
|||||||
|
|
||||||
self.set_sign_values()
|
self.set_sign_values()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def slug(self):
|
||||||
|
"""slug for the plugin"""
|
||||||
|
name = getattr(self, 'PLUGIN_SLUG', self.plugin_name())
|
||||||
|
return slugify(name)
|
||||||
|
|
||||||
def mixin(self, key):
|
def mixin(self, key):
|
||||||
"""check if mixin is registered"""
|
"""check if mixin is registered"""
|
||||||
return key in self._mixins
|
return key in self._mixins
|
||||||
|
@ -12,6 +12,7 @@ class SampleIntegrationPlugin(SettingsMixin, UrlsMixin, NavigationMixin, Integra
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
PLUGIN_NAME = "SampleIntegrationPlugin"
|
PLUGIN_NAME = "SampleIntegrationPlugin"
|
||||||
|
PLUGIN_SLUG= "sample"
|
||||||
|
|
||||||
def view_test(self, request):
|
def view_test(self, request):
|
||||||
"""very basic view"""
|
"""very basic view"""
|
||||||
@ -38,5 +39,5 @@ class SampleIntegrationPlugin(SettingsMixin, UrlsMixin, NavigationMixin, Integra
|
|||||||
}
|
}
|
||||||
|
|
||||||
NAVIGATION = [
|
NAVIGATION = [
|
||||||
{'name': 'SampleIntegration', 'link': 'plugin:SampleIntegrationPlugin:hi'},
|
{'name': 'SampleIntegration', 'link': 'plugin:sample:hi'},
|
||||||
]
|
]
|
||||||
|
@ -36,7 +36,7 @@ class SettingsMixinTest(BaseMixinDefinition, TestCase):
|
|||||||
self.assertEqual(self.mixin.settings, self.TEST_SETTINGS)
|
self.assertEqual(self.mixin.settings, self.TEST_SETTINGS)
|
||||||
|
|
||||||
# settings pattern
|
# settings pattern
|
||||||
target_pattern = {f'PLUGIN_{self.mixin.plugin_name().upper()}_{key}': value for key, value in self.mixin.settings.items()}
|
target_pattern = {f'PLUGIN_{self.mixin.slug.upper()}_{key}': value for key, value in self.mixin.settings.items()}
|
||||||
self.assertEqual(self.mixin.settingspatterns, target_pattern)
|
self.assertEqual(self.mixin.settingspatterns, target_pattern)
|
||||||
|
|
||||||
# no settings
|
# no settings
|
||||||
|
Loading…
Reference in New Issue
Block a user