Unify page feed implementations
No need for a separate class just to handle blog publish dates
This commit is contained in:
parent
7127afbc94
commit
a8cd2742ab
4 changed files with 5 additions and 31 deletions
|
@ -1,4 +1,4 @@
|
|||
from typing import Any, Optional, Type
|
||||
from typing import Any, Optional
|
||||
|
||||
from django.contrib.postgres.search import TrigramSimilarity
|
||||
from django.db import models
|
||||
|
@ -12,7 +12,6 @@ from wagtailautocomplete.edit_handlers import AutocompletePanel
|
|||
|
||||
from website.common.models import BaseContentPage, BaseListingPage
|
||||
from website.common.utils import TocEntry
|
||||
from website.common.views import ContentPageFeed
|
||||
from website.contrib.singleton_page.utils import SingletonPageCache
|
||||
|
||||
|
||||
|
@ -37,12 +36,6 @@ class BlogPostListPage(BaseListingPage):
|
|||
.order_by("-date", "title")
|
||||
)
|
||||
|
||||
@property
|
||||
def feed_class(self) -> Type[ContentPageFeed]:
|
||||
from .views import BlogPostPageFeed
|
||||
|
||||
return BlogPostPageFeed
|
||||
|
||||
@cached_property
|
||||
def tag_list_page_url(self) -> Optional[str]:
|
||||
return SingletonPageCache.get_url(BlogPostTagListPage)
|
||||
|
@ -132,12 +125,6 @@ class BlogPostTagPage(BaseListingPage):
|
|||
blog_list_page = BlogPostListPage.objects.get()
|
||||
return blog_list_page.get_listing_pages().filter(tags=self)
|
||||
|
||||
@property
|
||||
def feed_class(self) -> Type[ContentPageFeed]:
|
||||
from .views import BlogPostPageFeed
|
||||
|
||||
return BlogPostPageFeed
|
||||
|
||||
|
||||
class BlogPostCollectionListPage(BaseListingPage):
|
||||
subpage_types: list[Any] = []
|
||||
|
@ -166,9 +153,3 @@ class BlogPostCollectionPage(BaseListingPage):
|
|||
.public()
|
||||
.order_by("-date", "title")
|
||||
)
|
||||
|
||||
@property
|
||||
def feed_class(self) -> Type[ContentPageFeed]:
|
||||
from .views import BlogPostPageFeed
|
||||
|
||||
return BlogPostPageFeed
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
from datetime import datetime, time
|
||||
|
||||
from website.common.views import ContentPageFeed
|
||||
|
||||
from .models import BlogPostPage
|
||||
|
||||
|
||||
class BlogPostPageFeed(ContentPageFeed):
|
||||
def item_pubdate(self, item: BlogPostPage) -> datetime:
|
||||
return datetime.combine(item.date, time())
|
|
@ -5,6 +5,7 @@ class CustomFeed(DefaultFeed):
|
|||
"""
|
||||
A custom feed generator with additional features.
|
||||
"""
|
||||
|
||||
def __init__(self, request, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.request = request
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from datetime import datetime
|
||||
from datetime import datetime, time
|
||||
from typing import Any, Optional
|
||||
|
||||
from django.contrib.syndication.views import Feed
|
||||
|
@ -114,6 +114,8 @@ class AllPagesFeed(Feed):
|
|||
return item.get_full_url(request=self.request) + "?utm_medium=rss"
|
||||
|
||||
def item_pubdate(self, item: BasePage) -> datetime:
|
||||
if item_date := item.date:
|
||||
return datetime.combine(item_date, time())
|
||||
return item.first_published_at
|
||||
|
||||
def item_updateddate(self, item: BasePage) -> datetime:
|
||||
|
|
Loading…
Reference in a new issue