From fb44600ca200f430641f15bf2b9eb8c411a073dc Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Thu, 25 Aug 2022 00:27:31 +0100 Subject: [PATCH] Add more fields to LMOTFY serializer --- website/api/serializers.py | 17 +++++++++++++---- website/api/views.py | 6 ++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/website/api/serializers.py b/website/api/serializers.py index 611088e..2ebe8c5 100644 --- a/website/api/serializers.py +++ b/website/api/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from wagtail.models import Page -from website.blog.models import BlogPostListPage +from website.blog.models import BlogPostPage class PageLinkSerializer(serializers.ModelSerializer): @@ -17,10 +17,19 @@ class PageLinkSerializer(serializers.ModelSerializer): class LMOTFYSerializer(serializers.ModelSerializer): full_url = serializers.SerializerMethodField() + image = serializers.SerializerMethodField() class Meta: - model = BlogPostListPage - fields = read_only_fields = ["full_url", "title", "summary"] + model = BlogPostPage + fields = read_only_fields = ["full_url", "title", "summary", "image", "date"] - def get_full_url(self, page: Page) -> str: + def get_full_url(self, page: BlogPostPage) -> str: return page.get_full_url(request=self.context["request"]) + + def get_image(self, page: BlogPostPage) -> str: + hero_image_url = page.hero_image_url + + if isinstance(hero_image_url, str) and hero_image_url[0] == "/": + return self.context["request"].build_absolute_uri(hero_image_url) + + return hero_image_url diff --git a/website/api/views.py b/website/api/views.py index 97f5936..b56c122 100644 --- a/website/api/views.py +++ b/website/api/views.py @@ -6,7 +6,7 @@ from rest_framework.views import APIView from wagtail.models import Page from wagtail.query import PageQuerySet -from website.blog.models import BlogPostListPage +from website.blog.models import BlogPostPage from . import filters, serializers from .pagination import CustomPageNumberPagination @@ -45,4 +45,6 @@ class LMOTFYAPIView(ListAPIView): pagination_class = CustomPageNumberPagination def get_queryset(self) -> PageQuerySet: - return BlogPostListPage.objects.live().only("id", "url_path", "title", "body") + return BlogPostPage.objects.live().select_related( + "hero_image", "hero_unsplash_photo" + )