1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/usr/bin/env python
- """
- Taken from flask-appconfig
- """
- import json
- import os
- from xdg import BaseDirectory
- def get_conf(prefix="LARIGIRA_"):
- """This is where everyone should get configuration from"""
- conf_dir = BaseDirectory.save_config_path("larigira")
- conf = {}
- conf["CONTINOUS_AUDIOSPEC"] = dict(kind="mpd", howmany=1)
- conf["MPD_HOST"] = os.getenv("MPD_HOST", "localhost")
- conf["MPD_PORT"] = int(os.getenv("MPD_PORT", "6600"))
- conf["UMASK"] = None
- conf["CACHING_TIME"] = 10
- conf["DB_URI"] = os.path.join(conf_dir, "db.json")
- conf["SCRIPTS_PATH"] = os.path.join(conf_dir, "scripts")
- conf["EXTRA_STATIC_PATH"] = os.path.join(conf_dir, "extra")
- conf["EXTRA_MENU_LINKS"] = []
- conf["ROUTE_PREFIX"] = ""
- conf["BOOTSTRAP_SERVE_LOCAL"] = True
- conf["SECRET_KEY"] = "Please replace me!"
- conf["MPD_WAIT_START"] = True
- conf["MPD_WAIT_START_RETRYSECS"] = 5
- conf["MPD_ENFORCE_ALWAYS_PLAYING"] = False
- conf["CHECK_SECS"] = 20 # period for checking playlist length
- conf["EVENT_TICK_SECS"] = 30 # period for scheduling events
- conf["DEBUG"] = False
- conf[
- "REMOVE_UNUSED_FILES"
- ] = True # please keep it to True unless you are into deep debugging!
- conf["LOG_CONFIG"] = False
- conf["TMPDIR"] = os.getenv("TMPDIR", "/tmp/")
- conf["FILE_PATH_SUGGESTION"] = () # tuple of paths
- # UI_CALENDAR_FREQUENCY_THRESHOLD"] has been removed
- # use UI_CALENDAR_OCCURRENCIES_THRESHOLD instead
- conf["UI_CALENDAR_FREQUENCY_THRESHOLD"] = 4 * 60 * 60 # 4 hours
- conf["UI_CALENDAR_OCCURRENCIES_THRESHOLD"] = 40
- conf["UI_CALENDAR_DATE_FMT"] = "medium"
- conf["EVENT_FILTERS"] = []
- conf["HTTP_ADDRESS"] = "0.0.0.0"
- conf["HTTP_PORT"] = 5000
- conf["HOME_URL"] = "/db/calendar"
- conf.update(from_envvars(prefix=prefix))
- return conf
- def from_envvars(prefix=None, envvars=None, as_json=True):
- """Load environment variables in a dictionary
- Values are parsed as JSON. If parsing fails with a ValueError,
- values are instead used as verbatim strings.
- :param prefix: If ``None`` is passed as envvars, all variables from
- ``environ`` starting with this prefix are imported. The
- prefix is stripped upon import.
- :param envvars: A dictionary of mappings of environment-variable-names
- to Flask configuration names. If a list is passed
- instead, names are mapped 1:1. If ``None``, see prefix
- argument.
- :param as_json: If False, values will not be parsed as JSON first.
- """
- conf = {}
- if prefix is None and envvars is None:
- raise RuntimeError("Must either give prefix or envvars argument")
- # if it's a list, convert to dict
- if isinstance(envvars, list):
- envvars = {k: None for k in envvars}
- if not envvars:
- envvars = {
- k: k[len(prefix) :]
- for k in os.environ.keys()
- if k.startswith(prefix)
- }
- for env_name, name in envvars.items():
- if name is None:
- name = env_name
- if env_name not in os.environ:
- continue
- if as_json:
- try:
- conf[name] = json.loads(os.environ[env_name])
- except ValueError:
- conf[name] = os.environ[env_name]
- else:
- conf[name] = os.environ[env_name]
- return conf
|