def save_settings(settings_items): from database import database configure_debug = False configure_captcha = False update_schedule = False update_path_map = False configure_proxy = False exclusion_updated = False for key, value in settings_items: # Intercept database stored settings if key == 'enabled_languages': database.execute("UPDATE table_settings_languages SET enabled=0") for item in value: database.execute("UPDATE table_settings_languages SET enabled=1 WHERE code2=?", (item,)) continue # Make sure that text based form values aren't pass as list unless they are language list if isinstance(value, list) and len(value) == 1 and key not in ['settings-general-serie_default_language', 'settings-general-movie_default_language']: value = value[0] # Make sure empty language list are stored correctly due to bug in bootstrap-select if key in ['settings-general-serie_default_language', 'settings-general-movie_default_language'] and value == ['null']: value = [] settings_keys = key.split('-') if value == 'true': value = 'True' elif value == 'false': value = 'False' if key == 'settings-auth-password': if value != settings.auth.password: value = hashlib.md5(value.encode('utf-8')).hexdigest() if key == 'settings-general-debug': configure_debug = True if key in ['settings-general-anti_captcha_provider', 'settings-anticaptcha-anti_captcha_key', 'settings-deathbycaptcha-username', 'settings-deathbycaptcha-password']: configure_captcha = True if key in ['update_schedule', 'settings-general-use_sonarr', 'settings-general-use_radarr', 'settings-general-auto_update', 'settings-general-upgrade_subs']: update_schedule = True if key in ['settings-general-path_mappings', 'settings-general-path_mappings_movie']: update_path_map = True if key in ['settings-proxy-type', 'settings-proxy-url', 'settings-proxy-port', 'settings-proxy-username', 'settings-proxy-password']: configure_proxy = True if key in ['settings-sonarr-excluded_tags', 'settings-sonarr-only_monitored', 'settings-sonarr-excluded_series_types', 'settings.radarr.excluded_tags', 'settings-radarr-only_monitored']: exclusion_updated = True if key == 'settings-addic7ed-username': if key != settings.addic7ed.username: region.delete('addic7ed_data') if key == 'settings-legendasdivx-username': if key != settings.legendasdivx.username: region.delete('legendasdivx_cookies2') if key == 'settings-opensubtitles-username': if key != settings.opensubtitles.username: region.delete('os_token') if key == 'settings-opensubtitlescom-username': if key != settings.opensubtitlescom.username: region.delete('oscom_token') if key == 'settings-subscene-username': if key != settings.subscene.username: region.delete('subscene_cookies2') if key == 'settings-titlovi-username': if key != settings.titlovi.username: region.delete('titlovi_token') if settings_keys[0] == 'settings': settings[settings_keys[1]][settings_keys[2]] = str(value) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) # Reconfigure Bazarr to reflect changes if configure_debug: from logger import configure_logging configure_logging(settings.general.getboolean('debug') or args.debug) if configure_captcha: configure_captcha_func() if update_schedule: from api import scheduler scheduler.update_configurable_tasks() if update_path_map: from helper import path_mappings path_mappings.update() if configure_proxy: configure_proxy_func() if exclusion_updated: from event_handler import event_stream event_stream(type='badges_series') event_stream(type='badges_movies')
def save_settings(settings_items): from database import database configure_debug = False configure_captcha = False update_schedule = False update_path_map = False configure_proxy = False for key, value in settings_items: # Intercept database stored settings if key == 'enabled_languages': database.execute("UPDATE table_settings_languages SET enabled=0") for item in value: database.execute( "UPDATE table_settings_languages SET enabled=1 WHERE code2=?", (item, )) continue # Make sure that text based form values aren't pass as list unless they are language list if isinstance(value, list) and len(value) == 1 and key not in [ 'settings-general-serie_default_language', 'settings-general-movie_default_language' ]: value = value[0] # Make sure empty language list are stored correctly due to bug in bootstrap-select if key in [ 'settings-general-serie_default_language', 'settings-general-movie_default_language' ] and value == ['null']: value = [] settings_keys = key.split('-') if value == 'true': value = 'True' elif value == 'false': value = 'False' if key == 'settings-auth-password': value = hashlib.md5(value.encode('utf-8')).hexdigest() if key == 'settings-general-debug': configure_debug = True if key in [ 'settings-general-anti_captcha_provider', 'settings-anticaptcha-anti_captcha_key', 'settings-deathbycaptcha-username', 'settings-deathbycaptcha-password' ]: configure_captcha = True if key in [ 'update_schedule', 'settings-general-use_sonarr', 'settings-general-use_radarr', 'settings-general-auto_update', 'settings-general-upgrade_subs' ]: update_schedule = True if key in [ 'settings-general-path_mappings', 'settings-general-path_mappings_movie' ]: update_path_map = True if key in [ 'settings-proxy-type', 'settings-proxy-url', 'settings-proxy-port', 'settings-proxy-username', 'settings-proxy-password' ]: configure_proxy = True if settings_keys[0] == 'settings': settings[settings_keys[1]][settings_keys[2]] = str(value) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) # Reconfigure Bazarr to reflect changes if configure_debug: from logger import configure_logging configure_logging(settings.general.getboolean('debug') or args.debug) if configure_captcha: configure_captcha_func() if update_schedule: from api import scheduler scheduler.update_configurable_tasks() if update_path_map: from helper import path_mappings path_mappings.update() if configure_proxy: configure_proxy_func()
# os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'users.json'))) # os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'roles.json'))) # os.remove(os.path.normpath(os.path.join(args.config_dir, 'config', 'register.json'))) # except: # logging.error("BAZARR cannot delete those file. Please do it manually: users.json, roles.json, " # "register.json") def init_binaries(): from utils import get_binary exe = get_binary("unrar") rarfile.UNRAR_TOOL = exe rarfile.ORIG_UNRAR_TOOL = exe try: rarfile.custom_check([rarfile.UNRAR_TOOL], True) except: logging.debug("custom check failed for: %s", exe) rarfile.OPEN_ARGS = rarfile.ORIG_OPEN_ARGS rarfile.EXTRACT_ARGS = rarfile.ORIG_EXTRACT_ARGS rarfile.TEST_ARGS = rarfile.ORIG_TEST_ARGS logging.debug("Using UnRAR from: %s", exe) unrar = exe return unrar init_binaries() path_mappings.update()
def save_settings(settings_items): from database import database configure_debug = False configure_captcha = False update_schedule = False update_path_map = False configure_proxy = False exclusion_updated = False # Subzero Mods update_subzero = False subzero_mods = get_array_from(settings.general.subzero_mods) if len(subzero_mods) == 1 and subzero_mods[0] == '': subzero_mods = [] for key, value in settings_items: settings_keys = key.split('-') # Make sure that text based form values aren't pass as list if isinstance(value, list) and len(value) == 1 and settings_keys[-1] not in array_keys: value = value[0] if value in empty_values: value = None # Make sure empty language list are stored correctly if settings_keys[-1] in array_keys and value[0] in empty_values : value = [] # Handle path mappings settings since they are array in array if settings_keys[-1] in ['path_mappings', 'path_mappings_movie']: value = [v.split(',') for v in value] if value == 'true': value = 'True' elif value == 'false': value = 'False' if key == 'settings-auth-password': if value != settings.auth.password and value != None: value = hashlib.md5(value.encode('utf-8')).hexdigest() if key == 'settings-general-debug': configure_debug = True if key in ['settings-general-anti_captcha_provider', 'settings-anticaptcha-anti_captcha_key', 'settings-deathbycaptcha-username', 'settings-deathbycaptcha-password']: configure_captcha = True if key in ['update_schedule', 'settings-general-use_sonarr', 'settings-general-use_radarr', 'settings-general-auto_update', 'settings-general-upgrade_subs', 'settings-sonarr-series_sync', 'settings-sonarr-episodes_sync', 'settings-radarr-movies_sync', 'settings-sonarr-full_update', 'settings-sonarr-full_update_day', 'settings-sonarr-full_update_hour', 'settings-radarr-full_update', 'settings-radarr-full_update_day', 'settings-radarr-full_update_hour', 'settings-general-wanted_search_frequency', 'settings-general-wanted_search_frequency_movie', 'settings-general-upgrade_frequency']: update_schedule = True if key in ['settings-general-path_mappings', 'settings-general-path_mappings_movie']: update_path_map = True if key in ['settings-proxy-type', 'settings-proxy-url', 'settings-proxy-port', 'settings-proxy-username', 'settings-proxy-password']: configure_proxy = True if key in ['settings-sonarr-excluded_tags', 'settings-sonarr-only_monitored', 'settings-sonarr-excluded_series_types', 'settings.radarr.excluded_tags', 'settings-radarr-only_monitored']: exclusion_updated = True if key == 'settings-addic7ed-username': if key != settings.addic7ed.username: region.delete('addic7ed_data') if key == 'settings-legendasdivx-username': if key != settings.legendasdivx.username: region.delete('legendasdivx_cookies2') if key == 'settings-opensubtitles-username': if key != settings.opensubtitles.username: region.delete('os_token') if key == 'settings-opensubtitlescom-username': if key != settings.opensubtitlescom.username: region.delete('oscom_token') if key == 'settings-subscene-username': if key != settings.subscene.username: region.delete('subscene_cookies2') if key == 'settings-titlovi-username': if key != settings.titlovi.username: region.delete('titlovi_token') if settings_keys[0] == 'settings': settings[settings_keys[1]][settings_keys[2]] = str(value) if settings_keys[0] == 'subzero': mod = settings_keys[1] enabled = value == 'True' if mod in subzero_mods and not enabled: subzero_mods.remove(mod) elif enabled: subzero_mods.append(mod) # Handle color if mod == 'color': previous = None for exist_mod in subzero_mods: if exist_mod.startswith('color'): previous = exist_mod break if previous is not None: subzero_mods.remove(previous) if value not in empty_values: subzero_mods.append(value) update_subzero = True if update_subzero: settings.set('general', 'subzero_mods', ','.join(subzero_mods)) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) # Reconfigure Bazarr to reflect changes if configure_debug: from logger import configure_logging configure_logging(settings.general.getboolean('debug') or args.debug) if configure_captcha: configure_captcha_func() if update_schedule: from api import scheduler scheduler.update_configurable_tasks() if update_path_map: from helper import path_mappings path_mappings.update() if configure_proxy: configure_proxy_func() if exclusion_updated: from event_handler import event_stream event_stream(type='badges_series') event_stream(type='badges_movies')