]>
us-delaporte.pagekite.me Git - dotfiles.git/blob - invoke/school/tasks.py
1 # This file is meant to sit in ~ for use from all shells.
2 from invoke
import task
3 from pandas_ods_reader
import read_ods
6 from datetime
import datetime
as dt
7 from datetime
import timedelta
10 HOME
= os
.path
.expanduser('~')
11 DATE_FORMAT
= '%Y-%m-%d'
12 TODAY
= dt
.now().strftime(DATE_FORMAT
)
14 SCHOOL_DIR
= f
'{HOME}/School/Assignments'
15 ODS_FILE
= f
'{HOME}/School/Assignments/assignments.ods'
16 BIN
= f
'{HOME}/envs/invoke/bin'
17 STUDENTS
= os
.environ
.get('STUDENTS').split('|')
20 def open_assignments(c
):
21 print("LibreOffice does not like to be launched this way.")
22 # c.run(f'libreoffice {ODS_FILE}', asynchronous=True)
27 df
= read_ods(ODS_FILE
)
32 def print_week(c
, person
, monday
):
33 print(f
'# {person}\'s Assignements for Week of {monday}')
35 day
= dt
.strptime(monday
, DATE_FORMAT
)
37 print_day(c
, person
, day
.strftime(DATE_FORMAT
))
38 day
= day
+ timedelta(days
=1)
41 def md_week(c
, person
, monday
):
42 c
.run(f
'cd {SCHOOL_DIR};{BIN}/invoke print-week {person} {monday} > {SCHOOL_DIR}/{person}.{monday}.md')
46 def show_all(c
, monday
):
47 for person
in STUDENTS
:
48 md_week(c
, person
, monday
)
49 c
.run(f
'codium {SCHOOL_DIR}/{person}.{monday}.md')
52 def html_all(c
, monday
):
53 for person
in STUDENTS
:
54 md_week(c
, person
, monday
)
55 c
.run(f
'cd {SCHOOL_DIR};{BIN}/markdown_py {person}.{monday}.md > {SCHOOL_DIR}/{person}.{monday}.html')
56 c
.run(f
'librewolf {SCHOOL_DIR}/{person}.{monday}.html', asynchronous
=True)
59 def get_todays_assignments(df
, date
, person
):
60 mine
= df
[df
['person'] == person
]
61 today
= mine
[mine
['date'] == date
]
65 def missing_on_day(c
, person
, day
):
66 df
= read_ods(ODS_FILE
)
67 today
= get_todays_assignments(df
, day
, person
)
68 for subject
in ['College Prep', 'Life Skills', 'Job Prep']:
69 if not 'Skip' in today
['subject'].values
and not subject
in today
['subject'].values
:
70 print(f
'Missing {subject} for {person} on {day}')
73 def missing(c
, monday
, person
=None):
76 for person
in STUDENTS
:
77 missing(c
, monday
, person
)
79 day
= dt
.strptime(monday
, DATE_FORMAT
)
81 missing_on_day(c
, person
, day
.strftime(DATE_FORMAT
))
82 day
= day
+ timedelta(days
=1)
85 def print_day(c
, person
, date
):
86 df
= read_ods(ODS_FILE
)
87 # df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
88 # today = df.loc(df['date'] >= '2026-01-12')
89 mine
= df
[df
['person'] == person
]
90 today
= mine
[mine
['date'] == date
]
92 weekday
= dt
.strptime(date
, DATE_FORMAT
).strftime('%A')
96 print(f
"## {person}'s Assignments for {weekday}, {date}")
98 for _
, row
in today
.iterrows():
101 print(f
'### {row["subject"]}')
106 print(f
'> Tip: {row["tip"]}')
108 if(row
['when_done']):
110 print(f
'**When done**: {row["when_done"]}')