add deserialization of TimeSlot

This commit is contained in:
2024-06-13 10:21:19 +02:00
parent b4e389c106
commit 0abf886d11
2 changed files with 25 additions and 7 deletions

View File

@@ -7,13 +7,24 @@ class DataStore:
def __init__(self, filename: Path, create=False): def __init__(self, filename: Path, create=False):
self._filename = filename self._filename = filename
if create: if create:
# Store emtpty list
self._time_slots = [] self._time_slots = []
self._write_update() self._write_update()
else: else:
# Load dicts from file
with open(self._filename, "r") as f: with open(self._filename, "r") as f:
self._time_slots = list(json.load(f)) self._time_slots = list(json.load(f))
# Convert dicts into TimeSlot objects
def deserialize(d: dict) -> TimeSlot:
ts = TimeSlot.__new__(TimeSlot) # Create a new, empty instance
ts.__dict__.update(d)
return ts
self._time_slots = [deserialize(d) for d in self._time_slots]
def _write_update(self): def _write_update(self):
"""Saves the updates made to the DataStore object to disk."""
with open(self._filename, "w+") as f: with open(self._filename, "w+") as f:
json.dump(self._time_slots, f, default=vars) json.dump(self._time_slots, f, default=vars)

21
main.py
View File

@@ -1,12 +1,19 @@
#!/usr/bin/python3 #!/usr/bin/python3
import argparse import argparse
from lib.DataStore import DataStore
parser = argparse.ArgumentParser(description='Time tracker') from lib.TimeSlot import TimeSlot
parser.add_argument('command', type=str, help='Manage time slots.', choices=['start', 'stop', 'add', 'ps', 'ls'])
parser.add_argument('-b', '--begin', type=str, help="The start time of a time slot.")
parser.add_argument('-e', '--end', type=str, help="The end time of a time slot.")
args = parser.parse_args()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Time tracker')
parser.add_argument('command', type=str, help='Manage time slots.', choices=['start', 'stop', 'add', 'ps', 'ls'])
parser.add_argument('-b', '--begin', type=str, help="The start time of a time slot.")
parser.add_argument('-e', '--end', type=str, help="The end time of a time slot.")
args = parser.parse_args()
ds = DataStore("data.json")
if args.command == "ls":
print(ds.get_all_time_slots())