feature: save datetime object as private in MinerData, and parse datetime in ISO format along with a timestamp.

This commit is contained in:
Upstream Data
2024-05-01 08:57:02 -06:00
parent b7a81097a4
commit a0a1b68f68

View File

@@ -67,7 +67,9 @@ class MinerData:
""" """
ip: str ip: str
datetime: datetime = None _datetime: datetime = field(repr=False, default=None)
datetime: str = field(init=False)
timestamp: int = field(init=False)
uptime: int = None uptime: int = None
mac: str = None mac: str = None
model: str = None model: str = None
@@ -115,7 +117,7 @@ class MinerData:
return {k: v for (k, v) in x if not k.startswith("_")} return {k: v for (k, v) in x if not k.startswith("_")}
def __post_init__(self): def __post_init__(self):
self.datetime = datetime.now(timezone.utc).astimezone() self._datetime = datetime.now(timezone.utc).astimezone()
def get(self, __key: str, default: Any = None): def get(self, __key: str, default: Any = None):
try: try:
@@ -290,6 +292,22 @@ class MinerData:
def efficiency(self, val): def efficiency(self, val):
pass pass
@property
def datetime(self): # noqa - Skip PyCharm inspection
return self._datetime.isoformat()
@datetime.setter
def datetime(self, val):
pass
@property
def timestamp(self): # noqa - Skip PyCharm inspection
return int(time.mktime(self._datetime.timetuple()))
@timestamp.setter
def timestamp(self, val):
pass
def asdict(self) -> dict: def asdict(self) -> dict:
return asdict(self, dict_factory=self.dict_factory) return asdict(self, dict_factory=self.dict_factory)
@@ -307,9 +325,7 @@ class MinerData:
Returns: Returns:
A JSON version of this class. A JSON version of this class.
""" """
data = self.asdict() return json.dumps(self.as_dict())
data["datetime"] = str(int(time.mktime(data["datetime"].timetuple())))
return json.dumps(data)
def as_csv(self) -> str: def as_csv(self) -> str:
"""Get this dataclass as CSV. """Get this dataclass as CSV.
@@ -318,7 +334,6 @@ class MinerData:
A CSV version of this class with no headers. A CSV version of this class with no headers.
""" """
data = self.asdict() data = self.asdict()
data["datetime"] = str(int(time.mktime(data["datetime"].timetuple())))
errs = [] errs = []
for error in data["errors"]: for error in data["errors"]:
errs.append(error["error_message"]) errs.append(error["error_message"])