@@ 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)