From 4d6880c284da311d35a85a4fdb162ad40bbe99bc Mon Sep 17 00:00:00 2001 From: Kyle Mahan Date: Sun, 2 Aug 2015 22:13:46 -0700 Subject: [PATCH] catch some common login and subscribe errors and inform the user --- woodwind/tasks.py | 2 +- woodwind/templates/base.jinja2 | 98 +++++++++++++++++++--------------- woodwind/views.py | 19 +++++-- 3 files changed, 71 insertions(+), 48 deletions(-) diff --git a/woodwind/tasks.py b/woodwind/tasks.py index c971d02..318386d 100644 --- a/woodwind/tasks.py +++ b/woodwind/tasks.py @@ -69,7 +69,7 @@ def tick(): q.enqueue(update_feed, feed.id) -def update_feed(feed_id, content=None, +def update_feed(feed_id, content=None, content_type=None, is_polling=True): def is_expected_content_type(feed_type): diff --git a/woodwind/templates/base.jinja2 b/woodwind/templates/base.jinja2 index d60d9b7..d35431b 100644 --- a/woodwind/templates/base.jinja2 +++ b/woodwind/templates/base.jinja2 @@ -13,34 +13,35 @@ - + {% block head %}{% endblock %} -
{% if current_user.is_authenticated() %} - - - Woodwind - - +
+ + + Woodwind + + +
{% else %}

@@ -48,6 +49,11 @@ Woodwind

{% endif %} + + {% for message in get_flashed_messages() %} +
{{ message }}
+ {% endfor %} + {% if not current_user.is_authenticated() %}
@@ -59,9 +65,7 @@ {% endif %} {% block header %}{% endblock %} - {% for message in get_flashed_messages() %} -
{{ message | safe }}
- {% endfor %} +
@@ -70,27 +74,35 @@ {% block foot %}{% endblock %} diff --git a/woodwind/views.py b/woodwind/views.py index f9b4ea4..8e31e3a 100644 --- a/woodwind/views.py +++ b/woodwind/views.py @@ -228,9 +228,13 @@ def logout(): @views.route('/login', methods=['POST']) def login(): + me = flask.request.form.get('me') + if not me or me == 'http://': + flask.flash('Sign in with your personal web address.') + return flask.redirect(flask.url_for('.index')) + return micropub.authenticate( - flask.request.form.get('me'), - next_url=flask.request.form.get('next')) + me=me, next_url=flask.request.form.get('next')) @views.route('/login-callback') @@ -325,7 +329,8 @@ def load_user(url): @views.route('/subscribe', methods=['GET', 'POST']) @flask_login.login_required def subscribe(): - origin = flask.request.form.get('origin') or flask.request.args.get('origin') + origin = (flask.request.form.get('origin') + or flask.request.args.get('origin')) if origin: type = None feed = None @@ -390,7 +395,13 @@ def add_subscription(origin, feed_url, type, tags=None): def find_possible_feeds(origin): # scrape an origin source to find possible alternative feeds - resp = requests.get(origin) + try: + resp = requests.get(origin) + except requests.exceptions.RequestException as e: + flask.flash('Error fetching source {}'.format(repr(e))) + flask.current_app.logger.warn( + 'Subscribe failed for %s with error %s', origin, repr(e)) + return None feeds = []