summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--infos2.yaml4
-rwxr-xr-xmain2.py34
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"
diff --git a/main2.py b/main2.py
index 71a469f..5c39d9d 100755
--- a/main2.py
+++ b/main2.py
@@ -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)),