-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprepare_courses.py
More file actions
40 lines (30 loc) · 917 Bytes
/
prepare_courses.py
File metadata and controls
40 lines (30 loc) · 917 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""
Takes a file preprocessed by preprocess_teachers_and_courses.py
Outputs a file ready for importing into Moodle:
Admin->Cours->Modifier les cours en lots
"""
import argparse
import polars as pl
import structlog
from preprocess_teachers_and_courses import (
COURSE_CATEGORY_PATH,
COURSE_FULLNAME,
COURSE_SHORTNAME,
)
log = structlog.get_logger()
def to_courses(src: pl.DataFrame) -> pl.DataFrame:
res = src.select([COURSE_SHORTNAME, COURSE_FULLNAME, COURSE_CATEGORY_PATH])
res = res.sort(by=COURSE_SHORTNAME)
log.info(
"done",
num_courses=len(res),
)
return res
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("preprocessed")
parser.add_argument("output")
args = parser.parse_args()
preprocessed = pl.read_csv(args.preprocessed)
courses = to_courses(preprocessed)
courses.write_csv(args.output)