summaryrefslogtreecommitdiff
path: root/main2.py
diff options
context:
space:
mode:
Diffstat (limited to 'main2.py')
-rwxr-xr-xmain2.py146
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)