Merge branch 'master' into social

* master:
  Fixing icon fetching error when the page is corrupted.
  Writing a glorious hack that forces a count of unread scores.

Conflicts:
	apps/reader/models.py
	apps/rss_feeds/management/commands/refresh_feeds.py
	fabfile.py
	utils/feed_fetcher.py
This commit is contained in:
Samuel Clay 2012-04-24 17:53:41 -07:00
commit b5c5cdeda3
4 changed files with 30 additions and 17 deletions

View file

@ -179,12 +179,13 @@ class UserSubscription(models.Model):
now = datetime.datetime.utcnow()
# Use the latest story to get last read time.
if MStory.objects(story_feed_id=self.feed_id).first():
latest_story_date = MStory.objects(story_feed_id=self.feed_id).order_by('-story_date').only('story_date')[0]['story_date']\
latest_story = MStory.objects(story_feed_id=self.feed.pk).order_by('-story_date').only('story_date')
if latest_story:
latest_story_date = latest_story[0]['story_date']\
+ datetime.timedelta(seconds=1)
else:
latest_story_date = now
self.last_read_date = latest_story_date
self.mark_read_date = latest_story_date
self.unread_count_negative = 0

View file

@ -2,9 +2,11 @@ from django.core.management.base import BaseCommand
from apps.reader.models import UserSubscription
from django.conf import settings
from optparse import make_option
from django.contrib.auth.models import User
import os
import errno
import re
import datetime
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
@ -18,20 +20,25 @@ class Command(BaseCommand):
settings.LOG_TO_STREAM = True
if options['daemonize']:
daemonize()
if options['all']:
feeds = UserSubscription.objects.all()
else:
feeds = UserSubscription.objects.filter(needs_unread_recalc=True)
if options['user']:
if re.match(r"([0-9]+)", options['user']):
feeds = feeds.filter(user=int(options['user']))
users = User.objects.filter(pk=int(options['user']))
else:
feeds = feeds.filter(user__username=options['user'])
for f in feeds:
f.calculate_feed_scores(silent=options['silent'])
users = User.objects.filter(username=options['user'])
else:
users = User.objects.filter(profile__last_seen_on__gte=datetime.datetime.now()-datetime.timedelta(days=1))
user_count = users.count()
for i, u in enumerate(users):
if options['all']:
usersubs = UserSubscription.objects.filter(user=u, active=True)
else:
usersubs = UserSubscription.objects.filter(user=u, needs_unread_recalc=True)
print " ---> %s has %s feeds (%s/%s)" % (u.username, usersubs.count(), i+1, user_count)
for sub in usersubs:
sub.calculate_feed_scores(silent=options['silent'])
def daemonize():
"""

View file

@ -1220,7 +1220,9 @@ class MFeedPage(mongo.Document):
data = None
feed_page = cls.objects(feed_id=feed_id)
if feed_page:
data = feed_page[0].page_data and zlib.decompress(feed_page[0].page_data)
page_data_z = feed_page[0].page_data
if page_data_z:
data = zlib.decompress(page_data_z)
if not data:
dupe_feed = DuplicateFeed.objects.filter(duplicate_feed_id=feed_id)
@ -1228,7 +1230,9 @@ class MFeedPage(mongo.Document):
feed = dupe_feed[0].feed
feed_page = MFeedPage.objects.filter(feed_id=feed.pk)
if feed_page:
data = feed_page[0].page_data and zlib.decompress(feed_page[0].page_data)
page_data_z = feed_page[0].page_data
if page_data_z:
data = zlib.decompress(feed_page[0].page_data)
return data

View file

@ -150,7 +150,7 @@ class ProcessFeed:
self.feed.save_feed_history(self.fpf.status, "HTTP Redirect")
return FEED_ERRHTTP, ret_values
if self.fpf.status >= 400:
logging.debug(" ---> [%-30s] ~SB~FRHTTP Status code: %s.%s Checking address..." % (self.feed.title[:30], self.fpf.status))
logging.debug(" ---> [%-30s] ~SB~FRHTTP Status code: %s. Checking address..." % (self.feed.title[:30], self.fpf.status))
fixed_feed = None
if not self.feed.known_good:
fixed_feed = self.feed.check_feed_link_for_feed_address()
@ -411,7 +411,8 @@ class Dispatcher:
feed.save_page_history(550, "Page Error", tb)
fetched_feed = None
mail_feed_error_to_admin(feed, e, local_vars=locals())
feed = self.refresh_feed(feed.pk)
logging.debug(u' ---> [%-30s] ~FYFetching icon: %s' % (feed.title[:30], feed.feed_link))
icon_importer = IconImporter(feed, force=self.options['force'])
try: