Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Generated by Django 6.0.6 on 2026-07-15 00:16

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("news", "0057_alter_pressindex_faqs"),
]

operations = [
migrations.AddField(
model_name="newsarticle",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="newsarticle",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="newsarticle",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="newsarticle",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="newsarticle",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
]
5 changes: 4 additions & 1 deletion news/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from wagtail.images.api.fields import ImageRenditionField
from openstax.api_fields import ExpandedRichTextField
from wagtail.models import Site
from wagtail_periodic_review.models import PeriodicReviewMixin

from modelcluster.fields import ParentalKey
from modelcluster.contrib.taggit import ClusterTaggableManager
Expand Down Expand Up @@ -250,7 +251,7 @@ class NewsArticleRelatedPage(Orderable):
related_page = models.ForeignKey('wagtailcore.Page', on_delete=models.CASCADE, related_name='+')


class NewsArticle(FrontendPreviewMixin, Page):
class NewsArticle(FrontendPreviewMixin, PeriodicReviewMixin, Page):
date = models.DateField("Post date")
heading = models.CharField(max_length=250, help_text="Heading displayed on website")
subheading = models.CharField(max_length=250, blank=True, null=True)
Expand Down Expand Up @@ -429,6 +430,8 @@ def search_content_type_names(self):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels

api_fields = [
APIField('date'),
APIField('title'),
Expand Down
1 change: 1 addition & 0 deletions openstax/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@
'wagtail.sites',
'wagtail.api.v2',
'wagtail.contrib.settings',
'wagtail_periodic_review',
]

####################
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# Generated by Django 6.0.6 on 2026-07-15 00:16

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("pages", "0194_alter_assignable_faqs_alter_faq_questions_and_more"),
]

operations = [
migrations.AddField(
model_name="accessibility",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="accessibility",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="accessibility",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="accessibility",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="accessibility",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
migrations.AddField(
model_name="generalpage",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="generalpage",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="generalpage",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="generalpage",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="generalpage",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
migrations.AddField(
model_name="licensing",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="licensing",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="licensing",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="licensing",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="licensing",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
migrations.AddField(
model_name="privacypolicy",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="privacypolicy",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="privacypolicy",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="privacypolicy",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="privacypolicy",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
migrations.AddField(
model_name="termsofservice",
name="current_version_compiled_by",
field=models.CharField(blank=True, max_length=255, verbose_name="current version compiled by"),
),
migrations.AddField(
model_name="termsofservice",
name="current_version_ref",
field=models.CharField(blank=True, max_length=20, verbose_name="current version ref"),
),
migrations.AddField(
model_name="termsofservice",
name="custom_review_frequency",
field=models.PositiveIntegerField(editable=False, null=True),
),
migrations.AddField(
model_name="termsofservice",
name="last_review_date",
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name="termsofservice",
name="next_review_date",
field=models.DateField(editable=False, null=True),
),
]
5 changes: 4 additions & 1 deletion pages/models/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from wagtail.fields import StreamField
from wagtail.models import Orderable, Page
from wagtail.api import APIField
from wagtail_periodic_review.models import PeriodicReviewMixin

from openstax.preview import FrontendPreviewMixin

Expand Down Expand Up @@ -170,7 +171,7 @@ def get_url_parts(self, *args, **kwargs):
return site_id, site_root_url, '/{}'.format(self.slug)


class GeneralPage(FrontendPreviewMixin, Page):
class GeneralPage(FrontendPreviewMixin, PeriodicReviewMixin, Page):
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('tagline', blocks.CharBlock(classname="full title")),
Expand Down Expand Up @@ -224,4 +225,6 @@ def get_url_parts(self, *args, **kwargs):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels


17 changes: 13 additions & 4 deletions pages/models/legal.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from wagtail.fields import RichTextField
from wagtail.models import Page
from wagtail.api import APIField
from wagtail_periodic_review.models import PeriodicReviewMixin

from openstax.api_fields import ExpandedRichTextField
from openstax.preview import FrontendPreviewMixin
Expand All @@ -13,7 +14,7 @@



class TermsOfService(FrontendPreviewMixin, Page):
class TermsOfService(FrontendPreviewMixin, PeriodicReviewMixin, Page):
intro_heading = models.CharField(max_length=255)
terms_of_service_content = RichTextField()
promote_image = models.ForeignKey(
Expand Down Expand Up @@ -47,13 +48,15 @@ class TermsOfService(FrontendPreviewMixin, Page):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels

template = 'page.html'

parent_page_types = ['pages.RootPage']
max_count = 1


class Accessibility(FrontendPreviewMixin, Page):
class Accessibility(FrontendPreviewMixin, PeriodicReviewMixin, Page):
intro_heading = models.CharField(max_length=255)
accessibility_content = RichTextField()
promote_image = models.ForeignKey(
Expand Down Expand Up @@ -87,13 +90,15 @@ class Accessibility(FrontendPreviewMixin, Page):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels

template = 'page.html'

parent_page_types = ['pages.RootPage']
max_count = 1


class Licensing(FrontendPreviewMixin, Page):
class Licensing(FrontendPreviewMixin, PeriodicReviewMixin, Page):
intro_heading = models.CharField(max_length=255)
licensing_content = RichTextField()
promote_image = models.ForeignKey(
Expand Down Expand Up @@ -127,13 +132,15 @@ class Licensing(FrontendPreviewMixin, Page):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels

template = 'page.html'

parent_page_types = ['pages.RootPage']
max_count = 1


class PrivacyPolicy(FrontendPreviewMixin, Page):
class PrivacyPolicy(FrontendPreviewMixin, PeriodicReviewMixin, Page):
intro_heading = models.CharField(max_length=255)
privacy_content = RichTextField()
promote_image = models.ForeignKey(
Expand Down Expand Up @@ -167,6 +174,8 @@ class PrivacyPolicy(FrontendPreviewMixin, Page):
FieldPanel('promote_image')
]

settings_panels = PeriodicReviewMixin.review_panels + Page.settings_panels

template = 'page.html'

parent_page_types = ['pages.RootPage']
Expand Down
1 change: 1 addition & 0 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@ wagtail-autocomplete==0.12.0
wagtail-color-panel>=1.8.1,<1.9.0
wagtail-html-editor==1.0.1
wagtail-modeladmin==2.4.0
wagtail-periodic-review==0.5.0
wagtail-transfer==0.11
whitenoise==6.12.0