Feat: planner generate tasks all by themselves
This commit is contained in:
parent
c89959673b
commit
abd517b339
@ -1,9 +1,43 @@
|
||||
from bopytex.tasks import Task, activate_corr_on, compile_pdf, generate, join_pdfs
|
||||
import bopytex.planner.naming as naming
|
||||
from bopytex.planner.exceptions import PlannerMissingOption
|
||||
import csv
|
||||
|
||||
|
||||
def build_subject_list_from_infos(infos: list[dict]) -> list[dict]:
|
||||
subjects = []
|
||||
digit = len(str(len(infos)))
|
||||
for i, infos in enumerate(infos):
|
||||
subjects.append({"number": str(i + 1).zfill(digit), **infos})
|
||||
return subjects
|
||||
|
||||
|
||||
def build_subject_list_from_qty(qty: int) -> list[dict]:
|
||||
subjects = []
|
||||
digit = len(str(qty))
|
||||
for i in range(qty):
|
||||
subjects.append({"number": str(i + 1).zfill(digit)})
|
||||
return subjects
|
||||
|
||||
|
||||
def default_planner(options: dict) -> list[Task]:
|
||||
pass
|
||||
try:
|
||||
students_csv = options["students_csv"]
|
||||
|
||||
except KeyError:
|
||||
try:
|
||||
quantity_subjects = options["quantity_subjects"]
|
||||
except KeyError:
|
||||
raise PlannerMissingOption("students_csv or quantity_subjects is required")
|
||||
else:
|
||||
options["subjects"] = build_subject_list_from_qty(qty=quantity_subjects)
|
||||
|
||||
else:
|
||||
with open(students_csv, "r") as csv_file:
|
||||
infos = csv.DictReader(csv_file)
|
||||
options["subjects"] = build_subject_list_from_infos(infos)
|
||||
|
||||
return default_tasks_builder(options)
|
||||
|
||||
|
||||
def default_tasks_builder(
|
||||
|
@ -1,9 +1,23 @@
|
||||
from bopytex.tasks import Task, activate_corr_on, compile_pdf, generate, join_pdfs
|
||||
import bopytex.planner.naming as naming
|
||||
import os
|
||||
|
||||
|
||||
def list_files(dir=".", accept=lambda _: True, reject=lambda _: False):
|
||||
files = []
|
||||
for file in os.listdir(dir):
|
||||
if accept(file) and not reject(file):
|
||||
files.append(file)
|
||||
return files
|
||||
|
||||
|
||||
def only_corr_planner(options: dict) -> list[Task]:
|
||||
pass
|
||||
sources = list_files(
|
||||
accept=lambda x: x.endswith(".tex"),
|
||||
reject=lambda x: x.startswith("tpl_"),
|
||||
)
|
||||
options["sources"] = sources
|
||||
return only_corr_tasks_builder(options)
|
||||
|
||||
|
||||
def only_corr_tasks_builder(
|
||||
|
Loading…
Reference in New Issue
Block a user