From 21975ffd774595c893042a87e1df495b717b8366 Mon Sep 17 00:00:00 2001 From: Brad Miller Date: Thu, 27 Jun 2019 20:00:34 +0000 Subject: [PATCH 1/4] wip on subchapter menu --- controllers/books.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/controllers/books.py b/controllers/books.py index c7fb969ec..d5e6622ed 100644 --- a/controllers/books.py +++ b/controllers/books.py @@ -128,6 +128,16 @@ def _route_book(is_published=True, is_open=False): _os_alt_seps = list(sep for sep in [os.path.sep, os.path.altsep] if sep not in (None, '/')) +def _subchaptoc(course, chap): + res = db( (db.chapter.id == db.sub_chapters.course_id) & + (db.chapters.course_id == course ) & + (db.chapters.chapter_label == chap) ).select(db.chapters.chapter_num, + db.sub_chapters.sub_chapter_num, + db.chapters.chapter_label, + sb.sub_chapters.sub_chapter_label, + db.chapters.sub_chapter_name) + toclist = [] + # This is copied verbatim from https://github.com/pallets/werkzeug/blob/master/werkzeug/security.py#L216. def safe_join(directory, *pathnames): From 6d05f0ee8eee3a516b3092c21c778577e8ffc8a9 Mon Sep 17 00:00:00 2001 From: Brad Miller Date: Fri, 28 Jun 2019 12:05:55 +0000 Subject: [PATCH 2/4] subchapter toc fixes --- controllers/books.py | 18 ++++++++++++++---- models/db.py | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/controllers/books.py b/controllers/books.py index d5e6622ed..a621febc6 100644 --- a/controllers/books.py +++ b/controllers/books.py @@ -84,6 +84,7 @@ def _route_book(is_published=True, is_open=False): if not os.path.isfile(book_path): raise HTTP(404) response.view = book_path + chapter = os.path.split(os.path.split(book_path)[0])[1] subchapter = os.path.basename(os.path.splitext(book_path)[0]) if auth.user: @@ -121,7 +122,7 @@ def _route_book(is_published=True, is_open=False): return dict(course_name=course.course_name, base_course=base_course, is_logged_in=is_logged_in, user_id=user_id, user_email=email, is_instructor=user_is_instructor, readings=reading_list, - activity_info=json.dumps(div_counts)) + activity_info=json.dumps(div_counts), subchapter_list=_subchaptoc(base_course, chapter)) # This is copied verbatim from https://github.com/pallets/werkzeug/blob/master/werkzeug/security.py#L30. @@ -129,14 +130,23 @@ def _route_book(is_published=True, is_open=False): if sep not in (None, '/')) def _subchaptoc(course, chap): - res = db( (db.chapter.id == db.sub_chapters.course_id) & + res = db( (db.chapters.id == db.sub_chapters.chapter_id) & (db.chapters.course_id == course ) & (db.chapters.chapter_label == chap) ).select(db.chapters.chapter_num, db.sub_chapters.sub_chapter_num, db.chapters.chapter_label, - sb.sub_chapters.sub_chapter_label, - db.chapters.sub_chapter_name) + db.sub_chapters.sub_chapter_label, + db.sub_chapters.sub_chapter_name, orderby=db.sub_chapters.sub_chapter_num, + cache=(cache.ram, 3600), cacheable=True) toclist = [] + for row in res: + sc_url = "{}.html".format(row.sub_chapters.sub_chapter_label) + title = "{}.{} {}".format(row.chapters.chapter_num, + row.sub_chapters.sub_chapter_num, + row.sub_chapters.sub_chapter_name) + toclist.append(dict(subchap_uri=sc_url, title=title)) + + return toclist # This is copied verbatim from https://github.com/pallets/werkzeug/blob/master/werkzeug/security.py#L216. diff --git a/models/db.py b/models/db.py index 738883da1..e88a9ee94 100644 --- a/models/db.py +++ b/models/db.py @@ -25,7 +25,7 @@ table_migrate_prefix_test = table_migrate_prefix else: # WEB2PY_MIGRATE is either "Yes", "No", "Fake", or missing - db = DAL(settings.database_uri, fake_migrate_all=(os.environ.get("WEB2PY_MIGRATE", "Yes") == 'Fake'), + db = DAL(settings.database_uri, pool_size=30, fake_migrate_all=(os.environ.get("WEB2PY_MIGRATE", "Yes") == 'Fake'), migrate=False, migrate_enabled=(os.environ.get("WEB2PY_MIGRATE", "Yes") in ['Yes', 'Fake'])) session.connect(request, response, db, masterapp=None, migrate=table_migrate_prefix + 'web2py_sessions.table') From 8395e1eb02f5c0b61cddd888a1ebd11f8b095899 Mon Sep 17 00:00:00 2001 From: Brad Miller Date: Tue, 2 Jul 2019 22:11:25 +0000 Subject: [PATCH 3/4] make sure div_counts is initialized --- controllers/books.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/books.py b/controllers/books.py index a621febc6..c80d73539 100644 --- a/controllers/books.py +++ b/controllers/books.py @@ -86,7 +86,7 @@ def _route_book(is_published=True, is_open=False): response.view = book_path chapter = os.path.split(os.path.split(book_path)[0])[1] subchapter = os.path.basename(os.path.splitext(book_path)[0]) - + div_counts = {} if auth.user: user_id = auth.user.username email = auth.user.email From d5bf00612cfe06995409ef0611ae19e8eb9643ac Mon Sep 17 00:00:00 2001 From: Brad Miller Date: Wed, 3 Jul 2019 12:47:38 +0000 Subject: [PATCH 4/4] start_date default seems unreliable. --- controllers/ajax.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/ajax.py b/controllers/ajax.py index a99fd0743..0c10c6e57 100644 --- a/controllers/ajax.py +++ b/controllers/ajax.py @@ -552,7 +552,7 @@ def getCompletionStatus(): db.user_sub_chapter_progress.insert(user_id=auth.user.id, chapter_id = lastPageChapter, sub_chapter_id = lastPageSubchapter, - status = -1) + status = -1, start_date=datetime.datetime.utcnow()) # the chapter might exist without the subchapter result = db((db.user_chapter_progress.user_id == auth.user.id) & (db.user_chapter_progress.chapter_id == lastPageChapter)).select() if not result: