Refreshing stale feeds for old users returning.

This commit is contained in:
Samuel Clay 2011-01-17 14:20:36 -05:00
parent 1dc86f3ae8
commit 7fdd173ac0
4 changed files with 31 additions and 3 deletions

View file

@ -1,5 +1,6 @@
import datetime
from utils import log as logging
from django.conf import settings
class LastSeenMiddleware(object):
@ -9,8 +10,11 @@ class LastSeenMiddleware(object):
and hasattr(request, 'user')
and request.user.is_authenticated()):
hour_ago = datetime.datetime.utcnow() - datetime.timedelta(minutes=60)
SUBSCRIBER_EXPIRE = datetime.datetime.utcnow() - datetime.timedelta(days=settings.SUBSCRIBER_EXPIRE)
if request.user.profile.last_seen_on < hour_ago:
logging.info(" ---> [%s] ~FG~BBRepeat visitor: ~SB%s" % (request.user, request.user.profile.last_seen_on))
if request.user.profile.last_seen_on < SUBSCRIBER_EXPIRE:
request.user.profile.refresh_stale_feeds()
request.user.profile.last_seen_on = datetime.datetime.utcnow()
request.user.profile.last_seen_ip = request.META['REMOTE_ADDR']
request.user.profile.save()

View file

@ -50,6 +50,21 @@ Sincerely,
NewsBlur""" % {'user': self.user.username, 'feeds': subs.count()}
mail_admins('New premium account', message, fail_silently=True)
def refresh_stale_feeds(self):
stale_cutoff = datetime.datetime.now() - datetime.timedelta(days=7)
stale_feeds = UserSubscription.objects.filter(user=self.user, active=True, feed__last_update__lte=stale_cutoff)
all_feeds = UserSubscription.objects.filter(user=self.user, active=True)
logging.info(" ---> [%s] ~FG~BBRefreshing stale feeds: ~SB%s/%s" % (
self.user, stale_feeds.count(), all_feeds.count()))
for sub in stale_feeds:
sub.feed.fetched_once = False
sub.feed.save()
queue_new_feeds(self.user)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)

View file

@ -1456,7 +1456,7 @@ background: transparent;
#story_pane .NB-feed-story-header-info {
font-weight: bold;
font-size: 16px;
padding: 0 200px 0 28px;
padding: 0 250px 0 28px;
background: #dadada url('../theme/images/dadada_40x100_textures_03_highlight_soft_75.png') 0 50% repeat-x;
border-bottom: 1px solid #ADADAD;
position: relative;

View file

@ -330,8 +330,17 @@ class Dispatcher:
logging.debug(u' ---> [%-30s] Fetching page' % (unicode(feed)[:30]))
page_importer = PageImporter(feed.feed_link, feed)
page_importer.fetch_page()
try:
page_importer.fetch_page()
except Exception, e:
logging.debug('[%d] ! -------------------------' % (feed_id,))
tb = traceback.format_exc()
logging.error(tb)
logging.debug('[%d] ! -------------------------' % (feed_id,))
ret_feed = FEED_ERREXC
feed.save_feed_history(550, "Page Error", tb)
fetched_feed = None
feed = self.refresh_feed(feed_id)
delta = datetime.datetime.utcnow() - start_time