summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormontezdesousa <79287829+montezdesousa@users.noreply.github.com>2023-05-31 11:42:56 +0100
committerGitHub <noreply@github.com>2023-05-31 10:42:56 +0000
commit76fcaf77daea26bbd4a4adf9330f2434d7092d42 (patch)
treebb91117096ab6b91d25a945913537d6cfe12a27f
parent1b5c05460bc8a415ccb2e8c00e75608b9838f5c4 (diff)
Upload routine to hub on stop (#5077)
* upload routine to hub on stop * write cassette * write cassette * remove .openb from name --------- Co-authored-by: James Maslek <jmaslek11@gmail.com>
-rw-r--r--openbb_terminal/account/account_controller.py2
-rw-r--r--openbb_terminal/core/session/hub_model.py2
-rw-r--r--openbb_terminal/parent_classes.py27
-rw-r--r--tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[AAPL].yaml11602
-rw-r--r--tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[FCX].yaml6726
-rw-r--r--tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[TSLA].yaml15278
-rw-r--r--tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[].yaml4
-rw-r--r--tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[asdf&-$].yaml4
-rw-r--r--tests/openbb_terminal/common/txt/test_ultima_newsmonitor_view/test_display_news[AAPL].txt54
-rw-r--r--tests/openbb_terminal/common/txt/test_ultima_newsmonitor_view/test_display_news[FCX].txt41
-rw-r--r--tests/openbb_terminal/common/txt/test_ultima_newsmonitor_view/test_display_news[TSLA].txt43
11 files changed, 17198 insertions, 16585 deletions
diff --git a/openbb_terminal/account/account_controller.py b/openbb_terminal/account/account_controller.py
index b788e6f9aac..72c5903bba1 100644
--- a/openbb_terminal/account/account_controller.py
+++ b/openbb_terminal/account/account_controller.py
@@ -331,7 +331,7 @@ class AccountController(BaseController):
else:
if ns_parser:
routine = read_routine(file_name=" ".join(ns_parser.file))
- if routine:
+ if routine is not None:
description = " ".join(ns_parser.description)
name = (
diff --git a/openbb_terminal/core/session/hub_model.py b/openbb_terminal/core/session/hub_model.py
index bbadd9a9d0a..1167f9b551a 100644
--- a/openbb_terminal/core/session/hub_model.py
+++ b/openbb_terminal/core/session/hub_model.py
@@ -402,7 +402,7 @@ def upload_routine(
description: str = "",
routine: str = "",
override: bool = False,
- base_url=BASE_URL,
+ base_url: str = BASE_URL,
timeout: int = TIMEOUT,
) -> Optional[requests.Response]:
"""Send a routine to the server.
diff --git a/openbb_terminal/parent_classes.py b/openbb_terminal/parent_classes.py
index a0691a149fe..ece1a7e9f14 100644
--- a/openbb_terminal/parent_classes.py
+++ b/openbb_terminal/parent_classes.py
@@ -25,7 +25,9 @@ from rich.markdown import Markdown
import openbb_terminal.core.session.local_model as Local
from openbb_terminal.core.completer.choices import build_controller_choice_map
from openbb_terminal.core.config.paths import HIST_FILE_PATH
+from openbb_terminal.core.session import hub_model as Hub
from openbb_terminal.core.session.current_user import get_current_user, is_local
+from openbb_terminal.core.session.routines_handler import read_routine
from openbb_terminal.cryptocurrency import cryptocurrency_helpers
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
from openbb_terminal.decorators import log_start_end
@@ -692,6 +694,31 @@ class BaseController(metaclass=ABCMeta):
f"[green]Your routine has been recorded and saved here: {routine_file}[/green]\n"
)
+ if not is_local():
+ routine = read_routine(file_name=routine_file)
+ if routine is not None:
+ name = SESSION_RECORDED_NAME.split(sep=".openbb", maxsplit=-1)[0]
+ response = Hub.upload_routine(
+ auth_header=current_user.profile.get_auth_header(),
+ name=name,
+ routine=routine,
+ )
+ if response is not None and response.status_code == 409:
+ i = console.input(
+ "A routine with the same name already exists, "
+ "do you want to replace it? (y/n): "
+ )
+ console.print("")
+ if i.lower() in ["y", "yes"]:
+ response = Hub.upload_routine(
+ auth_header=current_user.profile.get_auth_header(),
+ name=name,
+ routine=routine,
+ override=True,
+ )
+ else:
+ console.print("[info]Aborted.[/info]")
+
# Clear session to be recorded again
RECORD_SESSION = False
SESSION_RECORDED = list()
diff --git a/tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[AAPL].yaml b/tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[AAPL].yaml
index ed63cab613f..440271ca4e4 100644
--- a/tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[AAPL].yaml
+++ b/tests/openbb_terminal/common/cassettes/test_ultima_newsmonitor_view/test_display_news[AAPL].yaml
@@ -9,7 +9,7 @@ interactions:
Connection:
- keep-alive
User-Agent:
- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:86.0) Gecko/20100101 Firefox/86.0
+ - Mozilla/5.0 (Windows NT 10.0; WOW64; rv:86.0) Gecko/20100101 Firefox/86.0
method: GET
uri: https://api.ultimainsights.ai/v1/supportedTickers
response:
@@ -58,7 +58,7 @@ interactions:
Content-Type:
- text/html; charset=utf-8
Date:
- - Thu, 25 May 2023 17:35:54 GMT
+ - Mon, 29 May 2023 17:46:12 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
@@ -76,7 +76,7 @@ interactions:
Connection:
- keep-alive
User-Agent:
- - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:83.0) Gecko/20100101 Firefox/83.0
+ - Mozilla/5.0 (Windows NT 10.0; WOW64; rv:86.0) Gecko/20100101 Firefox/86.0
method: GET
uri: https://api.ultimainsights.ai/v1/supportedTickers
response:
@@ -125,7 +125,7 @@ interactions:
Content-Type:
- text/html; charset=utf-8
Date:
- - Thu, 25 May 2023 17:35:54 GMT
+ - Mon, 29 May 2023 17:46:12 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
@@ -143,7 +143,7 @@ interactions:
Connection:
- keep-alive
User-Agent:
- - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:86.1) Gecko/20100101 Firefox/86.1
+ - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:86.1) Gecko/20100101 Firefox/86.1
method: GET
uri: https://api.ultimainsights.ai/v1/getCompanyInfo/AAPL
response:
@@ -163,7 +163,7 @@ interactions:
Content-Type:
- text/html; charset=utf-8
Date:
- - Thu, 25 May 2023 17:35:54 GMT
+ - Mon, 29 May 2023 17:46:12 GMT
Server:
- nginx/1.18.0 (Ubuntu)
Transfer-Encoding:
@@ -191,327 +191,325 @@ interactions:
response:
body:
string: !!binary |
- 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