]> us-delaporte.pagekite.me Git - dotfiles.git/blob - invoke/school/tasks.py
Update school tasks
[dotfiles.git] / 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
4 import pandas as pd
5
6 from datetime import datetime as dt
7 from datetime import timedelta
8 import os
9
10 HOME = os.path.expanduser('~')
11 DATE_FORMAT = '%Y-%m-%d'
12 TODAY = dt.now().strftime(DATE_FORMAT)
13
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('|')
18
19 @task
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)
23
24
25 @task
26 def dump_ods(c):
27 df = read_ods(ODS_FILE)
28 print(df)
29
30
31 @task
32 def print_week(c, person, monday):
33 print(f'# {person}\'s Assignements for Week of {monday}')
34
35 day = dt.strptime(monday, DATE_FORMAT)
36 for i in range(0,5):
37 print_day(c, person, day.strftime(DATE_FORMAT))
38 day = day + timedelta(days=1)
39
40 @task
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')
43
44
45 @task
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')
50
51 @task
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)
57
58
59 def get_todays_assignments(df, date, person):
60 mine = df[df['person'] == person]
61 today = mine[mine['date'] == date]
62 return today
63
64 @task
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}')
71
72 @task
73 def missing(c, monday, person=None):
74
75 if not person:
76 for person in STUDENTS:
77 missing(c, monday, person)
78 else:
79 day = dt.strptime(monday, DATE_FORMAT)
80 for i in range(0,5):
81 missing_on_day(c, person, day.strftime(DATE_FORMAT))
82 day = day + timedelta(days=1)
83
84 @task
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]
91
92 weekday = dt.strptime(date, DATE_FORMAT).strftime('%A')
93
94 print()
95 print()
96 print(f"## {person}'s Assignments for {weekday}, {date}")
97
98 for _, row in today.iterrows():
99 print()
100 print()
101 print(f'### {row["subject"]}')
102 print()
103 print(row['task'])
104 if(row['tip']):
105 print()
106 print(f'> Tip: {row["tip"]}')
107
108 if(row['when_done']):
109 print()
110 print(f'**When done**: {row["when_done"]}')
111
112 @task
113 def files(c):
114 c.run('dolphin .')
115
116