]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - store.py
Fix vanishing orders
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / store.py
index f655be538b66f3d81d7fb121a0595ee4ff63ddc7..b3ada4567e38a28613efd0159dafd33ece105a0d 100644 (file)
--- 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