Plugins¶
A plugin is a Django app with extra Karaage specific features. It can defined extra settings, extra templates, extra URLS, and extra code.
For the purposes of this document, we assume the plugin is called kgplugin, and
defines a Django app with a python module called kgplugin
. You should
change this name.
Settings¶
PLUGINS¶
Default: []
(Empty list)
A list of classes that define Karaage plugins.
Creating a plugin¶
A plugin needs to provide a urls.py file. This file can be empty if it doesn’t
provide any urls. It can optionally provide values for urlpatterns
and
profile_urlpatterns
.
A plugin needs to provide a plugin class that is derived from the
BasePlugin
class. It is configured with the
PLUGINS
setting.
-
class
karaage.plugins.
BasePlugin
¶ Base class used for defining Karaage specific settings used to define plugins in Karaaage.
BasePlugin is derived from
django.apps.AppConfig
if Django 1.7 is detected.
Here is an example, taken from the legacy karaage-usage pugin:
from karaage.plugins import BasePlugin
class plugin(BasePlugin):
name = "karaage.plugins.kgusage"
xmlrpc_methods = (
('karaage.plugins.kgusage.xmlrpc.parse_usage', 'parse_usage',),
)
settings = {
'GRAPH_DEBUG': False,
'GRAPH_DIR': 'kgusage/',
'GRAPH_TMP': 'kgusage/',
}
depends = ("karaage.plugins.kgsoftware.plugin",)
The name
value is required, all other attributes are optional.
The following attributes can be set:
-
BasePlugin.
name
¶ The python module for the Django app. This will be added to the
INSTALLED_APPS
Django setting.If Django 1.7 is detected, the plugin class is added to
INSTALLED_APPS
, not this value. This setting is used by Django to locate the module.
-
BasePlugin.
django_apps
¶ A typle list of extra Django apps that are required for this plugin to work correctly. This will be added to the
INSTALLED_APPS
setting.
-
BasePlugin.
xmlrpc_methods
¶ A tuple list of extra methods to add to the
XMLRPC_METHODS
setting.
-
BasePlugin.
settings
¶ A dictionary of extra settings, and default values. These are added to the Django settings. If the setting is already defined, the value given here is ignored.
-
BasePlugin.
depends
¶ A tuple list of plugins this plugin requires to be installed for it to operate correctly.
Templates¶
The python module directory, can contain the templates
directory. This
can have custom templates under the kgplugin
directory. In addition,
Karaage will see the following extra files.
kgplugin/index_top.html
: contains HTML code to add to the top of the top level Karaage page.kgplugin/index_bottom.html
: contains HTML code to add to the bottom of the top level Karaage page.kgplugin/main_admin.html
: Links to add to the admin menu.kgplugin/main_profile.html
: Links to add to the profile menu.kgplugin/misc.html
: Links to add to the misc menu.emails/email_footer.txt
: Footer to add to every outgoing email.
URLS¶
Extra URLS can be defined in the kgplugin.urls
module, and should be called
urlpatterns
or profile_urlpatterns
for URLS that should appear under
the profile directory.