feat(models/pages.py): add CourseIndexPage

This commit is contained in:
2026-03-19 17:53:53 +01:00
parent 71d4580a82
commit e56aff1a5c

View File

@@ -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"]