Fixing errors around a user trying to open a feed that has been de-duped and lost. The server now finds the de-duped feed and sends it back.

This commit is contained in:
Samuel Clay 2010-10-25 20:20:59 -04:00
parent 10f58f8608
commit 7b4060a384
5 changed files with 40 additions and 10 deletions

View file

@ -1,5 +1,6 @@
import datetime
from django.db import models
from django.db import IntegrityError
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.core.mail import mail_admins
@ -26,8 +27,11 @@ class Profile(models.Model):
subs = UserSubscription.objects.filter(user=self.user)
for sub in subs:
sub.active = True
sub.save()
sub.feed.setup_feed_for_premium_subscribers()
try:
sub.save()
sub.feed.setup_feed_for_premium_subscribers()
except IntegrityError:
pass
logging.info(' ---> [%s] NEW PREMIUM ACCOUNT! WOOHOO!!! %s subscriptions!' % (self.user.username, subs.count()))
message = """Woohoo!

View file

@ -35,6 +35,10 @@ class UserSubscription(models.Model):
def __unicode__(self):
return '[' + self.feed.feed_title + '] '
def save(self, *args, **kwargs):
if self.feed:
super(UserSubscription, self).save(*args, **kwargs)
def mark_feed_read(self):
now = datetime.datetime.utcnow()
if MStory.objects(story_feed_id=self.feed.pk).first():
@ -53,7 +57,6 @@ class UserSubscription(models.Model):
def calculate_feed_scores(self, silent=False, stories_db=None):
UNREAD_CUTOFF = datetime.datetime.utcnow() - datetime.timedelta(days=settings.DAYS_OF_UNREAD)
now = datetime.datetime.utcnow()
if self.user.profile.last_seen_on < UNREAD_CUTOFF:
# if not silent:

View file

@ -115,6 +115,7 @@ def load_feeds(request):
feeds[sub.feed.pk] = {
'id': sub.feed.pk,
'feed_title': sub.feed.feed_title,
'feed_address': sub.feed.feed_address,
'feed_link': sub.feed.feed_link,
'ps': sub.unread_count_positive,
'nt': sub.unread_count_neutral,
@ -228,8 +229,20 @@ def load_single_feed(request):
page = int(request.REQUEST.get('page', 0))
if page:
offset = limit * page
feed_id = int(request.REQUEST['feed_id'])
feed = Feed.objects.get(id=feed_id)
feed_id = int(request.REQUEST.get('feed_id', 0))
if feed_id == 0:
raise Http404
try:
feed = Feed.objects.get(id=feed_id)
except Feed.DoesNotExist:
feed_address = request.REQUEST.get('feed_address')
dupe_feed = DuplicateFeed.objects.filter(duplicate_address=feed_address)
if dupe_feed:
feed = dupe_feed[0].feed
else:
raise Http404
force_update = request.GET.get('force_update', False)
now = datetime.datetime.utcnow()

View file

@ -132,7 +132,7 @@ NEWSBLUR.AssetModel.Reader.prototype = {
);
},
load_feeds: function(callback) {
load_feeds: function(callback, error_callback) {
var self = this;
var pre_callback = function(subscriptions) {
@ -154,7 +154,7 @@ NEWSBLUR.AssetModel.Reader.prototype = {
callback();
};
this.make_request('/reader/load_feeds', {}, pre_callback);
this.make_request('/reader/load_feeds', {}, pre_callback, error_callback);
},
load_feed: function(feed_id, page, first_load, callback) {
@ -164,12 +164,13 @@ NEWSBLUR.AssetModel.Reader.prototype = {
return self.load_feed_precallback(data, feed_id, callback, first_load);
};
// NEWSBLUR.log(['load_feed', feed_id, page, first_load, callback, pre_callback]);
// NEWSBLUR.log(['load_feed', feed_id, page, first_load, callback, pre_callback, this.feeds[feed_id].feed_address]);
if (feed_id) {
this.make_request('/reader/load_single_feed',
{
feed_id: feed_id,
page: page
page: page,
feed_address: this.feeds[feed_id].feed_address
}, pre_callback,
null,
{
@ -285,7 +286,8 @@ NEWSBLUR.AssetModel.Reader.prototype = {
{
feed_id: feed_id,
page: 0,
limit: limit
limit: limit,
feed_address: this.feeds[feed_id].feed_address
}, pre_callback,
null,
{

View file

@ -3784,6 +3784,14 @@
e.preventDefault();
self.switch_taskbar_view_direction(1);
});
$document.bind('keydown', 'h', function(e) {
e.preventDefault();
self.switch_taskbar_view_direction(-1);
});
$document.bind('keydown', 'l', function(e) {
e.preventDefault();
self.switch_taskbar_view_direction(1);
});
$document.bind('keydown', 'enter', function(e) {
e.preventDefault();
self.open_feed_link();