mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Fixing miscellaneous issues that have been throwing exceptions. Feed importing, google reader, loading feeds/pages, approving feeds. ALl with bad requests now let the user down easily as opposed to 500ing.
This commit is contained in:
parent
969f7e0d4c
commit
53d759520f
3 changed files with 51 additions and 32 deletions
|
@ -85,6 +85,7 @@ def reader_authorize(request):
|
||||||
def reader_callback(request):
|
def reader_callback(request):
|
||||||
access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken'
|
access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken'
|
||||||
consumer = oauth.Consumer(settings.OAUTH_KEY, settings.OAUTH_SECRET)
|
consumer = oauth.Consumer(settings.OAUTH_KEY, settings.OAUTH_SECRET)
|
||||||
|
user_token = None
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
user_token = OAuthToken.objects.get(user=request.user)
|
user_token = OAuthToken.objects.get(user=request.user)
|
||||||
|
@ -98,31 +99,35 @@ def reader_callback(request):
|
||||||
user_token = user_tokens[0]
|
user_token = user_tokens[0]
|
||||||
user_token.session_id = request.session.session_key
|
user_token.session_id = request.session.session_key
|
||||||
user_token.save()
|
user_token.save()
|
||||||
|
|
||||||
# logging.info("Google Reader request.GET: %s" % request.GET)
|
if user_token and request.GET.get('oauth_verifier'):
|
||||||
# Authenticated in Google, so verify and fetch access tokens
|
# logging.info("Google Reader request.GET: %s" % request.GET)
|
||||||
token = oauth.Token(user_token.request_token, user_token.request_token_secret)
|
# Authenticated in Google, so verify and fetch access tokens
|
||||||
token.set_verifier(request.GET['oauth_verifier'])
|
token = oauth.Token(user_token.request_token, user_token.request_token_secret)
|
||||||
client = oauth.Client(consumer, token)
|
token.set_verifier(request.GET['oauth_verifier'])
|
||||||
resp, content = client.request(access_token_url, "POST")
|
client = oauth.Client(consumer, token)
|
||||||
access_token = dict(urlparse.parse_qsl(content))
|
resp, content = client.request(access_token_url, "POST")
|
||||||
# logging.info(" ---> [%s] OAuth Reader Content: %s -- %s" % (request.user, token, access_token))
|
access_token = dict(urlparse.parse_qsl(content))
|
||||||
user_token.access_token = access_token.get('oauth_token')
|
# logging.info(" ---> [%s] OAuth Reader Content: %s -- %s" % (request.user, token, access_token))
|
||||||
user_token.access_token_secret = access_token.get('oauth_token_secret')
|
user_token.access_token = access_token.get('oauth_token')
|
||||||
try:
|
user_token.access_token_secret = access_token.get('oauth_token_secret')
|
||||||
user_token.save()
|
try:
|
||||||
except IntegrityError:
|
user_token.save()
|
||||||
|
except IntegrityError:
|
||||||
|
logging.info(" ***> [%s] Bad token from Google Reader. Re-authenticating." % (request.user,))
|
||||||
|
return HttpResponseRedirect(reverse('google-reader-authorize'))
|
||||||
|
|
||||||
|
# Fetch imported feeds on next page load
|
||||||
|
request.session['import_from_google_reader'] = True
|
||||||
|
|
||||||
|
logging.info(" ---> [%s] ~BB~FW~SBFinishing Google Reader import - %s" % (request.user, request.META['REMOTE_ADDR'],))
|
||||||
|
|
||||||
|
if request.user.is_authenticated():
|
||||||
|
return HttpResponseRedirect(reverse('index'))
|
||||||
|
else:
|
||||||
logging.info(" ***> [%s] Bad token from Google Reader. Re-authenticating." % (request.user,))
|
logging.info(" ***> [%s] Bad token from Google Reader. Re-authenticating." % (request.user,))
|
||||||
return HttpResponseRedirect(reverse('google-reader-authorize'))
|
return HttpResponseRedirect(reverse('google-reader-authorize'))
|
||||||
|
|
||||||
# Fetch imported feeds on next page load
|
|
||||||
request.session['import_from_google_reader'] = True
|
|
||||||
|
|
||||||
logging.info(" ---> [%s] ~BB~FW~SBFinishing Google Reader import - %s" % (request.user, request.META['REMOTE_ADDR'],))
|
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
return HttpResponseRedirect(reverse('index'))
|
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('import-signup'))
|
return HttpResponseRedirect(reverse('import-signup'))
|
||||||
|
|
||||||
@json.json_view
|
@json.json_view
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
|
import re
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
|
@ -274,9 +275,14 @@ def load_single_feed(request):
|
||||||
page = int(request.REQUEST.get('page', 0))
|
page = int(request.REQUEST.get('page', 0))
|
||||||
if page:
|
if page:
|
||||||
offset = limit * page
|
offset = limit * page
|
||||||
feed_id = int(request.REQUEST.get('feed_id', 0))
|
feed_id = None
|
||||||
|
try:
|
||||||
|
feed_id = int(request.GET.get('feed_id', 0))
|
||||||
|
except ValueError:
|
||||||
|
feed_id_matches = re.search(r'(\d+)', request.GET['feed_id'])
|
||||||
|
if feed_id_matches: feed_id = int(feed_id_matches.group(1))
|
||||||
dupe_feed_id = None
|
dupe_feed_id = None
|
||||||
if feed_id == 0:
|
if not feed_id:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -368,8 +374,13 @@ def load_single_feed(request):
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def load_feed_page(request):
|
def load_feed_page(request):
|
||||||
feed_id = int(request.GET.get('feed_id', 0))
|
feed_id = None
|
||||||
if feed_id == 0:
|
try:
|
||||||
|
feed_id = int(request.GET.get('feed_id', 0))
|
||||||
|
except ValueError:
|
||||||
|
feed_id_matches = re.search(r'(\d+)', request.GET['feed_id'])
|
||||||
|
if feed_id_matches: feed_id = int(feed_id_matches.group(1))
|
||||||
|
if not feed_id:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
data = MFeedPage.get_data(feed_id=feed_id)
|
data = MFeedPage.get_data(feed_id=feed_id)
|
||||||
|
@ -442,7 +453,10 @@ def load_river_stories(request):
|
||||||
feed_counts = {}
|
feed_counts = {}
|
||||||
feed_last_reads = {}
|
feed_last_reads = {}
|
||||||
for feed_id in feed_ids:
|
for feed_id in feed_ids:
|
||||||
usersub = UserSubscription.objects.get(feed__pk=feed_id, user=user)
|
try:
|
||||||
|
usersub = UserSubscription.objects.get(feed__pk=feed_id, user=user)
|
||||||
|
except UserSubscription.DoesNotExist:
|
||||||
|
continue
|
||||||
feed_counts[feed_id] = (usersub.unread_count_negative * 1+
|
feed_counts[feed_id] = (usersub.unread_count_negative * 1+
|
||||||
usersub.unread_count_neutral * 10+
|
usersub.unread_count_neutral * 10+
|
||||||
usersub.unread_count_positive * 20)
|
usersub.unread_count_positive * 20)
|
||||||
|
@ -826,7 +840,7 @@ def get_feeds_trainer(request):
|
||||||
@ajax_login_required
|
@ajax_login_required
|
||||||
@json.json_view
|
@json.json_view
|
||||||
def save_feed_chooser(request):
|
def save_feed_chooser(request):
|
||||||
approved_feeds = [int(feed_id) for feed_id in request.POST.getlist('approved_feeds')][:64]
|
approved_feeds = [int(feed_id) for feed_id in request.POST.getlist('approved_feeds') if feed_id][:64]
|
||||||
activated = 0
|
activated = 0
|
||||||
usersubs = UserSubscription.objects.filter(user=request.user)
|
usersubs = UserSubscription.objects.filter(user=request.user)
|
||||||
|
|
||||||
|
|
|
@ -747,7 +747,7 @@ class FeedIcon(models.Model):
|
||||||
super(FeedIcon, self).save(*args, **kwargs)
|
super(FeedIcon, self).save(*args, **kwargs)
|
||||||
except (IntegrityError, OperationError), e:
|
except (IntegrityError, OperationError), e:
|
||||||
print "Error on Icon: %s" % e
|
print "Error on Icon: %s" % e
|
||||||
if self.id: self.delete()
|
if getattr(self, 'id'): self.delete()
|
||||||
|
|
||||||
|
|
||||||
class MFeedPage(mongo.Document):
|
class MFeedPage(mongo.Document):
|
||||||
|
@ -799,7 +799,7 @@ class MStory(mongo.Document):
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
'collection': 'stories',
|
'collection': 'stories',
|
||||||
'indexes': ['story_date', ('story_feed_id', '-story_date')],
|
'indexes': [('story_feed_id', '-story_date')],
|
||||||
'ordering': ['-story_date'],
|
'ordering': ['-story_date'],
|
||||||
'allow_inheritance': False,
|
'allow_inheritance': False,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue