From 855c9c9acea00a7a64bac9aee54ab831b148cf57 Mon Sep 17 00:00:00 2001 From: Jakob Meier Date: Sun, 3 Mar 2024 15:05:51 +0100 Subject: [PATCH] disable servers that require login by default + fix server filter NOTE: databases initialised before this commit hard set every plugin to enabled by default STARTING from this commit servers that require login will be disabled by default --- melon/models/__init__.py | 67 +++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/melon/models/__init__.py b/melon/models/__init__.py index d32272f..235760a 100644 --- a/melon/models/__init__.py +++ b/melon/models/__init__.py @@ -257,31 +257,33 @@ def init_db(): # for data not stored in database servers = {} -def init_server_settings(sid:str) -> bool: +def init_server_settings(sid:str, enable=None) -> bool: """ Make sure server config is initialized + (for this session) returns true if changed """ servers[sid] = deepcopy(server_settings_template) - conn = connect_to_db() - # NOTE: won't initialize the settings table, - # as that will only be populated once an entry needs to be stored - results = conn.execute( - "SELECT * FROM servers WHERE server = ?", (sid,)).fetchall() - if len(results) == 0: - # initialize enabled config - execute_sql(conn, "INSERT OR REPLACE INTO servers VALUES (?, ?)", (sid, server_settings_template["enabled"])) - notify("settings_changed") - return True - return False # DO NOT CALL # used internally def load_server(server): sid = server.id - init_server_settings(sid) + # do not enable servers that require login by default + init_server_settings(sid, not server.requires_login) servers[sid]["nsfw_content"] = server.is_nsfw servers[sid]["nsfw_content_only"] = server.is_nsfw_only servers[sid]["login_required"] = server.requires_login + # check if server was manually enabled/disabled + # if None it is set to default (unchanged by user) + # since 1.3.0 + conn = connect_to_db() + value = conn.execute( + "SELECT enabled FROM servers WHERE server = ?", (sid,)).fetchone() + if value is None: + # disable servers that require login by default + if server.requires_login: + ensure_server_disabled(sid) + servers[sid]["enabled"] = False notify("settings_changed") def set_server_setting(sid:str, pref:str, value): init_server_settings(sid) @@ -294,8 +296,7 @@ def get_server_settings(sid:str): init_server_settings(sid) base = servers[sid] conn = connect_to_db() - value = conn.execute( - "SELECT enabled FROM servers WHERE server = ?", (sid,)).fetchone()[0] + value = is_server_enabled(sid) base["enabled"] = value results = conn.execute( "SELECT key, value FROM server_settings WHERE server = ?", (sid,)).fetchall() @@ -312,34 +313,30 @@ def get_server_settings(sid:str): def is_server_enabled(server_id: str): conn = connect_to_db() value = conn.execute( - "SELECT enabled FROM servers WHERE server = ?", (server_id,)).fetchone()[0] - return value -def ensure_server_disabled(server_id: str): - if not is_server_enabled(server_id): + "SELECT enabled FROM servers WHERE server = ?", (server_id,)).fetchone() + if not value is None: + value = value[0] + else: + value = server_settings_template["enabled"] + return bool(value) +def ensure_server(server_id: str, mode: bool): + if is_server_enabled(server_id) == mode: + # nothing to do return conn = connect_to_db() execute_sql(conn, """ - UPDATE servers - SET enabled = ? - WHERE server = ? - """, (False, server_id)) + INSERT OR REPLACE INTO servers + VALUES (?, ?) + """, (server_id, mode)) # notify channels and playlists, because available channels might be different notify("channels_changed") notify("playlists_changed") notify("settings_changed") + +def ensure_server_disabled(server_id: str): + ensure_server(server_id, False) def ensure_server_enabled(server_id: str): - if is_server_enabled(server_id): - return - conn = connect_to_db() - execute_sql(conn, """ - UPDATE servers - SET enabled = ? - WHERE server = ? - """, (True, server_id)) - # notify channels and playlists, because available channels might be different - notify("channels_changed") - notify("playlists_changed") - notify("settings_changed") + ensure_server(server_id, True) def get_app_settings(): base = deepcopy(app_conf_template) -- 2.38.5