diff options
Diffstat (limited to 'main2.py')
| -rwxr-xr-x | main2.py | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/main2.py b/main2.py deleted file mode 100755 index 5c39d9d..0000000 --- a/main2.py +++ /dev/null @@ -1,146 +0,0 @@ -#!./env/bin/python - -import yaml, textwrap -from prettytable import PrettyTable -from datetime import datetime, timedelta - -with open("infos2.yaml", "r") as f: - _i=yaml.safe_load(f) - -#### Parsing -def parse_date(s): - return datetime.strptime(s, "%d/%m/%Y") -def parse_time(s): - return datetime.strptime(s, "%H:%M") -#### Dates -def getmonday(d): - return d - timedelta(days=d.weekday()) -def getnextmonday(d): - return getmonday(d)+timedelta(days=7) -def getnextdayn(d,n): - return (d+timedelta(days=n)) -def getweek(d): - return d.isocalendar().week -def getdayname(d): - return d.strftime("%A").lower() -#### Formatting -def gettime(d): - return d.strftime("%H:%M") -def matchrepeat(d,e): - _r=events[e]["repeat"] - if _r["every"] <= 0: - return False - delta=timedelta(days=_r["every"]) - current=events[e]["date"] - while current.date() <= sem["end"].date(): - if _r["until"] is not None and _r["until"].date()<current.date(): - break - if current.date() == d.date(): - return True - current+=delta - continue - return False -def formatevents(d): - output="" - for e in events: - _e=events[e] - if (not _e["hidden"]) and (_e["date"].date() == d.date() or matchrepeat(d, e)): - if _e["start"] is not None: - output+=gettime(_e["start"])+"-"+gettime(_e["end"])+"\n" - if _e["room"] is not None: - output+="Room: "+_e["room"]+"\n" - output+=_e["name"] - return output -def formatday(d): - return d.strftime("%b %d") - -#### Load semester -sem={ - "start": parse_date(_i["semester"]["start"]), - "end": parse_date(_i["semester"]["end"]), - "slots": {} -} -for e in _i["semester"]["slots"]: - _e=_i["semester"]["slots"][e] - sem["slots"][e]={} - for dayname in ["monday","tuesday","wednesday","thursday","friday"]: - sem["slots"][e][dayname]={ - "start": None, - "end": None, - "room": None - } - if dayname in _e.keys(): - if "start" in _e[dayname].keys(): - sem["slots"][e][dayname]["start"]=parse_time(_e[dayname]["start"]) - sem["slots"][e][dayname]["end"]=parse_time(_e[dayname]["end"]) - if "room" in _e[dayname].keys(): - sem["slots"][e][dayname]["room"]=_e[dayname]["room"] - -#### Load events -events={} -for e in _i["events"]: - _e=_i["events"][e] - events[e]={ - "type": _e["type"], - "name": _e["name"], - "date": parse_date(_e["date"]), - "repeat": { - "every": 0, - "until": None - } - } - events[e]["hidden"]=_e["hidden"] if "hidden" in _e.keys() else False - events[e]["who"]=_e["who"] if "who" in _e.keys() else None - events[e]["start"]=parse_time(_e["start"]) if "start" in _e.keys() else None - events[e]["end"]=parse_time(_e["end"]) if "end" in _e.keys() else None - events[e]["room"]=_e["room"] if "room" in _e.keys() else None - if "repeat" in _e.keys(): - events[e]["repeat"]["every"]=_e["repeat"]["every"] - events[e]["repeat"]["until"]=parse_date(_e["repeat"]["until"]) if "until" in _e["repeat"].keys() else None - if _e["type"] in sem["slots"].keys(): - dayname=getdayname(events[e]["date"]) - if events[e]["start"] is None: - events[e]["start"] = sem["slots"][_e["type"]][dayname]["start"] - if events[e]["end"] is None: - events[e]["end"] = sem["slots"][_e["type"]][dayname]["end"] - if events[e]["room"] is None: - events[e]["room"] = sem["slots"][_e["type"]][dayname]["room"] - -#### Gen semester calendar -d=getmonday(sem["start"]) -w=getweek(d) -while d<=sem["end"]: - t = PrettyTable() - t.field_names = ["Week "+str(w), "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] - t.align[t.field_names[0]]="l" - t.add_row(["", - formatday(getnextdayn(d, 0)), - formatday(getnextdayn(d, 1)), - formatday(getnextdayn(d, 2)), - formatday(getnextdayn(d, 3)), - formatday(getnextdayn(d, 4))],divider=True) - t.add_row(["", - formatevents(getnextdayn(d, 0)), - formatevents(getnextdayn(d, 1)), - formatevents(getnextdayn(d, 2)), - formatevents(getnextdayn(d, 3)), - formatevents(getnextdayn(d, 4))]) - print(t) - d=getnextmonday(d) - w+=1 - if d<sem["end"]: - print("") - -#### Gen slots tables -for s in sem["slots"]: - t = PrettyTable() - t.field_names = ["Day", "Time", "Room"] - t.align["Day"]="l" - for dayname in ["monday","tuesday","wednesday","thursday", "friday"]: - p=sem["slots"][s][dayname] - timeStr=gettime(p["start"])+"-"+gettime(p["end"]) if p["start"] is not None else "" - room=p["room"] if p["room"] is not None else "" - if timeStr != "" or room != "": - t.add_row([dayname.capitalize(),timeStr,room]) - print(s+":") - print(t) |
