Compare commits

...

2 Commits

Author SHA1 Message Date
b4e389c106 adding persistence 2024-06-13 10:10:34 +02:00
14a85658bb add time slot class 2024-06-13 10:09:54 +02:00
3 changed files with 66 additions and 1 deletions

1
.gitignore vendored
View File

@@ -15,7 +15,6 @@ dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/

29
lib/DataStore.py Normal file
View File

@@ -0,0 +1,29 @@
from pathlib import Path
from .TimeSlot import TimeSlot
import json
class DataStore:
def __init__(self, filename: Path, create=False):
self._filename = filename
if create:
self._time_slots = []
self._write_update()
else:
with open(self._filename, "r") as f:
self._time_slots = list(json.load(f))
def _write_update(self):
with open(self._filename, "w+") as f:
json.dump(self._time_slots, f, default=vars)
def add_time_slot(self, time_slot: TimeSlot):
self._time_slots.append(time_slot)
self._write_update()
def remove_time_slot(self, time_slot: TimeSlot):
self._time_slots.remove(time_slot)
self._write_update()
def get_all_time_slots(self):
return self._time_slots[:]

37
lib/TimeSlot.py Normal file
View File

@@ -0,0 +1,37 @@
from datetime import datetime
class TimeSlot():
def __init__(self, name: str, start: datetime = datetime.now(), end: datetime = None):
self.name = name
self.start = start
if end:
self.end = end
self._creation_time = datetime.now().timestamp()
@property
def name(self):
return self._name
@name.setter
def name(self, n: str):
self._name = n
@property
def start(self):
return datetime.fromtimestamp(self._start)
@start.setter
def start(self, d: datetime):
self._start = d.timestamp()
@property
def end(self):
return datetime.fromtimestamp(self._end)
@end.setter
def end(self, d: datetime):
if d < self.start:
raise ValueError("End date must be after the start date.")
self._end = d.timestamp()