fix: only update credentials on login (#6437)

Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
This commit is contained in:
montezdesousa
2024-05-20 14:23:19 +01:00
committed by GitHub
parent c65c4adbfb
commit 96ade73ba4
5 changed files with 16 additions and 41 deletions

View File

@@ -116,3 +116,7 @@ class Credentials(_Credentials): # type: ignore
[f"{k}: {v}" for k, v in sorted(self.model_dump(mode="json").items())]
)
)
def update(self, incoming: "Credentials"):
"""Update current credentials."""
self.__dict__.update(incoming.model_dump(exclude_none=True))

View File

@@ -50,15 +50,6 @@ class UserService(metaclass=SingletonMeta):
)
path.write_text(user_settings_json, encoding="utf-8")
@classmethod
def update_default(cls, user_settings: UserSettings) -> UserSettings:
"""Update default user settings."""
d1 = cls.read_default_user_settings().model_dump()
d2 = user_settings.model_dump() if user_settings else {}
updated = cls._merge_dicts([d1, d2])
return UserSettings.model_validate(updated)
@staticmethod
def _merge_dicts(list_of_dicts: List[Dict[str, Any]]) -> Dict[str, Any]:
"""Merge a list of dictionaries."""

View File

@@ -18,7 +18,7 @@ if TYPE_CHECKING:
from openbb_core.app.static.app_factory import BaseApp
class Account:
class Account: # noqa: D205, D400
"""/account
login
logout
@@ -123,8 +123,8 @@ class Account:
"""
self._hub_service = self._create_hub_service(email, password, pat)
incoming = self._hub_service.pull()
updated: UserSettings = UserService.update_default(incoming)
self._base_app._command_runner.user_settings = updated
self._base_app.user.profile = incoming.profile
self._base_app.user.credentials.update(incoming.credentials)
if remember_me:
Path(self._openbb_directory).mkdir(parents=False, exist_ok=True)
session_file = Path(self._openbb_directory, self.SESSION_FILE)
@@ -185,10 +185,8 @@ class Account:
)
else:
incoming = self._hub_service.pull()
updated: UserSettings = UserService.update_default(incoming)
updated.id = self._base_app._command_runner.user_settings.id
self._base_app._command_runner.user_settings = updated
self._base_app.user.profile = incoming.profile
self._base_app.user.credentials.update(incoming.credentials)
if return_settings:
return self._base_app._command_runner.user_settings
return None

View File

@@ -11,16 +11,13 @@ if TYPE_CHECKING:
from openbb_core.app.static.app_factory import BaseApp
class Coverage:
"""Coverage class.
/coverage
providers
commands
command_model
command_schemas
reference
class Coverage: # noqa: D205, D400
"""/coverage
providers
commands
command_model
command_schemas
reference
"""
def __init__(self, app: "BaseApp"):

View File

@@ -4,7 +4,6 @@ import json
import tempfile
from pathlib import Path
from openbb_core.app.model.defaults import Defaults
from openbb_core.app.service.user_service import (
UserService,
UserSettings,
@@ -47,20 +46,6 @@ def test_write_default_user_settings():
temp_path.unlink()
def test_update_default():
"""Test update default user settings."""
# Some settings
defaults_test = Defaults(routes={"test": {"test": "test"}})
other_settings = UserSettings(defaults=defaults_test)
# Update the default settings
updated_settings = UserService.update_default(other_settings)
assert "test" in updated_settings.defaults.model_dump()["routes"]
assert updated_settings.defaults.model_dump()["routes"]["test"] == {"test": "test"}
def test_merge_dicts():
"""Test merge dicts."""
result = UserService._merge_dicts( # pylint: disable=protected-access