Skip to content
This repository has been archived by the owner on Apr 24, 2024. It is now read-only.

Commit

Permalink
Adds related course pages
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinhowbrook committed Jan 3, 2024
1 parent 7568979 commit 3119ba5
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
53 changes: 53 additions & 0 deletions tbx/courses/migrations/0003_adds_related_course_pages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Generated by Django 4.2.8 on 2024-01-03 10:18

from django.db import migrations, models
import django.db.models.deletion
import modelcluster.fields


class Migration(migrations.Migration):

dependencies = [
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
("courses", "0002_adds_course_landing_page_fields"),
]

operations = [
migrations.CreateModel(
name="RelatedCoursePage",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"sort_order",
models.IntegerField(blank=True, editable=False, null=True),
),
(
"page",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="courses.coursedetailpage",
),
),
(
"source_page",
modelcluster.fields.ParentalKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="related_course_pages",
to="wagtailcore.page",
),
),
],
options={
"ordering": ["sort_order"],
"abstract": False,
},
),
]
17 changes: 17 additions & 0 deletions tbx/courses/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.core import exceptions as django_exceptions
from django.db import models

from modelcluster import fields as modelcluster_fields
from tbx.core.utils import models as utils_models
from tbx.courses import blocks as tbx_course_blocks
from wagtail import fields as wagtail_fields
Expand Down Expand Up @@ -78,6 +79,15 @@ def get_context(self, request, *args, **kwargs):
return context


class RelatedCoursePage(wagtail_models.Orderable):
source_page = modelcluster_fields.ParentalKey(
wagtail_models.Page, related_name="related_course_pages"
)
page = models.ForeignKey("courses.CourseDetailPage", on_delete=models.CASCADE)

panels = [panels.FieldPanel("page")]


class CourseDetailPage(utils_models.SocialFields, wagtail_models.Page):
parent_page_types = ["courses.CourseLandingPage"]

Expand Down Expand Up @@ -120,6 +130,7 @@ class CourseDetailPage(utils_models.SocialFields, wagtail_models.Page):
classname="collapsible",
),
panels.FieldPanel("body"),
panels.InlinePanel("related_course_pages", label="Related courses"),
]

promote_panels = [
Expand All @@ -143,6 +154,12 @@ def clean(self):
if errors:
raise django_exceptions.ValidationError(errors)

@property
def related_courses(self):
related_course_pages = self.related_course_pages.all().select_related("page")
related_courses = [page.page for page in related_course_pages]
return related_courses

def get_context(self, request):
context = super().get_context(request)
return context
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,10 @@ <h2>

{% include_block page.body %}

{% for related_course_page in page.related_courses %}
{{ related_course_page.sessions }} {% if related_course_page.sessions and related_course_page.cost %} | {% endif %} {{ related_course_page.cost }}
{{ related_course_page.title }}
{{ related_course_page.intro|richtext }}
<a href="{% pageurl related_course_page %}">View details</a>
{% endfor %}
{% endblock %}

0 comments on commit 3119ba5

Please sign in to comment.