From 06a9f950abc8f23d3e493f7ae1a241d0409c4d40 Mon Sep 17 00:00:00 2001
From: Tue Herlau <tuhe@dtu.dk>
Date: Mon, 1 Apr 2024 16:04:55 +0200
Subject: [PATCH] Project layout updates

---
 setup.py                                  |  2 +-
 src/coursebox.egg-info/PKG-INFO           |  2 +-
 src/coursebox/core/info_paths.py          | 10 +++++++---
 src/coursebox/core/projects_plagiarism.py |  1 +
 src/coursebox/material/documentation.py   | 12 ++++++++++++
 src/coursebox/setup_coursebox.py          |  2 ++
 6 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/setup.py b/setup.py
index 60825aa..36c5650 100644
--- a/setup.py
+++ b/setup.py
@@ -13,7 +13,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
 
 setuptools.setup(
     name="coursebox",
-    version="0.1.19.7",
+    version="0.1.19.11",
     author="Tue Herlau",
     author_email="tuhe@dtu.dk",
     description="A course management system currently used at DTU",
diff --git a/src/coursebox.egg-info/PKG-INFO b/src/coursebox.egg-info/PKG-INFO
index 00f24e8..a5537f7 100644
--- a/src/coursebox.egg-info/PKG-INFO
+++ b/src/coursebox.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: coursebox
-Version: 0.1.19.7
+Version: 0.1.19.11
 Summary: A course management system currently used at DTU
 Home-page: https://lab.compute.dtu.dk/tuhe/coursebox
 Author: Tue Herlau
diff --git a/src/coursebox/core/info_paths.py b/src/coursebox/core/info_paths.py
index 23306c7..042733e 100644
--- a/src/coursebox/core/info_paths.py
+++ b/src/coursebox/core/info_paths.py
@@ -14,11 +14,15 @@ def get_paths():
     # num = cd[:cd.find("public")]
     CDIR = core_conf['working_dir']
     course_number = core_conf['course_number']
+    layout = core_conf.get('directory_layout', {})
+    if layout is None:
+        layout = {}
+
 
     root_02450public = os.path.normpath(CDIR + "/../..")
-    root_02450private = os.path.normpath(root_02450public + "/../%sprivate"%num)
-    root_02450instructors = os.path.normpath(root_02450private + "/../%sinstructors"%num)
-    root_02450students = os.path.normpath(root_02450private + "/../%sstudents" % num)
+    root_02450private = os.path.normpath( layout.get('private', root_02450public + "/../%sprivate"%num  ))
+    root_02450instructors = os.path.normpath( layout.get('instructors', root_02450private + "/../%sinstructors"%num))
+    root_02450students = os.path.normpath( layout.get('students', root_02450private + "/../%sstudents" % num) )
 
     root_02450public = root_02450public.replace("\\", "/")
     root_02450private = root_02450private.replace("\\", "/")
diff --git a/src/coursebox/core/projects_plagiarism.py b/src/coursebox/core/projects_plagiarism.py
index 7dd7daf..460c931 100644
--- a/src/coursebox/core/projects_plagiarism.py
+++ b/src/coursebox/core/projects_plagiarism.py
@@ -1,3 +1,4 @@
+
 from tinydb import TinyDB, Query
 import os
 import zipfile
diff --git a/src/coursebox/material/documentation.py b/src/coursebox/material/documentation.py
index 40c0fda..7b74dd0 100644
--- a/src/coursebox/material/documentation.py
+++ b/src/coursebox/material/documentation.py
@@ -126,6 +126,7 @@ def build_sphinx_documentation(cut_files=False, open_browser=True, build_and_cop
     WEEKS = list(core_conf['weeks_all'].keys())
 
 
+
     pdfs = []
     for g in glob.glob(paths['pdf_out'] +"/handout/*.pdf"):
         dst = paths['02450public'] + "/src/docs/assets/"+os.path.basename(g)[:-4] + "-handout.pdf"
@@ -148,6 +149,16 @@ def build_sphinx_documentation(cut_files=False, open_browser=True, build_and_cop
         shutil.copy(g, dst)
         pdfs.append(dst)
 
+    for g in glob.glob(paths['02450public'] + "/pensum/*.pdf"):
+        if "02450" in g or "sutton" in g:
+            continue
+        dst = paths['02450public'] + "/src/docs/assets/" + os.path.basename(g)
+        if not os.path.isdir(os.path.dirname(dst)):
+            os.makedirs(os.path.dirname(dst))
+        shutil.copy(g, dst)
+        pdfs.append(dst)
+
+
     # Copy shared templates.
     if not os.path.isdir(paths['02450public'] + "/src/docs/source/templates_generated"):
         os.mkdir(paths['02450public'] + "/src/docs/source/templates_generated")
@@ -218,6 +229,7 @@ def build_sphinx_documentation(cut_files=False, open_browser=True, build_and_cop
 
         my_env = os.environ.copy()
         my_env['PYTHONPATH'] = (paths['02450students'] + '_complete').replace("\\", "/")
+        print("Running", cmd)
         process = run(cmd, print_output=True, log_output=True, check=False, env=my_env)
 
         """r 
diff --git a/src/coursebox/setup_coursebox.py b/src/coursebox/setup_coursebox.py
index 3b46bc8..07b8c39 100644
--- a/src/coursebox/setup_coursebox.py
+++ b/src/coursebox/setup_coursebox.py
@@ -15,6 +15,7 @@ def setup_coursebox(working_dir, course_number="02450", semester='spring', year=
     continuing_education_month = "March", post_process_info=None,
                     setup_student_files=None,
                     fix_all_shared_files=None,
+                    directory_layout=None, # Base layout of the project directories. Contains keys like public, private, students, etc.
                     **kwargs):
     funcs['setup_student_files'] = setup_student_files
     funcs['fix_all_shared_files'] = fix_all_shared_files
@@ -29,6 +30,7 @@ def setup_coursebox(working_dir, course_number="02450", semester='spring', year=
     info_paths.core_conf['continuing_education_month'] = continuing_education_month
     info_paths.core_conf['slides_shownotes'] = slides_shownotes
     info_paths.core_conf['post_process_info'] = post_process_info
+    info_paths.core_conf['directory_layout'] = directory_layout
 
     for a, val in kwargs.items():
         info_paths.core_conf[a] = val
-- 
GitLab