diff --git a/maloja/globalconf.py b/maloja/globalconf.py
index 191fbe4..0a85537 100644
--- a/maloja/globalconf.py
+++ b/maloja/globalconf.py
@@ -1,6 +1,8 @@
import os
from doreah.settings import get_settings
from doreah.settings import config as settingsconfig
+from doreah.configuration import Configuration
+from doreah.configuration import types as tp
pthj = os.path.join
@@ -190,3 +192,79 @@ try:
except:
USE_THUMBOR = False
log("Thumbor could not be initialized. Is libthumbor installed?")
+
+
+
+
+
+
+
+
+# new config
+
+
+malojaconfig = Configuration(
+ settings={
+ "Setup":{
+ "directory_state":(tp.String(), "State Directory", "/var/lib/maloja"),
+ "directory_logs":(tp.String(), "Log Directory", "/var/log/maloja"),
+ "directory_cache":(tp.String(), "Cache Directory", "/var/cache/maloja"),
+ "skip_setup":(tp.Boolean(), "Skip Setup", False),
+ "force_password":(tp.String(), "Force Password", None),
+ "clean_output":(tp.Boolean(), "Avoid Mutable Console Output", False)
+ },
+ "Debug":{
+ "logging":(tp.Boolean(), "Enable Logging", True),
+ "dev_mode":(tp.Boolean(), "Enable developer mode", False),
+ },
+ "Network":{
+ "host":(tp.String(), "Host", "::"),
+ "port":(tp.Integer(), "Port", 42010),
+ },
+ "Technical":{
+ "cache_expire_positive":(tp.Integer(), "Days until images are refetched", 300),
+ "cache_expire_negative":(tp.Integer(), "Days until failed image fetches are reattempted", 30),
+ "use_db_cache":(tp.Boolean(), "Use DB Cache", True),
+ "cache_database_short":(tp.Boolean(), "Use volatile Database Cache", True),
+ "cache_database_perm":(tp.Boolean(), "Use permanent Database Cache", True),
+ "db_cache_entries":(tp.Integer(), "Maximal Cache entries", 10000),
+ "db_max_memory":(tp.Integer(), "RAM Percentage Theshold", 75)
+ },
+ "Fluff":{
+ "scrobbles_gold":(tp.Integer(), "Scrobbles for Gold", 250),
+ "scrobbles_platinum":(tp.Integer(), "Scrobbles for Platinum", 500),
+ "scrobbles_diamond":(tp.Integer(), "Scrobbles for Diamond", 1000),
+ "name":(tp.String(), "Name", "Maloja User")
+ },
+ "Third Party Services":{
+ "metadata_providers":(tp.List(tp.String()), "Metadata Providers", ['lastfm','spotify','deezer','musicbrainz']),
+ "scrobble_lastfm":(tp.Boolean(), "Proxy-Scrobble to Last.fm", False),
+ "lastfm_api_key":(tp.String(), "Last.fm API Key", None),
+ "lastfm_api_secret":(tp.String(), "Last.fm API Secret", None),
+ "spotify_api_id":(tp.String(), "Spotify API ID", None),
+ "spotify_api_secret":(tp.String(), "Spotify API Secret", None),
+ "lastfm_api_key":(tp.String(), "Last.fm API Key", None),
+ "track_search_provider":(tp.String(), "Track Search Provider", None)
+
+ },
+ "Database":{
+ "invalid_artists":(tp.Set(tp.String()), "Invalid Artists", ["[Unknown Artist]","Unknown Artist","Spotify"]),
+ "remove_from_title":(tp.Set(tp.String()), "Remove from Title", ["(Original Mix)","(Radio Edit)","(Album Version)","(Explicit Version)","(Bonus Track)"]),
+ "delimiters_feat":(tp.Set(tp.String()), "Delimiters featuring", ["ft.","ft","feat.","feat","featuring","Ft.","Ft","Feat.","Feat","Featuring"]),
+ "delimiters_informal":(tp.Set(tp.String()), "Informal Delimiters", ["vs.","vs","&"]),
+ "delimiters_formal":(tp.Set(tp.String()), "Formal Delimiters", [";","/"])
+ },
+ "Web Interface":{
+ "default_range_charts_artists":(tp.Choice({'alltime':'All Time','year':'Year','month':"Month",'week':'Week'}), "Default Range Artist Charts", "year"),
+ "default_range_charts_tracks":(tp.Choice({'alltime':'All Time','year':'Year','month':"Month",'week':'Week'}), "Default Range Track Charts", "year"),
+ "default_step_pulse":(tp.Choice({'year':'Year','month':"Month",'week':'Week','day':'Day'}), "Default Pulse Step", "month"),
+ "charts_display_tiles":(tp.Boolean(), "Display Chart Tiles", False),
+ "discourage_cpu_heavy_stats":(tp.Boolean(), "Discourage CPU-heavy stats", False),
+ "use_local_images":(tp.Boolean(), "Use Local Images", True),
+ "local_image_rotate":(tp.Integer(), "Use Local Images", 3600),
+ "timezone":(tp.Integer(), "UTC Offset", 0),
+ "time_format":(tp.String(), "Time Format", "%d. %b %Y %I:%M %p")
+ }
+ }
+
+ )
diff --git a/maloja/server.py b/maloja/server.py
index e89bf53..6559a88 100644
--- a/maloja/server.py
+++ b/maloja/server.py
@@ -17,6 +17,7 @@ from . import malojauri
from .utilities import resolveImage
from .malojauri import uri_to_internal, remove_identical, compose_querystring
from . import globalconf
+from .globalconf import malojaconfig
from .jinjaenv.context import jinja_environment
from jinja2.exceptions import TemplateNotFound
# doreah toolkit
@@ -247,6 +248,7 @@ def static_html(name):
LOCAL_CONTEXT = {
"adminmode":adminmode,
+ "config":malojaconfig,
"apikey":request.cookies.get("apikey") if adminmode else None,
"_urikeys":keys, #temporary!
}
diff --git a/maloja/web/jinja/abstracts/admin.jinja b/maloja/web/jinja/abstracts/admin.jinja
index 76c95ad..01270ca 100644
--- a/maloja/web/jinja/abstracts/admin.jinja
+++ b/maloja/web/jinja/abstracts/admin.jinja
@@ -35,7 +35,12 @@
Database Maintenance
{% else %}
Database Maintenance
- {% endif %}
+ {% endif %}
diff --git a/maloja/web/jinja/admin_settings.jinja b/maloja/web/jinja/admin_settings.jinja
new file mode 100644
index 0000000..2b6b53e
--- /dev/null
+++ b/maloja/web/jinja/admin_settings.jinja
@@ -0,0 +1,8 @@
+{% set page ='admin_settings' %}
+{% extends "abstracts/admin.jinja" %}
+{% block title %}Maloja - Settings{% endblock %}
+
+
+{% block maincontent %}
+{{ config.html() }}
+{% endblock %}