diff --git a/src/coursebox/material/documentation.py b/src/coursebox/material/documentation.py index e5d9e26b0792151f9427c4ee69642230e60cecc6..400dd8a4f7f29107d8d268b4d937d68c1c64e6d3 100644 --- a/src/coursebox/material/documentation.py +++ b/src/coursebox/material/documentation.py @@ -92,6 +92,7 @@ def build_sphinx_documentation(cut_files=False, open_browser=True, build_and_cop x[k]['files'] = files # print(">>> k class is: ") # print(info_paths.core_conf['projects_all'][k]) + f = info_paths.core_conf['projects_all'][k]['class'].mfile() with open(f.split("_grade.py")[0], 'r') as ff: l = [l for l in ff.read().splitlines() if "(Report)" in l].pop().split("(")[0].split(" ")[-1] diff --git a/src/coursebox/material/homepage_lectures_exercises.py b/src/coursebox/material/homepage_lectures_exercises.py index 3c6d8a3829fea31387bf957ddae1e9c0940f33a7..e838cdd6511dbb24928115272b7d91a14d587659 100644 --- a/src/coursebox/material/homepage_lectures_exercises.py +++ b/src/coursebox/material/homepage_lectures_exercises.py @@ -83,7 +83,7 @@ def get_feedback_groups(): # This is really getting deprecated... PRESENTATION = 0 NOTES = 1 HANDOUT = 2 -def make_lectures(week=None, mode=0, gather_pdf_out=True, gather_sixup=True, make_quizzes=True, dosvg=False, async_pool=-1): +def make_lectures(week=None, mode=0, gather_pdf_out=True, gather_sixup=True, make_quizzes=True, dosvg=False, async_pool=-1, compress_pdf=False): """ Mode determines what is compiled into the pdfs. It can be: @@ -115,7 +115,7 @@ def make_lectures(week=None, mode=0, gather_pdf_out=True, gather_sixup=True, mak if async_pool <= 1: all_pdfs = [] for lecture in lectures_to_compile: #info['lectures']: - pdf_out = _compile_single_lecture(dosvg=dosvg, lecture=lecture, make_quizzes=make_quizzes, mode=mode) + pdf_out = _compile_single_lecture(dosvg=dosvg, lecture=lecture, make_quizzes=make_quizzes, mode=mode, compress_pdf=compress_pdf) all_pdfs.append( (lecture['number'], pdf_out)) else: # Do the async here. @@ -205,11 +205,11 @@ def _setup_lecture_info(lecture, mode, dosvg, make_quizzes): return lecture_texfile pass -def _compile_single_lecture(dosvg, lecture, make_quizzes, mode): +def _compile_single_lecture(dosvg, lecture, make_quizzes, mode, compress_pdf=False): lecture_texfile = _setup_lecture_info(lecture, mode, dosvg, make_quizzes) # Fix questions for this lecture try: - pdf_out = slider.latexmk(lecture_texfile) + pdf_out = slider.latexmk(lecture_texfile, compress_pdf=compress_pdf) except Exception as e: log = lecture_texfile[:-4] + ".log" print("loading log", log) @@ -374,7 +374,7 @@ def fix_shared(paths, output_dir, pdf2png=False,dosvg=True,verbose=False, compil ''' cache_base = output_dir from jinjafy.cache import cache_contains_file, cache_update_file - from slider.convert import svg2pdf, pdfcrop + from slider.convert import svg2pdf from slider import convert # import filecmp diff --git a/src/coursebox/material/lecture_questions.py b/src/coursebox/material/lecture_questions.py index a341461ccf01b4bf9544ce1bc42018d16452125a..07041fe82ba75c313d3891afd8c9a342eb6004c1 100644 --- a/src/coursebox/material/lecture_questions.py +++ b/src/coursebox/material/lecture_questions.py @@ -7,7 +7,8 @@ from slider import latexmk from coursebox.thtools_base import execute_command from slider.slide import slide_no_by_text, recursive_tex_apply from slider.legacy_importer import slide_to_image - +from slider.convert import pdfcrop +from slider.convert import pdf2png def lecture_question_compiler(paths, info, lecture_texfile): @@ -40,8 +41,9 @@ def lecture_question_compiler(paths, info, lecture_texfile): data = {'text': qes} jinjafy_template(data=data, file_in=lecture_latex_path +"/questions/question_partial.tex", file_out=fout_q) fout_q_pdf = qpath + "/" + latexmk(fout_q, cleanup=True) - execute_command(["pdfcrop", fout_q_pdf, fout_q_pdf]) + # execute_command(["pdfcrop", fout_q_pdf, fout_q_pdf]) + pdfcrop(fout_q_pdf, fout_q_pdf) # get "nice" .png file (or fallback) tex = recursive_tex_apply(lecture_texfile) tex = "\n".join([tex[k] for k in tex]) @@ -69,7 +71,7 @@ def lecture_question_compiler(paths, info, lecture_texfile): if dex < 0: # import subprocess # out = subprocess.run(["pdftocairo", fout_q_pdf, fout_q_pdf[:-4], "-png"], capture_output=True, encoding='utf-8') - from slider.convert import pdf2png + fout = pdf2png(fout_q_pdf) # execute_command(["pdftocairo", fout_q_pdf, fout_q_pdf[:-4], "-png"]) @@ -102,7 +104,9 @@ def lecture_question_compiler(paths, info, lecture_texfile): data = {'text': sol} jinjafy_template(data=data, file_in=lecture_latex_path +"/questions/question_partial.tex", file_out=fout_sol) fout_sol_pdf = qpath + "/" + latexmk(fout_sol) - execute_command(["pdfcrop", fout_sol_pdf, fout_sol_pdf]) + # execute_command(["pdfcrop", fout_sol_pdf, fout_sol_pdf]) + pdfcrop(fout_sol_pdf, fout_sol_pdf) + # Now make the cvx fileĆ try: diff --git a/src/coursebox/student_files/student_files.py b/src/coursebox/student_files/student_files.py index 7934aef9df80c7225a68ea5c09a60d70b8783219..7a9def42fa111bb79552a256ff75e439ba8eee0e 100644 --- a/src/coursebox/student_files/student_files.py +++ b/src/coursebox/student_files/student_files.py @@ -33,11 +33,21 @@ def setup_student_files(run_files=True, from coursebox.core.info import class_information # info = class_information() from coursebox.core.info import core_conf +<<<<<<< HEAD # if 'package' not in core_conf: if len(core_conf['projects_all']) > 0: PACKAGE = list(core_conf['projects_all'].values()).pop()['module_public'].split(".")[0] else: PACKAGE = [w for w in core_conf['weeks_all'].values() if 'module_public' in w][0]['module_public'].split(".")[0] +======= + try: + if len(core_conf['projects_all']) > 0: + PACKAGE = list(core_conf['projects_all'].values()).pop()['module_public'].split(".")[0] + else: + PACKAGE = list(core_conf['weeks_all'].values()).pop()['module_public'].split(".")[0] + except Exception as e: + PACKAGE = core_conf['package'] +>>>>>>> 5f0cf05ea2c51749713d10331847fbe062613bab if censor_files: assert not run_files, "You cannot run files while you are censoring them -- your scripts will crash. Call with run_files=False."