82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
|
|
import json
|
|
import datetime
|
|
class ConfigParser(object):
|
|
def __init__(self, filename):
|
|
with open(filename, "r") as f:
|
|
self.jsonContent = json.load(f)
|
|
self.events = dict()
|
|
self.settings = dict()
|
|
|
|
self.__parseSettings()
|
|
self.__parseEvents()
|
|
self.__parseModuleSettings()
|
|
|
|
def __parseModuleSettings(self):
|
|
self.modules = self.jsonContent["modules"]
|
|
|
|
def __parseSettings(self):
|
|
self.settings = self.jsonContent["settings"]
|
|
|
|
def __parseDateRange(self, val ):
|
|
_from = self.__fromisoformat(val["from"])
|
|
_to = self.__fromisoformat(val["to"])
|
|
|
|
val["from"] = _from
|
|
val["to"] = _to
|
|
|
|
def __fromisoformat(self, val):
|
|
d = val.split("-")
|
|
if len(d) == 3:
|
|
return datetime.date(year=int(d[0]), month=int(d[1]), day=int(d[2]))
|
|
elif len(d) == 2:
|
|
return datetime.date(year=self.settings["year"], month=int(d[0]), day=int(d[1]))
|
|
|
|
|
|
def __parseEvents(self):
|
|
self.events = self.jsonContent["events"]
|
|
for key, val in self.events.items():
|
|
dates = val["dates"]
|
|
for ev in dates:
|
|
self.__parseDateRange(ev)
|
|
|
|
def printEvents(self):
|
|
for key, val in self.events.items():
|
|
dates = val["dates"]
|
|
print("%s\n================" % (val["name"]) )
|
|
for ev in dates:
|
|
print("from: %s until: %s ---> %s" % (ev["from"], ev["to"], ev["name"]) )
|
|
|
|
|
|
def getEvent(self, date, eventName=None):
|
|
for key,val in self.events.items():
|
|
if eventName:
|
|
if key == eventName:
|
|
for d in val["dates"]:
|
|
_from = d["from"]
|
|
_to = d["to"]
|
|
if date >= _from and date <= _to:
|
|
return (key, d)
|
|
else:
|
|
for d in val["dates"]:
|
|
_from = d["from"]
|
|
_to = d["to"]
|
|
if date >= _from and date <= _to:
|
|
return (key, d)
|
|
|
|
return None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
c = ConfigParser("test.json")
|
|
startDate = datetime.date(2020,1,1)
|
|
for i in range(0,366):
|
|
d = startDate + datetime.timedelta(days=i)
|
|
ev = c.getEvent(d)
|
|
if ev: print(d, ev[0], ev[1]["name"])
|
|
|
|
|
|
|
|
|
|
|
|
|