Initial version of home page rss.xml feed
This commit is contained in:
parent
bbcc3ff758
commit
eac7ee9211
|
@ -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},
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue