-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcleaning_schedule.py
89 lines (72 loc) · 2.62 KB
/
cleaning_schedule.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from collections import deque
import json
from utils import log, log_error
class CleaningSchedule:
def __init__(self, filename="cleaning_schedule.json"):
self.filename = filename
self.names = self.load_names_from_schedule()
self.weekday = self.load_detail_from_schedule('weekday')
self.interval = self.load_detail_from_schedule('interval')
self.hour = self.load_detail_from_schedule('hour')
self.minute = self.load_detail_from_schedule('minute')
def load_names_from_schedule(self):
try:
with open(self.filename, "r") as file:
schedule = json.load(file)
return deque(schedule["names"])
except FileNotFoundError:
return deque([])
def load_detail_from_schedule(self, parameter_name):
try:
with open(self.filename, "r") as file:
schedule = json.load(file)
return schedule[parameter_name]
except FileNotFoundError:
return None
def save_schedule(self, names=None, weekday=None, interval=None, hour=None, minute=None):
if names:
for name in names:
self.names.append(name.lower())
if weekday:
self.weekday = weekday
if interval:
self.interval = interval
if hour:
self.hour = hour
if minute:
self.minute = minute
schedule = {
"names": list(self.names),
"weekday": self.weekday,
"interval": self.interval,
"hour": self.hour,
"minute": self.minute
}
with open(self.filename, "w") as file:
json.dump(schedule, file)
def update_names(self, names):
for name in names:
try:
self.names.remove(name.lower())
log(f"Removed {name} from the schedule.")
except ValueError:
log_error(f"{name} is not in the schedule.")
raise NameNotFoundError(name)
schedule = {
"names": list(self.names),
"weekday": self.weekday,
"interval": self.interval,
"hour": self.hour,
"minute": self.minute
}
with open(self.filename, "w") as file:
json.dump(schedule, file)
def get_next_person(self):
next_person = self.names[0]
self.names.rotate(-1)
self.save_schedule()
return next_person.capitalize()
class NameNotFoundError(Exception):
def __init__(self, name):
self.name = name
super().__init__(f"Names not found: {', '.join(name)}")