From 8fea64e3fbad35e6d84f0001d3a8c0261f2438ee Mon Sep 17 00:00:00 2001 From: Artur Borecki Date: Wed, 11 Mar 2026 12:24:47 +0100 Subject: [PATCH] feat(home/models.py): add `CoursePage` page with group restriction --- home/models.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/home/models.py b/home/models.py index 3b16323..e44db86 100644 --- a/home/models.py +++ b/home/models.py @@ -2,9 +2,39 @@ from django.db import models from wagtail.models import Page from wagtail.fields import RichTextField +from django.contrib.auth.models import Group class HomePage(Page): body = RichTextField(blank=True) content_panels = Page.content_panels + ["body"] + + +class CoursePage(Page): + body = RichTextField(blank=True) + group = models.ForeignKey( + Group, + on_delete=models.CASCADE, + null=True, + blank=True, + help_text="Only members of this group can access this course.", + ) + + content_panels = Page.content_panels + [ + "body", + "group", + ] + + def serve(self, request): + if self.group: + if ( + not request.user.is_authenticated + or self.group not in request.user.groups.all() + ): + from django.shortcuts import render + + # render 403.html + return render(request, "403.html", status=403) + + return super().serve(request)