diff options
| author | Loïc Guégan <manzerbredes@mailbox.org> | 2025-07-26 20:40:08 +0200 |
|---|---|---|
| committer | Loïc Guégan <manzerbredes@mailbox.org> | 2025-07-26 20:40:08 +0200 |
| commit | 192906d81cb24ea33e0d26e804563467a116796b (patch) | |
| tree | 69bef8c918a74f64da03da3479ab16d73e33007a | |
| parent | 0d836e4bbdc413678a7136baedd12075d9908099 (diff) | |
Minor changes
| -rw-r--r-- | infos2.yaml | 4 | ||||
| -rwxr-xr-x | main2.py | 34 |
2 files changed, 34 insertions, 4 deletions
diff --git a/infos2.yaml b/infos2.yaml index 29d2183..3e0dc3d 100644 --- a/infos2.yaml +++ b/infos2.yaml @@ -19,7 +19,9 @@ events: name: "My event name" date: "19/11/2025" hidden: no - weekly: yes + repeat: + every: 7 + until: "26/11/2025" who: "loic" start: "10:00" end: "11:00" @@ -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)), |
