Files
OpenBB/openbb_terminal/cryptocurrency/overview/rekt_view.py
Colin Delahunty 5bc7bc070e Tests over API Best Practices (#2344)
* Started new tests

* Added special function

* Improved dict

* Finished new test

* Got bad functions to 75

* Got bad func to 73

* Bad func down to 60

* Bad func down to 50

* Bad func down to 35

* Got bad func to 30

* No more bad functions

* Added tests

* Added fix

* Fixed some tests

* Fixed some tests

* Fixed some tests

* Fixed some tests

* Added tests to CI

* Fixed CI tests

* Fixed CI tests

* Imrproved CI tests

* Fixed reports

* Fixed reports

* Added stuff

* Removed CI

* Fixed

* Fixed some typing'

Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
2022-09-22 22:31:46 +01:00

77 lines
2.0 KiB
Python

"""Rekt view"""
import logging
import os
from openbb_terminal.cryptocurrency.overview import rekt_model
from openbb_terminal.decorators import log_start_end
from openbb_terminal.helper_funcs import (
export_data,
lambda_long_number_format,
print_rich_table,
)
from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_crypto_hacks(
limit: int = 15,
sortby: str = "Platform",
ascend: bool = False,
slug: str = "polyntwork-rekt",
export: str = "",
) -> None:
"""Display list of major crypto-related hacks. If slug is passed
individual crypto hack is displayed instead of list of crypto hacks
[Source: https://rekt.news]
Parameters
----------
slug: str
Crypto hack slug to check (e.g., polynetwork-rekt)
limit: int
Number of hacks to search
sortby: str
Key by which to sort data {Platform,Date,Amount [$],Audit,Slug,URL}
ascend: bool
Flag to sort data ascending
export : str
Export dataframe data to csv,json,xlsx file
"""
if slug:
text = rekt_model.get_crypto_hack(slug)
if text:
console.print(text)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ch",
text,
)
else:
df = rekt_model.get_crypto_hacks(sortby, ascend)
if df.empty:
console.print("\nError in rekt request\n")
else:
df["Amount [$]"] = df["Amount [$]"].apply(
lambda x: lambda_long_number_format(x)
)
df["Date"] = df["Date"].dt.date
print_rich_table(
df.head(limit),
headers=list(df.columns),
floatfmt=".1f",
show_index=False,
title="Major Crypto Hacks",
)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ch",
df,
)