mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Move default caching_config to PluginConfig class
This commit is contained in:
@ -360,17 +360,28 @@ template_extensions = [AddSiteAnimal, AddRackAnimal]
|
|||||||
|
|
||||||
## Caching Configuration
|
## Caching Configuration
|
||||||
|
|
||||||
By default, all query operations within a plugin are cached. To change this, define a caching configuration under the PluginConfig class' `caching_config` attribute. An example configuration is below:
|
By default, all query operations within a plugin are cached. To change this, define a caching configuration under the PluginConfig class' `caching_config` attribute. All configuration keys will be applied within the context of the plugin; there is no need to include the plugin name. An example configuration is below:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
class MyPluginConfig(PluginConfig):
|
class MyPluginConfig(PluginConfig):
|
||||||
...
|
...
|
||||||
caching_config = {
|
caching_config = {
|
||||||
'my_plugin.foo': {
|
'foo': {
|
||||||
'ops': 'get',
|
'ops': 'get',
|
||||||
'timeout': 60 * 15,
|
'timeout': 60 * 15,
|
||||||
},
|
},
|
||||||
|
'*': {
|
||||||
|
'ops': 'all',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To disable caching for your plugin entirely, set:
|
||||||
|
|
||||||
|
```python
|
||||||
|
caching_config = {
|
||||||
|
'*': None
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
See the [django-cacheops](https://github.com/Suor/django-cacheops) documentation for more detail on configuring caching.
|
See the [django-cacheops](https://github.com/Suor/django-cacheops) documentation for more detail on configuring caching.
|
||||||
|
@ -44,8 +44,10 @@ class PluginConfig(AppConfig):
|
|||||||
# Middleware classes provided by the plugin
|
# Middleware classes provided by the plugin
|
||||||
middleware = []
|
middleware = []
|
||||||
|
|
||||||
# Caching configuration
|
# Cacheops configuration. Cache all operations by default.
|
||||||
caching_config = {}
|
caching_config = {
|
||||||
|
'*': {'ops': 'all'},
|
||||||
|
}
|
||||||
|
|
||||||
# Default integration paths. Plugin authors can override these to customize the paths to
|
# Default integration paths. Plugin authors can override these to customize the paths to
|
||||||
# integrated components.
|
# integrated components.
|
||||||
|
@ -689,16 +689,8 @@ for plugin_name in PLUGINS:
|
|||||||
PLUGINS_CONFIG[plugin_name][setting] = value
|
PLUGINS_CONFIG[plugin_name][setting] = value
|
||||||
|
|
||||||
# Apply cacheops config
|
# Apply cacheops config
|
||||||
plugin_cacheops = plugin_config.caching_config
|
if type(plugin_config.caching_config) is not dict:
|
||||||
if plugin_cacheops:
|
raise ImproperlyConfigured(f"Plugin {plugin_name} caching_config must be a dictionary.")
|
||||||
if type(plugin_cacheops) is not dict:
|
CACHEOPS.update({
|
||||||
raise ImproperlyConfigured(f"Plugin {plugin_name} caching_config must be a dictionary.")
|
f"{plugin_name}.{key}": value for key, value in plugin_config.caching_config.items()
|
||||||
for key in plugin_cacheops.keys():
|
})
|
||||||
# Validate config is only being set for the given plugin
|
|
||||||
app = key.split('.')[0]
|
|
||||||
if app != plugin_name:
|
|
||||||
raise ImproperlyConfigured(f"Plugin {plugin_name} may not modify caching config for another app: {app}")
|
|
||||||
else:
|
|
||||||
# Apply the default config like all other core apps
|
|
||||||
plugin_cacheops = {f"{plugin_name}.*": {'ops': 'all'}}
|
|
||||||
CACHEOPS.update(plugin_cacheops)
|
|
||||||
|
Reference in New Issue
Block a user