mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
userdata
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from typing import Dict, Any
|
||||
from openbb_terminal.core.config import paths
|
||||
from openbb_terminal.rich_config import console
|
||||
from openbb_terminal import feature_flags as obbff
|
||||
from openbb_terminal import config_terminal as cfg
|
||||
@@ -74,6 +75,10 @@ def get_diff_settings(settings: dict) -> dict:
|
||||
old, new = get_var_diff(cfg_plot, k, v)
|
||||
if new is not None:
|
||||
diff[k] = (old, new)
|
||||
elif hasattr(paths, k):
|
||||
old, new = get_var_diff(paths, k, v)
|
||||
if new is not None:
|
||||
diff[k] = (old, new)
|
||||
|
||||
return diff
|
||||
|
||||
|
||||
@@ -82,21 +82,6 @@ def set_command_location(cmd_loc: str):
|
||||
command_location = cmd_loc
|
||||
|
||||
|
||||
# pylint: disable=global-statement
|
||||
def set_user_data_folder(env_file: str = ".env", path_folder: str = ""):
|
||||
"""Set user data folder location.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
env_file : str
|
||||
Env file to be updated
|
||||
path_folder: str
|
||||
Path folder location
|
||||
"""
|
||||
dotenv.set_key(env_file, "OPENBB_USER_DATA_DIRECTORY", path_folder)
|
||||
paths.USER_DATA_DIRECTORY = Path(path_folder)
|
||||
|
||||
|
||||
def check_path(path: str) -> str:
|
||||
"""Check that path file exists.
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import os
|
||||
from pathlib import Path
|
||||
import json
|
||||
from typing import Optional
|
||||
from openbb_terminal.core.config import paths
|
||||
from openbb_terminal.core.config.paths import (
|
||||
HIST_FILE_PATH,
|
||||
SETTINGS_DIRECTORY,
|
||||
@@ -112,6 +113,11 @@ def apply_configs(configs: dict):
|
||||
configs : dict
|
||||
The configurations.
|
||||
"""
|
||||
|
||||
# TODO: Here I'm assuming that obbff, cfg, cfg_plot and paths don't have variables
|
||||
# with the same name. If they do, then this assignment will hit the first variable
|
||||
# that matches the name.
|
||||
|
||||
if configs:
|
||||
settings = configs.get("features_settings", {})
|
||||
sync = update_sync_flag(settings)
|
||||
@@ -124,6 +130,8 @@ def apply_configs(configs: dict):
|
||||
cast_set_attr(cfg, k, v)
|
||||
elif hasattr(cfg_plot, k):
|
||||
cast_set_attr(cfg_plot, k, v)
|
||||
elif hasattr(paths, k):
|
||||
cast_set_attr(paths, k, v)
|
||||
|
||||
keys = configs.get("features_keys", {})
|
||||
if keys:
|
||||
|
||||
@@ -16,10 +16,10 @@ from dotenv import set_key
|
||||
# IMPORTATION INTERNAL
|
||||
from openbb_terminal import config_plot as cfg_plot
|
||||
from openbb_terminal import feature_flags as obbff
|
||||
from openbb_terminal.core.config import paths
|
||||
from openbb_terminal import featflags_controller as obbff_ctrl
|
||||
from openbb_terminal.core.config.paths import (
|
||||
USER_ENV_FILE,
|
||||
USER_DATA_DIRECTORY,
|
||||
USER_DATA_SOURCES_DEFAULT_FILE,
|
||||
)
|
||||
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
|
||||
@@ -28,8 +28,7 @@ from openbb_terminal.helper_funcs import (
|
||||
get_flair,
|
||||
get_user_timezone_or_invalid,
|
||||
parse_and_split_input,
|
||||
set_user_data_folder,
|
||||
)
|
||||
)
|
||||
from openbb_terminal.menu import session
|
||||
from openbb_terminal.parent_classes import BaseController
|
||||
from openbb_terminal.rich_config import console, MenuText
|
||||
@@ -124,7 +123,7 @@ class SettingsController(BaseController):
|
||||
mt.add_raw("\n")
|
||||
mt.add_param(
|
||||
"_user_data_folder",
|
||||
USER_DATA_DIRECTORY,
|
||||
paths.USER_DATA_DIRECTORY,
|
||||
)
|
||||
mt.add_raw("\n")
|
||||
mt.add_cmd("tz")
|
||||
@@ -194,6 +193,37 @@ class SettingsController(BaseController):
|
||||
auth_header=User.get_auth_header(),
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def set_path_config(name: str, value: Optional[Union[Path, str]]):
|
||||
"""Set path config attribute
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Environment variable name
|
||||
value : str
|
||||
Environment variable value
|
||||
"""
|
||||
|
||||
if User.is_guest():
|
||||
set_key(str(USER_ENV_FILE), name, str(value))
|
||||
|
||||
# Remove "OPENBB_" prefix from env_var
|
||||
if name.startswith("OPENBB_"):
|
||||
name = name[7:]
|
||||
|
||||
# Set obbff.env_var_name = not env_var_value
|
||||
setattr(paths, name, value)
|
||||
|
||||
# Send feature flag to server
|
||||
if not User.is_guest() and User.is_sync_enabled():
|
||||
patch_user_configs(
|
||||
key=name,
|
||||
value=str(value),
|
||||
type_="settings",
|
||||
auth_header=User.get_auth_header(),
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_colors(self, _):
|
||||
"""Process colors command"""
|
||||
@@ -551,9 +581,7 @@ class SettingsController(BaseController):
|
||||
console.print(
|
||||
f"User data to be saved in the default folder: '{default_path}'"
|
||||
)
|
||||
set_user_data_folder(
|
||||
self.env_file, path_folder=str(default_path)
|
||||
)
|
||||
self.set_path_config("OPENBB_USER_DATA_DIRECTORY", default_path)
|
||||
success_userdata = True
|
||||
else:
|
||||
# If the path selected does not start from the user root, give relative location from root
|
||||
@@ -567,8 +595,8 @@ class SettingsController(BaseController):
|
||||
console.print(
|
||||
f"User data to be saved in the selected folder: '{userdata_path}'"
|
||||
)
|
||||
set_user_data_folder(
|
||||
self.env_file, path_folder=userdata_path
|
||||
self.set_path_config(
|
||||
"OPENBB_USER_DATA_DIRECTORY", userdata_path
|
||||
)
|
||||
success_userdata = True
|
||||
else:
|
||||
@@ -586,14 +614,14 @@ class SettingsController(BaseController):
|
||||
console.print(
|
||||
f"[green]Folder '{userdata_path}' successfully created.[/green]"
|
||||
)
|
||||
set_user_data_folder(
|
||||
self.env_file, path_folder=userdata_path
|
||||
self.set_path_config(
|
||||
"OPENBB_USER_DATA_DIRECTORY", userdata_path
|
||||
)
|
||||
else:
|
||||
# Do not update userdata_folder path since we will keep the same as before
|
||||
console.print(
|
||||
"[yellow]User data to keep being saved in "
|
||||
+ f"the selected folder: {str(USER_DATA_DIRECTORY)}[/yellow]"
|
||||
+ f"the selected folder: {str(paths.USER_DATA_DIRECTORY)}[/yellow]"
|
||||
)
|
||||
success_userdata = True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user