summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoïc Guégan <manzerbredes@mailbox.org>2025-07-25 11:42:24 +0200
committerLoïc Guégan <manzerbredes@mailbox.org>2025-07-25 11:42:24 +0200
commit243e1ab99e00c22bf6d568e26f8123dac0243120 (patch)
tree4017dcbf3a5028c14c08633846796015067f793f
parentad22cd561910a4da6fd4d8e7383d3b00e526c289 (diff)
Minor changes
-rw-r--r--infos.yaml41
-rwxr-xr-xmain.py138
2 files changed, 107 insertions, 72 deletions
diff --git a/infos.yaml b/infos.yaml
index cf166a3..fd19652 100644
--- a/infos.yaml
+++ b/infos.yaml
@@ -5,23 +5,30 @@ semester:
end: "15/12/2025"
output:
- show_events: yes
- show_lecturers: yes
- show_assigments: yes
- show_dates: yes
- show_weeks: yes
- semester_dates_as_events: no # Display semester start/end in events
- defrag: yes # Skip empty rows
date_format: "%b %d"
- text_wrap: 15
- min_col_width: 12
- week_line_skip: 1 # Number of line to skip between weeks
- labels:
- events: "Others"
- lectures: "Lectures"
- assignments: "Assignments"
- dates: "Dates"
- weeks: "Week {}"
+ tables:
+ calendar:
+ hidden: no
+ show_events: yes
+ show_lecturers: yes
+ show_assignments: yes
+ show_dates: yes
+ show_weeks: yes
+ semester_dates_as_events: no # Display semester start/end in events
+ defrag: yes # Skip empty rows
+ text_wrap: 15
+ min_col_width: 12
+ week_line_skip: 1 # Number of line to skip between weeks
+ labels:
+ events: "Others"
+ lectures: "Lectures"
+ assignments: "Assignments"
+ dates: "Dates"
+ weeks: "Week {}"
+ deadlines:
+ hidden: no
+ msg_handout: "Mandatory assignment {} handout"
+ msg_deadline: "Mandatory assignment {} deadline"
events:
1:
@@ -32,7 +39,7 @@ events:
name: "Exam"
date: "03/12/2025"
-assigments:
+assignments:
1:
start: "01/09/2025"
end: "17/09/2025"
diff --git a/main.py b/main.py
index b3ce9fd..e70e2b1 100755
--- a/main.py
+++ b/main.py
@@ -19,9 +19,9 @@ def formatday(d):
return d.strftime(i["output"]["date_format"])
def getassign(d):
val=""
- for a in i["assigments"]:
- start=parse_date(i["assigments"][a]["start"])
- end=parse_date(i["assigments"][a]["end"])
+ for a in i["assignments"]:
+ start=parse_date(i["assignments"][a]["start"])
+ end=parse_date(i["assignments"][a]["end"])
if d>=start and d<=end:
if len(val)>0:
val+="/"
@@ -31,9 +31,9 @@ def getlecture(d):
for l in i["lectures"]:
date=parse_date(i["lectures"][l]["date"])
if d==date:
- text=textwrap.fill(i["lectures"][l]["name"],i["output"]["text_wrap"])
- if i["output"]["show_lecturers"]:
- text+="\n"+textwrap.fill("("+i["lectures"][l]["who"]+")",i["output"]["text_wrap"])
+ text=textwrap.fill(i["lectures"][l]["name"],o["text_wrap"])
+ if o["show_lecturers"]:
+ text+="\n"+textwrap.fill("("+i["lectures"][l]["who"]+")",o["text_wrap"])
return text
return ""
def getevents(d):
@@ -46,58 +46,86 @@ def getevents(d):
if len(val)>0:
val+=","
val+=str(i["events"][e]["name"])
- return textwrap.fill(val,i["output"]["text_wrap"])
+ return textwrap.fill(val,o["text_wrap"])
def add_row(t,row):
- if not i["output"]["defrag"] or any(len(x) > 0 for x in row[1:]):
+ if not o["defrag"] or any(len(x) > 0 for x in row[1:]):
t.add_row(row,divider=True)
return 1
return 0
-sstart=parse_date(i["semester"]["start"])
-send=parse_date(i["semester"]["end"])
-d=sstart
-w=d.isocalendar().week
-if i["output"]["semester_dates_as_events"]:
- i["events"]["sstart_098888986"]={} # Add random numbers to avoid clash with users entries
- i["events"]["sstart_098888986"]["name"]="Semester starts"
- i["events"]["sstart_098888986"]["date"]=i["semester"]["start"]
- i["events"]["send_098888986"]={}
- i["events"]["send_098888986"]["name"]="Semester ends"
- i["events"]["send_098888986"]["date"]=i["semester"]["end"]
-while d <= send:
- t = PrettyTable(min_width=i["output"]["min_col_width"])
- week=i["output"]["labels"]["weeks"].format(w) if i["output"]["show_weeks"] else ""
- t.field_names = [week, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
- rcount=0
- if i["output"]["show_dates"]:
- add_row(t,[i["output"]["labels"]["dates"],
- formatday(getnextdayn(d, 0)),
- formatday(getnextdayn(d, 1)),
- formatday(getnextdayn(d, 2)),
- formatday(getnextdayn(d, 3)),
- formatday(getnextdayn(d, 4))])
- if i["output"]["show_assigments"]:
- rcount+=add_row(t,[i["output"]["labels"]["assignments"],
- getassign(getnextdayn(d, 0)),
- getassign(getnextdayn(d, 1)),
- getassign(getnextdayn(d, 2)),
- getassign(getnextdayn(d, 3)),
- getassign(getnextdayn(d, 4))])
- rcount+=add_row(t,[i["output"]["labels"]["lectures"],
- getlecture(getnextdayn(d, 0)),
- getlecture(getnextdayn(d, 1)),
- getlecture(getnextdayn(d, 2)),
- getlecture(getnextdayn(d, 3)),
- getlecture(getnextdayn(d, 4))])
- if i["output"]["show_events"]:
- rcount+=add_row(t,[i["output"]["labels"]["events"],
- getevents(getnextdayn(d, 0)),
- getevents(getnextdayn(d, 1)),
- getevents(getnextdayn(d, 2)),
- getevents(getnextdayn(d, 3)),
- getevents(getnextdayn(d, 4))])
+if not i["output"]["tables"]["calendar"]["hidden"]:
+ sstart=parse_date(i["semester"]["start"])
+ send=parse_date(i["semester"]["end"])
+ d=sstart
+ w=d.isocalendar().week
+ o=i["output"]["tables"]["calendar"]
+ if o["semester_dates_as_events"]:
+ i["events"]["sstart_098888986"]={} # Add random numbers to avoid clash with users entries
+ i["events"]["sstart_098888986"]["name"]="Semester starts"
+ i["events"]["sstart_098888986"]["date"]=i["semester"]["start"]
+ i["events"]["send_098888986"]={}
+ i["events"]["send_098888986"]["name"]="Semester ends"
+ i["events"]["send_098888986"]["date"]=i["semester"]["end"]
+ while d <= send:
+ t = PrettyTable(min_width=o["min_col_width"])
+ week=o["labels"]["weeks"].format(w) if o["show_weeks"] else ""
+ t.field_names = [week, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
+ t.align[week]="l"
+ rcount=0
+ if o["show_dates"]:
+ add_row(t,[o["labels"]["dates"],
+ formatday(getnextdayn(d, 0)),
+ formatday(getnextdayn(d, 1)),
+ formatday(getnextdayn(d, 2)),
+ formatday(getnextdayn(d, 3)),
+ formatday(getnextdayn(d, 4))])
+ if o["show_assignments"]:
+ rcount+=add_row(t,[o["labels"]["assignments"],
+ getassign(getnextdayn(d, 0)),
+ getassign(getnextdayn(d, 1)),
+ getassign(getnextdayn(d, 2)),
+ getassign(getnextdayn(d, 3)),
+ getassign(getnextdayn(d, 4))])
+ rcount+=add_row(t,[o["labels"]["lectures"],
+ getlecture(getnextdayn(d, 0)),
+ getlecture(getnextdayn(d, 1)),
+ getlecture(getnextdayn(d, 2)),
+ getlecture(getnextdayn(d, 3)),
+ getlecture(getnextdayn(d, 4))])
+ if o["show_events"]:
+ rcount+=add_row(t,[o["labels"]["events"],
+ getevents(getnextdayn(d, 0)),
+ getevents(getnextdayn(d, 1)),
+ getevents(getnextdayn(d, 2)),
+ getevents(getnextdayn(d, 3)),
+ getevents(getnextdayn(d, 4))])
+ print(t)
+ for j in range(0,o["week_line_skip"]):
+ print("")
+ d=getnextmonday(d)
+ w+=1
+
+if not i["output"]["tables"]["deadlines"]["hidden"]:
+ # Count weeks
+ days={}
+ for a in i["assignments"]:
+ start=parse_date(i["assignments"][a]["start"])
+ end=parse_date(i["assignments"][a]["end"])
+ if start not in days.keys():
+ days[start]=list()
+ if end not in days.keys():
+ days[end]=list()
+ days[start].append((a,"start"))
+ days[end].append((a,"end"))
+ # Build table
+ t = PrettyTable()
+ t.field_names = ["Week", "Date", "Assignment"]
+ for d in sorted(days.keys()):
+ for (a,b) in days[d]:
+ if b=="start":
+ msg=i["output"]["tables"]["deadlines"]["msg_handout"].format(a)
+ else:
+ msg=i["output"]["tables"]["deadlines"]["msg_deadline"].format(a)
+ t.add_row([d.isocalendar().week,formatday(d),msg])
+ t.align["Assignment"] = "l"
print(t)
- for j in range(0,i["output"]["week_line_skip"]):
- print("")
- d=getnextmonday(d)
- w+=1