From 721779b3578f55f29c38ecf297f41fbc5bc9e5ce Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Mon, 8 Jun 2020 10:44:59 -0400 Subject: [PATCH] Cleaning up 3 apps. --- apps/feed_import/urls.py | 4 - apps/feed_import/views.py | 153 ------------------------------------ apps/newsletters/views.py | 6 +- apps/notifications/views.py | 17 +++- 4 files changed, 19 insertions(+), 161 deletions(-) diff --git a/apps/feed_import/urls.py b/apps/feed_import/urls.py index 147d97ca7..95c251577 100644 --- a/apps/feed_import/urls.py +++ b/apps/feed_import/urls.py @@ -4,9 +4,5 @@ from apps.feed_import import views urlpatterns = patterns('apps.feed_import.views', url(r'^opml_upload/?$', views.opml_upload, name='opml-upload'), 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'^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') ) diff --git a/apps/feed_import/views.py b/apps/feed_import/views.py index 9e6f04e37..ecb0af3a8 100644 --- a/apps/feed_import/views.py +++ b/apps/feed_import/views.py @@ -90,159 +90,6 @@ def opml_export(request): 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): ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "") diff --git a/apps/newsletters/views.py b/apps/newsletters/views.py index 0b636f334..b66587e0f 100644 --- a/apps/newsletters/views.py +++ b/apps/newsletters/views.py @@ -6,6 +6,10 @@ from apps.newsletters.models import EmailNewsletter from apps.rss_feeds.models import Feed, MStory 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 = { # 'stripped-signature':'Thanks,\nBob', # 'From':'Test mailer ', @@ -37,7 +41,7 @@ def newsletter_receive(request): # 'Content-Type':'multipart/mixed; boundary="------------020601070403020003080006"', # 'Subject':'Test Newsletter theskimm' # } - params = request.REQUEST + params = request.POST response = HttpResponse('OK') diff --git a/apps/notifications/views.py b/apps/notifications/views.py index d01f10a6f..9e5bd9e8b 100644 --- a/apps/notifications/views.py +++ b/apps/notifications/views.py @@ -59,9 +59,13 @@ def set_notifications_for_feed(request): @ajax_login_required @json.json_view 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) 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") if apns_token not in tokens.ios_tokens: @@ -74,9 +78,13 @@ def set_apns_token(request): @ajax_login_required @json.json_view 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) tokens = MUserNotificationTokens.get_tokens_for_user(user.pk) - token = request.REQUEST['token'] + token = request.POST['token'] logging.user(user, "~FCUpdating Android push token") if token not in tokens.android_tokens: @@ -90,8 +98,11 @@ def set_android_token(request): @staff_member_required @json.json_view def force_push(request): + """ + Intended to force a push notification for a feed for testing. Handier than the console. + """ user = get_user(request) - feed_id = request.REQUEST['feed_id'] + feed_id = request.GET['feed_id'] count = int(request.REQUEST.get('count', 1)) logging.user(user, "~BM~FWForce pushing %s stories: ~SB%s" % (count, Feed.get_by_id(feed_id)))