2013-11-29 16:47:31 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
from django.utils.importlib import import_module
|
2013-12-12 21:22:42 +01:00
|
|
|
from pkg_resources import iter_entry_points
|
2013-11-29 16:47:31 +01:00
|
|
|
|
|
|
|
plugins = {}
|
|
|
|
|
|
|
|
|
2013-12-12 21:22:42 +01:00
|
|
|
def get_plugins_from_entry_points():
|
|
|
|
"""
|
|
|
|
Collects all entry points in the group openslides_plugins from all
|
|
|
|
distributions in the default working set and returns their module names as
|
|
|
|
tuple.
|
|
|
|
"""
|
|
|
|
return tuple(entry_point.module_name for entry_point in iter_entry_points('openslides_plugins'))
|
|
|
|
|
|
|
|
|
2013-11-29 16:47:31 +01:00
|
|
|
def get_plugin(plugin):
|
|
|
|
"""
|
|
|
|
Returns the imported module. The plugin argument must be a python dotted
|
|
|
|
module path.
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
plugin = plugins[plugin]
|
|
|
|
except KeyError:
|
|
|
|
plugins[plugin] = import_module(plugin)
|
|
|
|
plugin = get_plugin(plugin)
|
|
|
|
return plugin
|
|
|
|
|
|
|
|
|
|
|
|
def get_plugin_verbose_name(plugin):
|
|
|
|
"""
|
|
|
|
Returns the verbose name of a plugin. The plugin argument must be a python
|
|
|
|
dotted module path.
|
|
|
|
"""
|
|
|
|
plugin = get_plugin(plugin)
|
|
|
|
try:
|
|
|
|
verbose_name = plugin.get_verbose_name()
|
|
|
|
except AttributeError:
|
|
|
|
try:
|
|
|
|
verbose_name = plugin.__verbose_name__
|
|
|
|
except AttributeError:
|
|
|
|
verbose_name = plugin.__name__
|
|
|
|
return verbose_name
|
|
|
|
|
|
|
|
|
|
|
|
def get_plugin_description(plugin):
|
|
|
|
"""
|
|
|
|
Returns the short descrption of a plugin. The plugin argument must be a
|
|
|
|
python dotted module path.
|
|
|
|
"""
|
|
|
|
plugin = get_plugin(plugin)
|
|
|
|
try:
|
|
|
|
description = plugin.get_description()
|
|
|
|
except AttributeError:
|
|
|
|
try:
|
|
|
|
description = plugin.__description__
|
|
|
|
except AttributeError:
|
|
|
|
description = ''
|
|
|
|
return description
|
|
|
|
|
|
|
|
|
|
|
|
def get_plugin_version(plugin):
|
|
|
|
"""
|
|
|
|
Returns the version string of a plugin. The plugin argument must be a#
|
|
|
|
python dotted module path.
|
|
|
|
"""
|
|
|
|
plugin = get_plugin(plugin)
|
|
|
|
try:
|
|
|
|
version = plugin.get_version()
|
|
|
|
except AttributeError:
|
|
|
|
try:
|
|
|
|
version = plugin.__version__
|
|
|
|
except AttributeError:
|
|
|
|
version = 'unknown'
|
|
|
|
return version
|
|
|
|
|
|
|
|
|
|
|
|
def get_urlpatterns(plugin):
|
|
|
|
"""
|
|
|
|
Returns the urlpatterns object for a plugin. The plugin argument must be
|
|
|
|
a python dotted module path.
|
|
|
|
"""
|
|
|
|
plugin = get_plugin(plugin)
|
|
|
|
try:
|
|
|
|
urlpatterns = plugin.urlpatterns
|
|
|
|
except AttributeError:
|
|
|
|
try:
|
|
|
|
urlpatterns = plugin.urls.urlpatterns
|
|
|
|
except AttributeError:
|
|
|
|
urlpatterns = None
|
|
|
|
return urlpatterns
|