From e56aff1a5c0f0bcac6c385444043f8fadf92f271 Mon Sep 17 00:00:00 2001 From: Artur Borecki Date: Thu, 19 Mar 2026 17:53:53 +0100 Subject: [PATCH] feat(models/pages.py): add `CourseIndexPage` --- home/models/pages.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/home/models/pages.py b/home/models/pages.py index ed5613c..6854884 100644 --- a/home/models/pages.py +++ b/home/models/pages.py @@ -25,6 +25,28 @@ class HomePage(Page): content_panels = Page.content_panels + ["body"] +class CourseIndexPage(Page): + subpage_types = ["home.CoursePage"] + + def get_context(self, request): + context = super().get_context(request) + all_courses = self.get_children().live() + purchased_courses = set() + other_courses = set() + + for course in all_courses: + if course.specific._user_has_access(request.user): + purchased_courses.add(course) + else: + other_courses.add(course) + + context["purchased_courses"] = sorted( + purchased_courses, key=lambda c: c.title.lower() + ) + context["other_courses"] = sorted(other_courses, key=lambda c: c.title.lower()) + return context + + class CoursePage(Page): body = RichTextField(blank=True) course_image = models.ForeignKey( @@ -56,6 +78,7 @@ class CoursePage(Page): FieldPanel("body"), FieldPanel("allowed_groups", widget=CheckboxSelectMultiple), ] + parent_page_types = ["home.CourseIndexPage"] subpage_types = ["home.CourseModulePage"]