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.members.views import MemberListView
|
||||||
from mhackspace.subscriptions import views as subscription
|
from mhackspace.subscriptions import views as subscription
|
||||||
from mhackspace.base.feeds import LatestEntriesFeed
|
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.base.views import markdown_uploader
|
||||||
from mhackspace.blog.views import PostViewSet, CategoryViewSet, BlogPost, PostList
|
from mhackspace.blog.views import PostViewSet, CategoryViewSet, BlogPost, PostList
|
||||||
from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap
|
from mhackspace.blog.sitemaps import PostSitemap, CategorySitemap
|
||||||
|
@ -48,7 +48,8 @@ urlpatterns = [
|
||||||
),
|
),
|
||||||
url(r'^blog/$', PostList.as_view(), name='blog'),
|
url(r'^blog/$', PostList.as_view(), name='blog'),
|
||||||
url(r'^blog/rss/$', BlogFeed(), name='blog-rss'),
|
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_\-]+)/$', PostList.as_view(), name='blog-category'),
|
||||||
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
|
url(r'^blog/category/(?P<category>[0-9A-Za-z_\-]+)/rss/$', BlogCategoryFeed(), name='blog-category-feed'),
|
||||||
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
|
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.base.models import BannerImage
|
||||||
from mhackspace.feeds.models import Article, Feed
|
from mhackspace.feeds.models import Article, Feed
|
||||||
from mhackspace.users.models import User
|
from mhackspace.users.models import User
|
||||||
|
from mhackspace.blog.models import Category, Post
|
||||||
|
|
||||||
class ImageFixture(AutoFixture):
|
class ImageFixture(AutoFixture):
|
||||||
class Values:
|
class Values:
|
||||||
|
@ -14,6 +15,17 @@ class Command(BaseCommand):
|
||||||
help = 'Build test data for development environment'
|
help = 'Build test data for development environment'
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
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
|
# load known data
|
||||||
call_command('loaddata', 'mhackspace/users/fixtures/groups.json', verbose=0)
|
call_command('loaddata', 'mhackspace/users/fixtures/groups.json', verbose=0)
|
||||||
|
|
||||||
|
@ -21,11 +33,6 @@ class Command(BaseCommand):
|
||||||
users = AutoFixture(User)
|
users = AutoFixture(User)
|
||||||
users.create(10)
|
users.create(10)
|
||||||
|
|
||||||
feed = AutoFixture(Feed)
|
|
||||||
feed.create(10)
|
|
||||||
|
|
||||||
feeds = AutoFixture(Article)
|
|
||||||
feeds.create(10)
|
|
||||||
|
|
||||||
banners = ImageFixture(BannerImage)
|
banners = ImageFixture(BannerImage)
|
||||||
banners.create(10)
|
banners.create(10)
|
||||||
|
|
|
@ -1,13 +1,89 @@
|
||||||
|
from collections import OrderedDict
|
||||||
from django.contrib.syndication.views import Feed, add_domain
|
from django.contrib.syndication.views import Feed, add_domain
|
||||||
from django.contrib.sites.shortcuts import get_current_site
|
from django.contrib.sites.shortcuts import get_current_site
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from mhackspace.base.feeds import MediaRssFeed
|
from mhackspace.base.feeds import MediaRssFeed
|
||||||
from mhackspace.blog.models import Category, Post
|
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):
|
class BlogFeed(Feed):
|
||||||
title = "Maidstone Hackspace Blog"
|
title = "Mss.xmlaidstone Hackspace Blog"
|
||||||
link = "/blog/"
|
link = "/blog/"
|
||||||
feed_type = MediaRssFeed
|
feed_type = MediaRssFeed
|
||||||
description = "The latest blog posts and news from the Maidstone Hackspace site"
|
description = "The latest blog posts and news from the Maidstone Hackspace site"
|
||||||
|
|
Loading…
Reference in New Issue