Skip to content

Commit

Permalink
retry: redirect back to page user came from to preserve query params.…
Browse files Browse the repository at this point in the history
… for #524
  • Loading branch information
snarfed committed Oct 29, 2015
1 parent 88e53d6 commit 62f0726
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
3 changes: 2 additions & 1 deletion app.py
Expand Up @@ -525,7 +525,8 @@ def post(self):
self.abort(400, 'Unexpected key kind %s', entity.key.kind())

self.messages.add('Retrying. Refresh in a minute to see the results!')
self.redirect(entity.source.get().bridgy_url(self))
self.redirect(self.request.get('redirect_to').encode('utf-8') or
entity.source.get().bridgy_url(self))


class RedirectToFrontPageHandler(util.Handler):
Expand Down
1 change: 1 addition & 0 deletions templates/social_user.html
Expand Up @@ -204,6 +204,7 @@

<form method="post" action="/retry">
<input name="key" type="hidden" value="{{ response.key.urlsafe }}" />
<input name="redirect_to" type="hidden" value="{{ request.url }}" />
<button id="retry-button" type="submit" class="btn btn-default">
Retry</button>
</form>
Expand Down
8 changes: 8 additions & 0 deletions test/test_app.py
Expand Up @@ -84,6 +84,14 @@ def test_retry(self):
# webmention endpoints for URL domains should be refreshed
self.assertIsNone(memcache.get('W https skipped'))

def test_retry_redirect_to(self):
key = self.responses[0].put()
response = app.application.get_response(
'/retry', method='POST', body='key=%s&redirect_to=/foo/bar' % key.urlsafe())
self.assertEquals(302, response.status_int)
self.assertEquals('http://localhost/foo/bar',
response.headers['Location'].split('#')[0])

def test_poll_now_and_retry_response_missing_key(self):
for endpoint in '/poll-now', '/retry':
for body in '', 'key=' + self.responses[0].key.urlsafe(): # hasn't been stored
Expand Down

0 comments on commit 62f0726

Please sign in to comment.