X-Git-Url: http://git.veekun.com/zzz-spline-frontpage.git/blobdiff_plain/9ea92c689c57bd114c09147238dd3f478c1b05c6..refs/tags/veekun-promotions/2011041201:/splinext/frontpage/sources.py diff --git a/splinext/frontpage/sources.py b/splinext/frontpage/sources.py index a65e3e8..c4c2c54 100644 --- a/splinext/frontpage/sources.py +++ b/splinext/frontpage/sources.py @@ -56,7 +56,7 @@ class Source(object): The template will be passed one parameter: the update object, ``update``. """ - def __init__(self, title, icon, link, limit=None, max_age=None): + def __init__(self, config, title, icon, link, limit=None, max_age=None): self.title = title self.icon = icon self.link = link @@ -97,6 +97,8 @@ class CachedSource(Source): and the results are cached. ``poll`` then returns the contents of the cache. + ``_poll`` may return None, in which case the cache will be left unchanged. + You must define a ``_cache_key`` method that returns a key uniquely identifying this object. Your key will be combined with the class name, so it only needs to be unique for that source, not globally. @@ -122,7 +124,8 @@ class CachedSource(Source): return updates = self._poll(self.limit, self.max_age) - cache.get_cache('spline-frontpage')[self.cache_key()] = updates + if updates is not None: + cache.get_cache('spline-frontpage')[self.cache_key()] = updates return @@ -166,7 +169,7 @@ class FeedSource(CachedSource): if feed.bozo and isinstance(feed.bozo_exception, URLError): # Feed is DOWN. Bail here; otherwise, old entries might be lost # just because, say, Bulbanews is down yet again - raise feed.bozo_exception + return None if not self.title: self.title = feed.feed.title @@ -193,6 +196,11 @@ class FeedSource(CachedSource): # If there be a summary, cheerfully trust that it's actually a # summary content = entry.summary + elif 'content' in entry and \ + len(entry.content[0].value) <= self.SUMMARY_LENGTH: + + # Full content is short; use as-is! + content = entry.content[0].value elif 'content' in entry: # Full content is way too much, especially for my giant blog posts. # Cut this down to some arbitrary number of characters, then feed