diff --git a/openbb_terminal/portfolio/brokers/degiro/degiro_controller.py b/openbb_terminal/portfolio/brokers/degiro/degiro_controller.py index ce63b7fc361..ee3417652b0 100644 --- a/openbb_terminal/portfolio/brokers/degiro/degiro_controller.py +++ b/openbb_terminal/portfolio/brokers/degiro/degiro_controller.py @@ -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]): diff --git a/openbb_terminal/portfolio/brokers/degiro/degiro_model.py b/openbb_terminal/portfolio/brokers/degiro/degiro_model.py index ef42d943514..92dcfaeed4f 100644 --- a/openbb_terminal/portfolio/brokers/degiro/degiro_model.py +++ b/openbb_terminal/portfolio/brokers/degiro/degiro_model.py @@ -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 diff --git a/openbb_terminal/portfolio/brokers/degiro/degiro_view.py b/openbb_terminal/portfolio/brokers/degiro/degiro_view.py index 3c20b713ecd..730b87da39a 100644 --- a/openbb_terminal/portfolio/brokers/degiro/degiro_view.py +++ b/openbb_terminal/portfolio/brokers/degiro/degiro_view.py @@ -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)