Skip to content

Commit

Permalink
Merge pull request #6245 from cfpb/feature/list-view-preview
Browse files Browse the repository at this point in the history
Add support for previewing blog posts in list view
  • Loading branch information
chosak committed Jun 18, 2024
2 parents 2cab236 + b035d44 commit 628c227
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
13 changes: 13 additions & 0 deletions cfgov/v1/jinja2/v1/blog/blog_page_list_preview.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{% extends "v1/layouts/base.html" %}

{% import 'v1/includes/organisms/post-preview.html' as preview %}

{% block content %}
<div class="wrapper content_wrapper">
<div class="content_main">
<div class="block block--sub">
{{ preview.render( post ) }}
</div>
</div>
</div>
{% endblock %}
24 changes: 24 additions & 0 deletions cfgov/v1/models/blog_page.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from django.template.response import TemplateResponse

from wagtail import blocks
from wagtail.admin.panels import FieldPanel
from wagtail.fields import StreamField
Expand Down Expand Up @@ -39,6 +41,28 @@ def get_context(self, request, *args, **kwargs):

return context

@property
def preview_modes(self):
return super().preview_modes + [
("list_view", "List view"),
]

def serve_preview(self, request, mode_name):
if mode_name != "list_view":
return super().serve_preview(request, mode_name)

from v1.serializers import FilterPageSerializer

serializer = FilterPageSerializer(self, context={"request": request})

return TemplateResponse(
request,
"v1/blog/blog_page_list_preview.html",
{
"post": serializer.data,
},
)


class LegacyBlogContent(BlogContent):
content = blocks.RawHTMLBlock(
Expand Down
15 changes: 15 additions & 0 deletions cfgov/v1/tests/models/test_blog_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,18 @@ def test_page_includes_rss_feed_of_parent(self):

response = self.client.get("/test/test/")
self.assertContains(response, 'href="/test/feed/')

def test_preview_modes(self):
page = BlogPage(title="test")
self.assertIn("list_view", dict(page.preview_modes))

def render_preview(self, mode_name=None):
page = BlogPage(title="test")
request = RequestFactory().get("/")
return page.serve_preview(request, mode_name=mode_name)

def test_render_preview(self):
self.assertNotContains(self.render_preview(), "o-post-preview")

def test_render_preview_list_view(self):
self.assertContains(self.render_preview("list_view"), "o-post-preview")

0 comments on commit 628c227

Please sign in to comment.