diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index ca7bc66c4..00b6515e5 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -1,4 +1,5 @@ from django.db import models +from django.db import IntegrityError from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.cache import cache @@ -88,21 +89,21 @@ class Feed(models.Model): if existing_story is None: pub_date = datetime.datetime.timetuple(story.get('published')) # logging.debug('- New story: %s %s' % (pub_date, story.get('title'))) - + s = Story(story_feed = self, story_date = story.get('published'), story_title = story.get('title'), story_content = story_content, story_author = story.get('author'), story_permalink = story.get('link'), - story_guid = story.get('id') + story_guid = story.get('id') or story.get('link') ) try: ret_values[ENTRY_NEW] += 1 s.save(force_insert=True) - except: + except IntegrityError, e: ret_values[ENTRY_ERR] += 1 - pass + logging.error('Saving new story, IntegrityError: %s - %s: %s' % (self.feed_title, story.get('title'), e)) elif existing_story and story_has_changed: # update story logging.debug('- Updated story in feed (%s - %s): %s / %s' % (self.feed_title, story.get('title'), len(existing_story['story_content']), len(story_content))) @@ -127,13 +128,14 @@ class Feed(models.Model): story_original_content = original_content, story_author = story.get('author'), story_permalink = story.get('link'), - story_guid = story.get('id') + story_guid = story.get('id') or story.get('link') ) try: ret_values[ENTRY_UPDATED] += 1 s.save(force_update=True) - except: - pass + except IntegrityError, e: + ret_values[ENTRY_ERR] += 1 + logging.error('Saving updated story, IntegrityError: %s - %s' % (self.feed_title, story.get('title'))) else: ret_values[ENTRY_SAME] += 1 # logging.debug("Unchanged story: %s " % story.get('title')) diff --git a/media/css/reader.css b/media/css/reader.css index f1ba2ef7b..8bb2f6059 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -77,6 +77,8 @@ a img { text-decoration: none; color: #272727; line-height: 1.3em; + height: 1.2em; + overflow: hidden; } #feed_list .feed.no_unread_items .feed_title { diff --git a/media/js/newsblur/reader.js b/media/js/newsblur/reader.js index 0f43b7c5a..94fc75f3d 100644 --- a/media/js/newsblur/reader.js +++ b/media/js/newsblur/reader.js @@ -141,6 +141,14 @@ $(document).bind('keydown', { combi: 'up', disableInInput: true }, function(e) { e.preventDefault(); self.show_next_story(-1); + }); + $(document).bind('keydown', { combi: 'j', disableInInput: true }, function(e) { + e.preventDefault(); + self.show_next_story(-1); + }); + $(document).bind('keydown', { combi: 'k', disableInInput: true }, function(e) { + e.preventDefault(); + self.show_next_story(1); }); $(document).bind('keydown', { combi: 'left', disableInInput: true }, function(e) { e.preventDefault(); @@ -723,7 +731,7 @@ open_story_link: function(story_id, $st) { var story = this.model.get_story(story_id); - window.open(story['story_permalink'], '_blank'); + window.open(unescape(story['story_permalink']), '_blank'); window.focus(); }, diff --git a/utils/feed_fetcher.py b/utils/feed_fetcher.py index d91d9bbe8..e0318a029 100644 --- a/utils/feed_fetcher.py +++ b/utils/feed_fetcher.py @@ -91,7 +91,7 @@ class ProcessFeed: logging.debug(u'[%d] Processing %s' % (self.feed.id, self.feed.feed_title)) - + if hasattr(self.fpf, 'status'): if self.options['verbose']: logging.debug(u'[%d] HTTP status %d: %s' % (self.feed.id,