mirror of
https://github.com/viq/NewsBlur.git
synced 2025-08-21 05:44:54 +00:00
Cleaning up 3 apps.
This commit is contained in:
parent
ad748549f7
commit
721779b357
4 changed files with 19 additions and 161 deletions
|
@ -4,9 +4,5 @@ from apps.feed_import import views
|
||||||
urlpatterns = patterns('apps.feed_import.views',
|
urlpatterns = patterns('apps.feed_import.views',
|
||||||
url(r'^opml_upload/?$', views.opml_upload, name='opml-upload'),
|
url(r'^opml_upload/?$', views.opml_upload, name='opml-upload'),
|
||||||
url(r'^opml_export/?$', views.opml_export, name='opml-export'),
|
url(r'^opml_export/?$', views.opml_export, name='opml-export'),
|
||||||
url(r'^authorize/?$', views.reader_authorize, name='google-reader-authorize'),
|
|
||||||
url(r'^callback/?$', views.reader_callback, name='google-reader-callback'),
|
|
||||||
url(r'^signup/?$', views.import_signup, name='import-signup'),
|
url(r'^signup/?$', views.import_signup, name='import-signup'),
|
||||||
url(r'^import_from_google_reader/?$', views.import_from_google_reader, name='import-from-google-reader'),
|
|
||||||
url(r'^import_starred_stories_from_google_reader/?$', views.import_starred_stories_from_google_reader, name='import-starred-stories-from-google-reader')
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -90,159 +90,6 @@ def opml_export(request):
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
def reader_authorize(request):
|
|
||||||
ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "")
|
|
||||||
reader_importer = GoogleReaderImporter(request.user)
|
|
||||||
if reader_importer.test():
|
|
||||||
logging.user(request, "~BB~FW~SBSkipping Google Reader import, already tokened")
|
|
||||||
return render_to_response('social/social_connect.xhtml', {
|
|
||||||
}, context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
domain = Site.objects.get_current().domain
|
|
||||||
STEP2_URI = "http://%s%s" % (
|
|
||||||
(domain + '.com') if not domain.endswith('.com') else domain,
|
|
||||||
reverse('google-reader-callback'),
|
|
||||||
)
|
|
||||||
|
|
||||||
FLOW = OAuth2WebServerFlow(
|
|
||||||
client_id=settings.GOOGLE_OAUTH2_CLIENTID,
|
|
||||||
client_secret=settings.GOOGLE_OAUTH2_SECRET,
|
|
||||||
scope="http://www.google.com/reader/api",
|
|
||||||
redirect_uri=STEP2_URI,
|
|
||||||
user_agent='NewsBlur Pro, www.newsblur.com',
|
|
||||||
approval_prompt="force",
|
|
||||||
)
|
|
||||||
logging.user(request, "~BB~FW~SBAuthorize Google Reader import - %s" % (
|
|
||||||
request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', ""),
|
|
||||||
))
|
|
||||||
|
|
||||||
authorize_url = FLOW.step1_get_authorize_url(redirect_uri=STEP2_URI)
|
|
||||||
response = render_to_response('social/social_connect.xhtml', {
|
|
||||||
'next': authorize_url,
|
|
||||||
}, context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
# Save request token and delete old tokens
|
|
||||||
auth_token_dict = dict()
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
OAuthToken.objects.filter(user=request.user).delete()
|
|
||||||
auth_token_dict['user'] = request.user
|
|
||||||
else:
|
|
||||||
OAuthToken.objects.filter(session_id=request.session.session_key).delete()
|
|
||||||
OAuthToken.objects.filter(remote_ip=ip).delete()
|
|
||||||
auth_token_dict['uuid'] = str(uuid.uuid4())
|
|
||||||
auth_token_dict['session_id'] = request.session.session_key
|
|
||||||
auth_token_dict['remote_ip'] = ip
|
|
||||||
OAuthToken.objects.create(**auth_token_dict)
|
|
||||||
|
|
||||||
response.set_cookie('newsblur_reader_uuid', str(uuid.uuid4()))
|
|
||||||
return response
|
|
||||||
|
|
||||||
def reader_callback(request):
|
|
||||||
ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "")
|
|
||||||
domain = Site.objects.get_current().domain
|
|
||||||
STEP2_URI = "http://%s%s" % (
|
|
||||||
(domain + '.com') if not domain.endswith('.com') else domain,
|
|
||||||
reverse('google-reader-callback'),
|
|
||||||
)
|
|
||||||
FLOW = OAuth2WebServerFlow(
|
|
||||||
client_id=settings.GOOGLE_OAUTH2_CLIENTID,
|
|
||||||
client_secret=settings.GOOGLE_OAUTH2_SECRET,
|
|
||||||
scope="http://www.google.com/reader/api",
|
|
||||||
redirect_uri=STEP2_URI,
|
|
||||||
user_agent='NewsBlur Pro, www.newsblur.com',
|
|
||||||
)
|
|
||||||
FLOW.redirect_uri = STEP2_URI
|
|
||||||
|
|
||||||
http = httplib2.Http()
|
|
||||||
http.disable_ssl_certificate_validation = True
|
|
||||||
try:
|
|
||||||
credential = FLOW.step2_exchange(request.REQUEST)
|
|
||||||
except FlowExchangeError:
|
|
||||||
logging.info(" ***> [%s] Bad token from Google Reader." % (request.user,))
|
|
||||||
return render_to_response('social/social_connect.xhtml', {
|
|
||||||
'error': 'There was an error trying to import from Google Reader. Trying again will probably fix the issue.'
|
|
||||||
}, context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
user_token = None
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
user_token = OAuthToken.objects.filter(user=request.user).order_by('-created_date')
|
|
||||||
if not user_token:
|
|
||||||
user_uuid = request.COOKIES.get('newsblur_reader_uuid')
|
|
||||||
if user_uuid:
|
|
||||||
user_token = OAuthToken.objects.filter(uuid=user_uuid).order_by('-created_date')
|
|
||||||
if not user_token:
|
|
||||||
session = request.session
|
|
||||||
if session.session_key:
|
|
||||||
user_token = OAuthToken.objects.filter(session_id=request.session.session_key).order_by('-created_date')
|
|
||||||
if not user_token:
|
|
||||||
user_token = OAuthToken.objects.filter(remote_ip=ip).order_by('-created_date')
|
|
||||||
|
|
||||||
if user_token:
|
|
||||||
user_token = user_token[0]
|
|
||||||
user_token.credential = base64.b64encode(pickle.dumps(credential))
|
|
||||||
user_token.session_id = request.session.session_key
|
|
||||||
user_token.save()
|
|
||||||
|
|
||||||
# Fetch imported feeds on next page load
|
|
||||||
request.session['import_from_google_reader'] = True
|
|
||||||
|
|
||||||
logging.user(request, "~BB~FW~SBFinishing Google Reader import - %s" % ip)
|
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
return render_to_response('social/social_connect.xhtml', {}, context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('import-signup'))
|
|
||||||
|
|
||||||
@json.json_view
|
|
||||||
def import_from_google_reader(request):
|
|
||||||
code = 0
|
|
||||||
feed_count = 0
|
|
||||||
starred_count = 0
|
|
||||||
delayed = False
|
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
reader_importer = GoogleReaderImporter(request.user)
|
|
||||||
auto_active = bool(request.REQUEST.get('auto_active') or False)
|
|
||||||
|
|
||||||
try:
|
|
||||||
code = reader_importer.try_import_feeds(auto_active=auto_active)
|
|
||||||
except TimeoutError:
|
|
||||||
ProcessReaderImport.delay(request.user.pk, auto_active=auto_active)
|
|
||||||
feed_count = UserSubscription.objects.filter(user=request.user).count()
|
|
||||||
logging.user(request, "~FR~SBGoogle Reader import took too long, found %s feeds. Tasking..." % feed_count)
|
|
||||||
delayed = True
|
|
||||||
code = 2
|
|
||||||
|
|
||||||
if 'import_from_google_reader' in request.session:
|
|
||||||
del request.session['import_from_google_reader']
|
|
||||||
|
|
||||||
feed_count = UserSubscription.objects.filter(user=request.user).count()
|
|
||||||
|
|
||||||
return dict(code=code, delayed=delayed, feed_count=feed_count, starred_count=starred_count)
|
|
||||||
|
|
||||||
@json.json_view
|
|
||||||
def import_starred_stories_from_google_reader(request):
|
|
||||||
code = 0
|
|
||||||
feed_count = 0
|
|
||||||
starred_count = 0
|
|
||||||
delayed = False
|
|
||||||
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
reader_importer = GoogleReaderImporter(request.user)
|
|
||||||
try:
|
|
||||||
starred_count = reader_importer.try_import_starred_stories()
|
|
||||||
except TimeoutError:
|
|
||||||
ProcessReaderStarredImport.delay(request.user.pk)
|
|
||||||
feed_count = UserSubscription.objects.filter(user=request.user).count()
|
|
||||||
logging.user(request, "~FR~SBGoogle Reader starred stories import took too long, found %s feeds, %s stories. Tasking..." % (feed_count, starred_count))
|
|
||||||
delayed = True
|
|
||||||
code = 2
|
|
||||||
|
|
||||||
feed_count = UserSubscription.objects.filter(user=request.user).count()
|
|
||||||
|
|
||||||
return dict(code=code, delayed=delayed, feed_count=feed_count, starred_count=starred_count)
|
|
||||||
|
|
||||||
def import_signup(request):
|
def import_signup(request):
|
||||||
ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "")
|
ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "")
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,10 @@ from apps.newsletters.models import EmailNewsletter
|
||||||
from apps.rss_feeds.models import Feed, MStory
|
from apps.rss_feeds.models import Feed, MStory
|
||||||
|
|
||||||
def newsletter_receive(request):
|
def newsletter_receive(request):
|
||||||
|
"""
|
||||||
|
This function is called by mailgun's receive email feature. This is a
|
||||||
|
private API used for the newsletter app.
|
||||||
|
"""
|
||||||
# params = {
|
# params = {
|
||||||
# 'stripped-signature':'Thanks,\nBob',
|
# 'stripped-signature':'Thanks,\nBob',
|
||||||
# 'From':'Test mailer <samuel@ofbrooklyn.com>',
|
# 'From':'Test mailer <samuel@ofbrooklyn.com>',
|
||||||
|
@ -37,7 +41,7 @@ def newsletter_receive(request):
|
||||||
# 'Content-Type':'multipart/mixed; boundary="------------020601070403020003080006"',
|
# 'Content-Type':'multipart/mixed; boundary="------------020601070403020003080006"',
|
||||||
# 'Subject':'Test Newsletter theskimm'
|
# 'Subject':'Test Newsletter theskimm'
|
||||||
# }
|
# }
|
||||||
params = request.REQUEST
|
params = request.POST
|
||||||
|
|
||||||
response = HttpResponse('OK')
|
response = HttpResponse('OK')
|
||||||
|
|
||||||
|
|
|
@ -59,9 +59,13 @@ def set_notifications_for_feed(request):
|
||||||
@ajax_login_required
|
@ajax_login_required
|
||||||
@json.json_view
|
@json.json_view
|
||||||
def set_apns_token(request):
|
def set_apns_token(request):
|
||||||
|
"""
|
||||||
|
Apple Push Notification Service, token is sent by the iOS app. Used to send
|
||||||
|
push notifications to iOS.
|
||||||
|
"""
|
||||||
user = get_user(request)
|
user = get_user(request)
|
||||||
tokens = MUserNotificationTokens.get_tokens_for_user(user.pk)
|
tokens = MUserNotificationTokens.get_tokens_for_user(user.pk)
|
||||||
apns_token = request.REQUEST['apns_token']
|
apns_token = request.POST['apns_token']
|
||||||
|
|
||||||
logging.user(user, "~FCUpdating APNS push token")
|
logging.user(user, "~FCUpdating APNS push token")
|
||||||
if apns_token not in tokens.ios_tokens:
|
if apns_token not in tokens.ios_tokens:
|
||||||
|
@ -74,9 +78,13 @@ def set_apns_token(request):
|
||||||
@ajax_login_required
|
@ajax_login_required
|
||||||
@json.json_view
|
@json.json_view
|
||||||
def set_android_token(request):
|
def set_android_token(request):
|
||||||
|
"""
|
||||||
|
Android's push notification tokens. Not sure why I can't find this function in
|
||||||
|
the Android code.
|
||||||
|
"""
|
||||||
user = get_user(request)
|
user = get_user(request)
|
||||||
tokens = MUserNotificationTokens.get_tokens_for_user(user.pk)
|
tokens = MUserNotificationTokens.get_tokens_for_user(user.pk)
|
||||||
token = request.REQUEST['token']
|
token = request.POST['token']
|
||||||
|
|
||||||
logging.user(user, "~FCUpdating Android push token")
|
logging.user(user, "~FCUpdating Android push token")
|
||||||
if token not in tokens.android_tokens:
|
if token not in tokens.android_tokens:
|
||||||
|
@ -90,8 +98,11 @@ def set_android_token(request):
|
||||||
@staff_member_required
|
@staff_member_required
|
||||||
@json.json_view
|
@json.json_view
|
||||||
def force_push(request):
|
def force_push(request):
|
||||||
|
"""
|
||||||
|
Intended to force a push notification for a feed for testing. Handier than the console.
|
||||||
|
"""
|
||||||
user = get_user(request)
|
user = get_user(request)
|
||||||
feed_id = request.REQUEST['feed_id']
|
feed_id = request.GET['feed_id']
|
||||||
count = int(request.REQUEST.get('count', 1))
|
count = int(request.REQUEST.get('count', 1))
|
||||||
|
|
||||||
logging.user(user, "~BM~FWForce pushing %s stories: ~SB%s" % (count, Feed.get_by_id(feed_id)))
|
logging.user(user, "~BM~FWForce pushing %s stories: ~SB%s" % (count, Feed.get_by_id(feed_id)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue