mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-16 20:15:44 +00:00
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Load templates for loaded plugins."""
|
|
|
|
from pathlib import Path
|
|
|
|
from django.template.loaders.filesystem import Loader as FilesystemLoader
|
|
|
|
from plugin import registry
|
|
|
|
|
|
class PluginTemplateLoader(FilesystemLoader):
|
|
"""A custom template loader which allows loading of templates from installed plugins.
|
|
|
|
Each plugin can register templates simply by providing a 'templates' directory in its root path.
|
|
|
|
The convention is that each 'templates' directory contains a subdirectory with the same name as the plugin,
|
|
e.g. templates/myplugin/my_template.html
|
|
|
|
In this case, the template can then be loaded (from any plugin!) by loading "myplugin/my_template.html".
|
|
|
|
The separate plugin-named directories help keep the templates separated and uniquely identifiable.
|
|
"""
|
|
|
|
def get_dirs(self):
|
|
"""Returns all template dir paths in plugins."""
|
|
dirname = 'templates'
|
|
template_dirs = []
|
|
|
|
for plugin in registry.plugins.values():
|
|
new_path = Path(plugin.path) / dirname
|
|
if Path(new_path).is_dir():
|
|
template_dirs.append(new_path)
|
|
|
|
return tuple(template_dirs)
|