diff options
Diffstat (limited to 'main2.py')
| -rwxr-xr-x | main2.py | 34 |
1 files changed, 31 insertions, 3 deletions
@@ -26,17 +26,33 @@ def getdayname(d): #### 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 (_e["weekly"] and (_e["date"].weekday()==d.weekday()) and _e["date"].date()<=d.date())): + 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={ @@ -68,13 +84,19 @@ for e in _i["events"]: "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 - events[e]["weekly"]=_e["weekly"] if "weekly" in _e.keys() else False + 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: @@ -87,11 +109,17 @@ for e in _i["events"]: #### Gen semester calendar d=getmonday(sem["start"]) w=getweek(d) -while d<sem["end"]: +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)), |
