46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from django.contrib.auth.models import Group
|
||
from django.forms import CheckboxSelectMultiple
|
||
from wagtail.admin.panels import FieldPanel
|
||
from wagtail.fields import RichTextField
|
||
from wagtail.models import Page
|
||
from wagtail.models.copying import ParentalManyToManyField
|
||
|
||
|
||
class HomePage(Page):
|
||
body = RichTextField(blank=True)
|
||
|
||
content_panels = Page.content_panels + ["body"]
|
||
|
||
|
||
class CoursePage(Page):
|
||
body = RichTextField(blank=True)
|
||
allowed_groups = ParentalManyToManyField(
|
||
Group,
|
||
related_name="course_pages",
|
||
help_text="Select a group to restrict access to this course. Non-members will be prompted to purchase the course to view modules.",
|
||
)
|
||
|
||
content_panels = Page.content_panels + [
|
||
FieldPanel("body"),
|
||
FieldPanel("allowed_groups", widget=CheckboxSelectMultiple),
|
||
]
|
||
|
||
|
||
class CourseModulePage(Page):
|
||
body = RichTextField(blank=True)
|
||
|
||
@property
|
||
def full_title(self):
|
||
if hasattr(self, "get_parent"):
|
||
parent = self.get_parent()
|
||
if parent and hasattr(parent, "specific"):
|
||
course = parent.specific
|
||
else:
|
||
course = None
|
||
|
||
if course and hasattr(course, "title"):
|
||
return f"{course.title} – {self.title}"
|
||
return self.title
|
||
|
||
content_panels = Page.content_panels + ["body"]
|