Diverse Code Cleanups

*Code wurde PEP-8 gerecht formatiert
* Kleine Fehler die der PyCharm Inspector beanstandet wurden korrigiert
This commit is contained in:
Christian Berg
2014-11-26 16:04:52 +01:00
committed by Christian Berg
parent f34281089d
commit 86a0db050d
76 changed files with 619 additions and 528 deletions

View File

@@ -1,7 +1,8 @@
from django.contrib import admin
from models import Feed, FeedItem
admin.site.register(Feed,
admin.site.register(
Feed,
list_display=["title", "public_url", "last_update", 'is_functional'],
list_filter=["is_functional"],
ordering=["title"],
@@ -9,7 +10,8 @@ admin.site.register(Feed,
list_per_page=500,
)
admin.site.register(FeedItem,
admin.site.register(
FeedItem,
list_display=['title', 'feed', 'date_modified'],
list_filter=['feed'],
search_fields=['feed__title', 'feed__public_url', 'title'],

View File

@@ -2,12 +2,13 @@ import django.contrib.syndication.views
from .models import FeedItem
# noinspection PyMethodMayBeStatic
class LatestFeedItems(django.contrib.syndication.views.Feed):
link = "http://aol.animanga.at/"
description = "Aktuelle Nachrichten aus der Austrian Otaku League"
title = "AOL - Newsfeed"
def items(self, obj):
def items(self):
return FeedItem.objects.get_recent_items()
def item_title(self, item):

View File

@@ -6,53 +6,14 @@ Universal Feed Parser (http://feedparser.org)
from aggregator.models import Feed
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = "Updates all RSS Feeds"
def parse_feed(self, feed, verbose=True):
parsed_feed = feedparser.parse(feed.feed_url)
html_parser = HTMLParser.HTMLParser()
for entry in parsed_feed:
title = entry.title.encode(parsed_feed.encoding, "xmlcharrefreplace")
guid = entry.get("id", entry.link).encode(parsed_feed.encoding, "xmlcharrefreplace")
link = entry.link.encode(parsed_feed.encoding, "xmlcharrefreplace")
if verbose:
print '>' , title
if not guid:
guid = link
if hasattr(entry, "summary"):
content = entry.summary
elif hasattr(entry, "content"):
content = entry.content[0].value
elif hasattr(entry, "description"):
content = entry.description
else:
content = u""
content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
try:
if entry.has_key('modified_parsed'):
date_modified = datetime.fromtimestamp(time.mktime(entry.modified_parsed))
elif parsed_feed.feed.has_key('modified_parsed'):
date_modified = datetime.fromtimestamp(time.mktime(parsed_feed.feed.modified_parsed))
elif parsed_feed.has_key('modified'):
date_modified = datetime.fromtimestamp(time.mktime(parsed_feed.modified))
else:
date_modified = datetime.now()
except TypeError:
date_modified = datetime.now()
try:
feed.feeditem_set.get(guid=guid)
except FeedItem.DoesNotExist:
feed.feeditem_set.create(title=title, link=link, summary=content, guid=guid, date_modified=date_modified)
def handle(self, *args, **options):
verbose = int(options['verbosity']) > 0
for feed in Feed.objects.filter(is_functional=True):
if (verbose):
if verbose:
print
print "%s - URL: %s" % (feed.title, feed.feed_url)
print '=' * 80

View File

@@ -1,8 +1,8 @@
'''
"""
Created on 05.02.2011
@author: christian
'''
"""
from datetime import datetime, timedelta
from django.conf import settings
@@ -14,8 +14,8 @@ import django.db.models
import feedparser
import urllib2
class FeedManager(django.db.models.Manager):
class FeedManager(django.db.models.Manager):
def active(self):
site = settings.SITE_ID
feeds = self.filter(is_functional=True, site=site)
@@ -28,12 +28,13 @@ class FeedManager(django.db.models.Manager):
feed.parse()
return feeds
class FeedItemManager(django.db.models.Manager):
class FeedItemManager(django.db.models.Manager):
def recent_items(self, max_items=10, site=None):
site = site or settings.SITE_ID
return self.select_related().filter(feed__site=site)[:max_items]
class Feed(models.Model):
title = models.CharField(max_length=500)
site = models.ForeignKey(Site)
@@ -61,19 +62,22 @@ class Feed(models.Model):
link = feed_entry.link
guid = feed_entry.get("id", link)
summary = html_parser.unescape(feed_entry.get("summary",
feed_entry.get("description", feed_entry.get("content", u""))
))
summary = html_parser.unescape(
feed_entry.get("summary", feed_entry.get(
"description",
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())
feed_item, updated = self.feed_items.get_or_create(guid=guid,
defaults={
'title': title,
'link': link,
'summary': summary,
'date_modified': date_modified
})
defaults={
'title': title,
'link': link,
'summary': summary,
'date_modified': date_modified
})
feed_item.save()
self.last_update = timezone.now()
return self.save()

View File

@@ -1,6 +1,8 @@
from django.contrib.sitemaps import Sitemap
from models import FeedItem
# noinspection PyMethodMayBeStatic
class FeedItemSitemap(Sitemap):
changefreq = "never"
priority = 0.5
@@ -9,4 +11,4 @@ class FeedItemSitemap(Sitemap):
return FeedItem.objects.get_recent_items()
def lastmod(self, obj):
return obj.date_modified
return obj.date_modified

View File

@@ -1,5 +1,5 @@
from django import template
from aggregator.models import Feed
from models import Feed
class FeedListNode(template.Node):
@@ -12,6 +12,7 @@ class FeedListNode(template.Node):
return ''
# noinspection PyUnusedLocal
def do_get_feed_list(parser, token):
"""
{% get_feed_list as feed_list %}