Initial version of home page rss.xml feed

This commit is contained in:
Oliver Marks 2017-06-01 20:30:40 +01:00
parent bbcc3ff758
commit eac7ee9211
3 changed files with 92 additions and 8 deletions

View File

@ -15,7 +15,7 @@ from mhackspace.contact.views import contact
from mhackspace.members.views import MemberListView
from mhackspace.subscriptions import views as subscription
from mhackspace.base.feeds import LatestEntriesFeed
from mhackspace.blog.feeds import BlogFeed, BlogCategoryFeed
from mhackspace.blog.feeds import RssFeed, BlogFeed, BlogCategoryFeed
from mhackspace.base.views import markdown_uploader
from mhackspace.blog.views import PostViewSet, CategoryViewSet, BlogPost, PostList
from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap
@ -48,7 +48,8 @@ urlpatterns = [
),
url(r'^blog/$', PostList.as_view(), name='blog'),
url(r'^blog/rss/$', BlogFeed(), name='blog-rss'),
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogPost.as_view(), name='blog-item'),
url(r'^rss.xml$', RssFeed(), name='main-rss'),
url(r'^blog/(?P<slug>[0-9A-Za-z_\-]+)/$', BlogPost.as_view, name='blog-item'),
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/$', PostList.as_view(), name='blog-category'),
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},

View File

@ -5,6 +5,7 @@ from django.core.management import call_command
from mhackspace.base.models import BannerImage
from mhackspace.feeds.models import Article, Feed
from mhackspace.users.models import User
from mhackspace.blog.models import Category, Post
class ImageFixture(AutoFixture):
class Values:
@ -14,6 +15,17 @@ class Command(BaseCommand):
help = 'Build test data for development environment'
def handle(self, *args, **options):
feeds = AutoFixture(Article)
feeds.create(10)
feed = AutoFixture(Feed)
feed.create(10)
post = AutoFixture(Post)
post.create(10)
categorys = AutoFixture(Category)
categorys.create(10)
# load known data
call_command('loaddata', 'mhackspace/users/fixtures/groups.json', verbose=0)
@ -21,11 +33,6 @@ class Command(BaseCommand):
users = AutoFixture(User)
users.create(10)
feed = AutoFixture(Feed)
feed.create(10)
feeds = AutoFixture(Article)
feeds.create(10)
banners = ImageFixture(BannerImage)
banners.create(10)

View File

@ -1,13 +1,89 @@
from collections import OrderedDict
from django.contrib.syndication.views import Feed, add_domain
from django.contrib.sites.shortcuts import get_current_site
from django.utils import timezone
from mhackspace.base.feeds import MediaRssFeed
from mhackspace.blog.models import Category, Post
from mhackspace.feeds.models import Article # as ArticleFeed
class RssFeed(Feed):
title = "Maidstone Hackspace News"
link = "/"
feed_type = MediaRssFeed
description = "The latest blog posts and news from the Maidstone Hackspace site"
def get_feed(self, obj, request):
self.current_site = get_current_site(request)
return super(RssFeed, self).get_feed(obj, request)
def items(self, category):
items = []
# for item in Post.objects.all():
for item in Post.objects.select_related('author').filter(
active=True,
members_only=False):
img = '/static/images/card.png'
if item.image:
img = item.image.home.url
items.append({
'title': item.title,
'description': item.description,
'author': item.author,
'pubdate': item.published_date,
'updated': item.updated_date,
'image': img})
for item in Article.objects.select_related('feed').all():
img = '/static/images/card.png'
if item.image:
img = item.image.home.url
items.append({
'title': item.title,
'description': item.description,
'author': item.feed.author,
'pubdate': item.date,
'updated': item.date,
'image': img})
items.sort(key=lambda r: r.get('pubdate'))
return items
def item_title(self, post):
return post.get('title')
def item_description(self, post):
return post.get('description')
def item_author_name(self, post):
return post.get('author')
def item_link(self, post):
return 'link'
def item_categories(self, post):
return ''
def item_pubdate(self, post):
return post.get('pubdate')
def item_updateddate(self, post):
return post.get('updated')
def item_extra_kwargs(self, post):
return {
'thumbnail_url': add_domain(
domain=self.current_site.domain,
url=post.get('image'),
secure=True),
'thumbnail_width': 100,
'thumbnail_height': 100,
}
class BlogFeed(Feed):
title = "Maidstone Hackspace Blog"
title = "Mss.xmlaidstone Hackspace Blog"
link = "/blog/"
feed_type = MediaRssFeed
description = "The latest blog posts and news from the Maidstone Hackspace site"