import os
import sys
import inspect
import logging
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0, parentdir)
from .DataInterface import DataInterface
[docs]class TradingMateClient:
"""Client interface to the TradingMate business logic"""
def __init__(self, server):
self._server = server
[docs] def stop(self):
"""Handle stop event"""
self._server.close_view_event()
[docs] def get_portfolios(self):
"""Get the loaded portfolios"""
return self._server.get_portfolios()
[docs] def new_trade_event(self, new_trade, portfolio_id):
"""Push new trade notification to the server"""
self._server.new_trade_event(new_trade, portfolio_id)
[docs] def manual_refresh_event(self, portfolio_id):
"""Request server to refresh portfolio data"""
self._server.manual_refresh_event(portfolio_id)
[docs] def set_auto_refresh_event(self, value, portfolio_id):
"""Set server to automatically update data for the portfolio"""
self._server.set_auto_refresh(value, portfolio_id)
[docs] def open_portfolio_event(self, filepath):
"""Request server to open a portfolio"""
self._server.open_portfolio_event(filepath)
[docs] def save_portfolio_event(self, portfolio_id, filepath):
"""Request server to save a portfolio"""
self._server.save_portfolio_event(portfolio_id, filepath)
[docs] def get_settings_event(self):
"""Request server to fetch TradingMate settings"""
return self._server.get_settings_event()
[docs] def save_settings_event(self, settings):
"""Request server to save the settings"""
self._server.save_settings_event(settings)
[docs] def unsaved_changes(self):
"""Request if open portfolios have unsaved changes and return True"""
for pf in self._server.get_portfolios():
if pf.has_unsaved_changes():
return True
return False
[docs] def is_portfolio_auto_refreshing(self, portfolio_id):
"""Return True if portfolio has data auto refresh enabled, False otherwise"""
pf = list(
filter(lambda p: p.get_id() == portfolio_id, self._server.get_portfolios())
)
if pf is not None and len(pf) == 1:
return pf[0].get_auto_refresh_enabled()
else:
raise ValueError(f"Portfolio {portfolio_id} does not exists")
def get_app_log_filepath(self):
return self._server.get_app_log_filepath()
def get_app_version(self):
return self._server.get_app_version()
def delete_trade(self, portfolio_id, trade_id):
return self._server.delete_trade_event(portfolio_id, trade_id)
def get_market_details(self, market_ticker):
return self._server.get_market_details(market_ticker)