little refactor for degiro company news

This commit is contained in:
hjoaquim
2022-09-29 17:52:19 +01:00
parent 61d8224e97
commit ca5239fa9e
3 changed files with 66 additions and 14 deletions

View File

@@ -82,13 +82,53 @@ class DegiroController(BaseController):
prog="companynews",
)
parser.add_argument(
"isin",
"-s",
"--symbol",
type=str,
help="ISIN code of the company.",
required="-h" not in other_args,
action="store",
dest="symbol",
)
parser.add_argument(
"-l",
"--limit",
type=int,
default=10,
help="Number of news to display.",
required=False,
action="store",
dest="limit",
)
parser.add_argument(
"-o",
"--offset",
type=int,
default=0,
help="Offset of news to display.",
required=False,
action="store",
dest="offset",
)
parser.add_argument(
"-lang",
"--languages",
type=str,
default="en,fr",
help="Languages of news to display.",
required=False,
action="store",
dest="languages",
)
ns_parser = self.parse_known_args_and_warn(parser, other_args)
self.__degiro_view.companynews(ns_parser=ns_parser)
if ns_parser:
self.__degiro_view.companynews(
symbol=ns_parser.symbol,
limit=ns_parser.limit,
offset=ns_parser.offset,
languages=ns_parser.languages,
)
@log_start_end(log=logger)
def call_create(self, other_args: List[str]):

View File

@@ -177,20 +177,27 @@ class DegiroModel:
return self.__trading_api.delete_order(order_id=order_id)
@log_start_end(log=logger)
def companynews(self, isin: str) -> NewsByCompany:
def companynews(
self, symbol: str, limit: int = 10, offset: int = 0, languages: str = "en,fr"
) -> NewsByCompany:
trading_api = self.__trading_api
request = NewsByCompany.Request(
isin=isin,
limit=10,
offset=0,
languages="en,fr",
isin=symbol,
limit=limit,
offset=offset,
languages=languages,
)
# FETCH DATA
news = trading_api.get_news_by_company(
request=request,
raw=False,
)
try:
news = trading_api.get_news_by_company(
request=request,
raw=False,
)
except Exception as e:
e_str = str(e)
console.print(f"[red]{e_str}[/red]")
return
return news

View File

@@ -98,15 +98,20 @@ class DegiroView:
console.print(f"Following `Order` cancellation failed : {order_id}")
@log_start_end(log=logger)
def companynews(self, ns_parser: Namespace):
def companynews(
self, symbol: str, limit: int = 10, offset: int = 0, languages: str = "en,fr"
):
# GET ATTRIBUTES
degiro_model = self.__degiro_model
# FETCH DATA
news_by_company = degiro_model.companynews(isin=ns_parser.isin)
news_by_company = degiro_model.companynews(
symbol=symbol, limit=limit, offset=offset, languages=languages
)
# DISPLAY DATA
DegiroView.__companynews_display(news_by_company=news_by_company)
if news_by_company:
DegiroView.__companynews_display(news_by_company=news_by_company)
@staticmethod
@log_start_end(log=logger)