X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git;a=blobdiff_plain;f=store.py;h=2b5c18a1a1a65eb241af2677d322195a5202d18d;hp=f655be538b66f3d81d7fb121a0595ee4ff63ddc7;hb=90d7423eec074a0ed0af680c223180f8d7e1d4e6;hpb=83c698c925db9dcb2d347c2a625de88d85cfeb21 diff --git a/store.py b/store.py index f655be5..2b5c18a 100644 --- a/store.py +++ b/store.py @@ -15,14 +15,20 @@ class ReportStore: self.market = market self.verbose_print = verbose_print + self.print_logs = [] self.logs = [] def merge(self, other_report): self.logs += other_report.logs self.logs.sort(key=lambda x: x["date"]) + self.print_logs += other_report.print_logs + self.print_logs.sort(key=lambda x: x[0]) + def print_log(self, message): - message = str(message) + now = datetime.now() + message = "{:%Y-%m-%d %H:%M:%S}: {}".format(now, str(message)) + self.print_logs.append([now, message]) if self.verbose_print: print(message) @@ -30,12 +36,22 @@ class ReportStore: hash_["date"] = datetime.now() self.logs.append(hash_) + @staticmethod + def default_json_serial(obj): + if isinstance(obj, (datetime, date)): + return obj.isoformat() + return str(obj) + def to_json(self): - def default_json_serial(obj): - if isinstance(obj, (datetime, date)): - return obj.isoformat() - return str(obj) - return json.dumps(self.logs, default=default_json_serial, indent=" ") + return json.dumps(self.logs, default=self.default_json_serial, indent=" ") + + def to_json_array(self): + for log in (x.copy() for x in self.logs): + yield ( + log.pop("date"), + log.pop("type"), + json.dumps(log, default=self.default_json_serial, indent=" ") + ) def set_verbose(self, verbose_print): self.verbose_print = verbose_print @@ -193,6 +209,17 @@ class ReportStore: "action": action, }) + def log_market(self, args, user_id, market_id, report_path, debug): + self.add_log({ + "type": "market", + "commit": "$Format:%H$", + "args": vars(args), + "user_id": user_id, + "market_id": market_id, + "report_path": report_path, + "debug": debug, + }) + class BalanceStore: def __init__(self, market): self.market = market