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):
|
||||
access_token_url = 'https://www.google.com/accounts/OAuthGetAccessToken'
|
||||
consumer = oauth.Consumer(settings.OAUTH_KEY, settings.OAUTH_SECRET)
|
||||
user_token = None
|
||||
|
||||
if request.user.is_authenticated():
|
||||
user_token = OAuthToken.objects.get(user=request.user)
|
||||
|
@ -98,31 +99,35 @@ def reader_callback(request):
|
|||
user_token = user_tokens[0]
|
||||
user_token.session_id = request.session.session_key
|
||||
user_token.save()
|
||||
|
||||
# logging.info("Google Reader request.GET: %s" % request.GET)
|
||||
# Authenticated in Google, so verify and fetch access tokens
|
||||
token = oauth.Token(user_token.request_token, user_token.request_token_secret)
|
||||
token.set_verifier(request.GET['oauth_verifier'])
|
||||
client = oauth.Client(consumer, token)
|
||||
resp, content = client.request(access_token_url, "POST")
|
||||
access_token = dict(urlparse.parse_qsl(content))
|
||||
# logging.info(" ---> [%s] OAuth Reader Content: %s -- %s" % (request.user, token, access_token))
|
||||
user_token.access_token = access_token.get('oauth_token')
|
||||
user_token.access_token_secret = access_token.get('oauth_token_secret')
|
||||
try:
|
||||
user_token.save()
|
||||
except IntegrityError:
|
||||
|
||||
if user_token and request.GET.get('oauth_verifier'):
|
||||
# logging.info("Google Reader request.GET: %s" % request.GET)
|
||||
# Authenticated in Google, so verify and fetch access tokens
|
||||
token = oauth.Token(user_token.request_token, user_token.request_token_secret)
|
||||
token.set_verifier(request.GET['oauth_verifier'])
|
||||
client = oauth.Client(consumer, token)
|
||||
resp, content = client.request(access_token_url, "POST")
|
||||
access_token = dict(urlparse.parse_qsl(content))
|
||||
# logging.info(" ---> [%s] OAuth Reader Content: %s -- %s" % (request.user, token, access_token))
|
||||
user_token.access_token = access_token.get('oauth_token')
|
||||
user_token.access_token_secret = access_token.get('oauth_token_secret')
|
||||
try:
|
||||
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,))
|
||||
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('google-reader-authorize'))
|
||||
|
||||
return HttpResponseRedirect(reverse('import-signup'))
|
||||
|
||||
@json.json_view
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import datetime
|
||||
import time
|
||||
import random
|
||||
import re
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.template import RequestContext
|
||||
|
@ -274,9 +275,14 @@ def load_single_feed(request):
|
|||
page = int(request.REQUEST.get('page', 0))
|
||||
if 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
|
||||
if feed_id == 0:
|
||||
if not feed_id:
|
||||
raise Http404
|
||||
|
||||
try:
|
||||
|
@ -368,8 +374,13 @@ def load_single_feed(request):
|
|||
return data
|
||||
|
||||
def load_feed_page(request):
|
||||
feed_id = int(request.GET.get('feed_id', 0))
|
||||
if 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))
|
||||
if not feed_id:
|
||||
raise Http404
|
||||
|
||||
data = MFeedPage.get_data(feed_id=feed_id)
|
||||
|
@ -442,7 +453,10 @@ def load_river_stories(request):
|
|||
feed_counts = {}
|
||||
feed_last_reads = {}
|
||||
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+
|
||||
usersub.unread_count_neutral * 10+
|
||||
usersub.unread_count_positive * 20)
|
||||
|
@ -826,7 +840,7 @@ def get_feeds_trainer(request):
|
|||
@ajax_login_required
|
||||
@json.json_view
|
||||
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
|
||||
usersubs = UserSubscription.objects.filter(user=request.user)
|
||||
|
||||
|
|
|
@ -747,7 +747,7 @@ class FeedIcon(models.Model):
|
|||
super(FeedIcon, self).save(*args, **kwargs)
|
||||
except (IntegrityError, OperationError), e:
|
||||
print "Error on Icon: %s" % e
|
||||
if self.id: self.delete()
|
||||
if getattr(self, 'id'): self.delete()
|
||||
|
||||
|
||||
class MFeedPage(mongo.Document):
|
||||
|
@ -799,7 +799,7 @@ class MStory(mongo.Document):
|
|||
|
||||
meta = {
|
||||
'collection': 'stories',
|
||||
'indexes': ['story_date', ('story_feed_id', '-story_date')],
|
||||
'indexes': [('story_feed_id', '-story_date')],
|
||||
'ordering': ['-story_date'],
|
||||
'allow_inheritance': False,
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue