Paginator der besser ins Design passt.

This commit is contained in:
Christian Berg
2014-12-10 00:23:36 +01:00
parent 2011d3ce25
commit 711c303f9a
75 changed files with 675 additions and 1599 deletions

View File

@@ -1,6 +1,8 @@
from django.contrib import admin
from models import Feed, FeedItem
admin.site.register(
Feed,
list_display=["title", "public_url", "last_update", 'is_functional'],

View File

@@ -1,4 +1,5 @@
import django.contrib.syndication.views
from .models import FeedItem

View File

@@ -3,9 +3,10 @@ Update feeds for Django community page. Requires Mark Pilgrim's excellent
Universal Feed Parser (http://feedparser.org)
"""
from aggregator.models import Feed
from django.core.management.base import BaseCommand
from aggregator.models import Feed
class Command(BaseCommand):
help = "Updates all RSS Feeds"

View File

@@ -5,14 +5,16 @@ Created on 05.02.2011
"""
from datetime import datetime, timedelta
import HTMLParser
import urllib2
from django.conf import settings
from django.contrib.sites.models import Site
from django.utils import timezone
from utils.html5 import models
import HTMLParser
import django.db.models
import feedparser
import urllib2
from utils.html5 import models
class FeedManager(django.db.models.Manager):
@@ -35,7 +37,7 @@ class FeedItemManager(django.db.models.Manager):
return self.select_related().filter(feed__site=site)[:max_items]
class Feed(models.Model):
class Feed(django.db.models.Model):
title = models.CharField(max_length=500)
site = models.ForeignKey(Site)
feed_url = models.URLField(unique=True, max_length=255)
@@ -51,7 +53,8 @@ class Feed(models.Model):
parsed_feed = feedparser.parse(self.feed_url)
html_parser = HTMLParser.HTMLParser()
if parsed_feed.bozo and type(parsed_feed.bozo_exception) == urllib2.URLError:
if parsed_feed.bozo and type(
parsed_feed.bozo_exception) == urllib2.URLError:
self.is_functional = False
return self.save()
@@ -68,16 +71,22 @@ class Feed(models.Model):
feed_entry.get("content", u"")
))
)
date_modified = feed_entry.get("published_parsed", parsed_feed.get("published_parsed", timezone.now))
date_modified = timezone.make_aware(datetime(*date_modified[:6]), timezone.get_current_timezone())
date_modified = feed_entry.get(
"published_parsed",
parsed_feed.get("published_parsed",
timezone.now))
date_modified = timezone.make_aware(
datetime(*date_modified[:6]),
timezone.get_current_timezone())
feed_item, updated = self.feed_items.get_or_create(guid=guid,
defaults={
'title': title,
'link': link,
'summary': summary,
'date_modified': date_modified
})
feed_item, updated = self.feed_items.get_or_create(
guid=guid,
defaults={
'title': title,
'link': link,
'summary': summary,
'date_modified': date_modified
})
feed_item.save()
self.last_update = timezone.now()
return self.save()
@@ -86,7 +95,7 @@ class Feed(models.Model):
ordering = ("title",)
class FeedItem(models.Model):
class FeedItem(django.db.models.Model):
feed = models.ForeignKey(Feed, related_name='feed_items')
title = models.CharField(max_length=500)
link = models.URLField(max_length=500)

View File

@@ -1,7 +1,9 @@
from django.contrib.sitemaps import Sitemap
from models import FeedItem
# noinspection PyMethodMayBeStatic
class FeedItemSitemap(Sitemap):
changefreq = "never"

View File

@@ -1,9 +1,9 @@
from django import template
from models import Feed
class FeedListNode(template.Node):
def __init__(self, varname):
self.varname = varname
@@ -26,5 +26,6 @@ def do_get_feed_list(parser, token):
"First argument to '%s' tag must be 'as'" % bits[0]
return FeedListNode(bits[2])
register = template.Library()
register.tag('get_feed_list', do_get_feed_list)