~comcloudway/melon

855c9c9acea00a7a64bac9aee54ab831b148cf57 — Jakob Meier 6 months ago 0220dd4
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
1 files changed, 32 insertions(+), 35 deletions(-)

M melon/models/__init__.py
M melon/models/__init__.py => melon/models/__init__.py +32 -35
@@ 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)