-
Notifications
You must be signed in to change notification settings - Fork 0
/
TermHandler.py
92 lines (66 loc) · 2.49 KB
/
TermHandler.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
85
86
87
88
89
90
from datetime import *
class Term:
__instantiated = False
def __init__(self, term_start, term_end, holidays_start, holidays_end, day_offs=None):
if not self.instantiated():
self.instantiate()
self.term_start = term_start
self.term_end = term_end
self.holidays_start = holidays_start
self.holidays_end = holidays_end
self.day_offs = day_offs
self.observers = []
# self.display_term()
else:
print('Updating...')
self.update_term(term_start, term_end, holidays_start, holidays_end)
# self.notify_observers()
@classmethod
def instantiated(cls):
return cls.__instantiated
@classmethod
def instantiate(cls):
# print('Instantiating ' + str(cls))
cls.__instantiated = True
def add_observer(self, observer):
self.observers.append(observer)
def push_update(self):
for observer in self.observers:
observer.update()
def update_term(self, term_start, term_end, holidays_start, holidays_end, day_offs=None):
# TODO: Loop through db and update records that have changed.
# for arg in args:
# TODO: strategy design pattern method for field update instead.
# print('Implementation...')
if self.term_start != term_start:
self.term_start = term_start
if self.term_end != term_end:
self.term_end = term_end
if self.holidays_start != holidays_start:
self.holidays_start = holidays_start
if self.holidays_end != holidays_end:
self.holidays_end = holidays_end
if self.day_offs != day_offs:
self.day_offs = day_offs
def display_term(self):
print('Semester starts: {}\nSemester ends: {}\nHolidays start: {}\nHolidays end: {}'
.format(self.term_start, self.term_end, self.holidays_start, self.holidays_end))
def return_term_start(self):
return self.term_start
def return_term_end(self):
return self.term_end
def return_holidays_start(self):
return self.holidays_start
def return_holidays_end(self):
return self.holidays_end
def return_day_offs(self):
return self.day_offs
# def make(self, day_from, day_to):
# day_from = day_to
#
# def __call__(self, *args, **kwargs):
# print('Call method ran')
class SummerTerm(Term):
pass
class WinterTerm(Term):
pass