Plugins can now register .env settings

This commit is contained in:
Agate 2020-08-25 09:55:57 +02:00
parent f52ae5228f
commit ea83511d0a
4 changed files with 40 additions and 1 deletions

View file

@ -34,6 +34,7 @@ def get_plugin_config(
source=False,
registry=_plugins,
conf={},
settings={},
description=None,
version=None,
label=None,
@ -42,8 +43,12 @@ def get_plugin_config(
"name": name,
"label": label or name,
"logger": logger,
# conf is for dynamic settings
"conf": conf,
# settings is for settings hardcoded in .env
"settings": settings,
"user": True if source else user,
# source plugins are plugins that provide audio content
"source": source,
"description": description,
"version": version,
@ -52,6 +57,24 @@ def get_plugin_config(
return conf
def load_settings(name, settings):
from django.conf import settings as django_settings
mapping = {
"boolean": django_settings.ENV.bool,
"text": django_settings.ENV,
}
values = {}
prefix = "FUNKWHALE_PLUGIN_{}".format(name.upper())
for s in settings:
key = "_".join([prefix, s["name"].upper()])
value = mapping[s["type"]](key, default=s.get("default", None))
values[s["name"]] = value
logger.debug("Plugin %s running with settings %s", name, values)
return values
def get_session():
from funkwhale_api.common import session