From 97e45014276613c0d448ca3693cf14f589a9125e Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Wed, 22 Apr 2020 17:11:23 +0100 Subject: [PATCH] Proper display of save errors. --- app.py | 15 ++++++++++++--- depicts/fixtures.py | 3 +++ templates/save_error.html | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 depicts/fixtures.py create mode 100644 templates/save_error.html diff --git a/app.py b/app.py index c1dd622..73e2d14 100755 --- a/app.py +++ b/app.py @@ -2,7 +2,8 @@ from flask import Flask, render_template, url_for, redirect, request, g, jsonify, session from depicts import (utils, wdqs, commons, mediawiki, artwork, database, - wd_catalog, human, wikibase, wikidata_oauth, wikidata_edit, mail) + wd_catalog, human, wikibase, wikidata_oauth, wikidata_edit, mail, + fixtures) from depicts.pager import Pagination, init_pager from depicts.model import (DepictsItem, DepictsItemAltLabel, Edit, Item, Language, WikidataQuery, Triple) @@ -181,8 +182,11 @@ def save(item_id): mail.send_mail('depicts save error', r.text) raise - if 'error' in reply: - return 'error:' + r.text + save_error = reply.get('error') + if save_error: + mail.send_mail('depicts save error', r.text) + return render_template('save_error.html', error=save_error) + saved = r.json() lastrevid = saved['pageinfo']['lastrevid'] assert saved['success'] == 1 @@ -1090,6 +1094,11 @@ def server_block_report(): check_for_blocks() return render_template('block_report.html') +@app.route('/fixture/save_error') +def save_error_fixture(): + error = fixtures.save_error()['error'] + return render_template('save_error.html', error=error) + if __name__ == "__main__": app.debug = True diff --git a/depicts/fixtures.py b/depicts/fixtures.py new file mode 100644 index 0000000..338ef52 --- /dev/null +++ b/depicts/fixtures.py @@ -0,0 +1,3 @@ +def save_error(): + return {"error":{"code":"failed-save","info":"The save has failed.","messages":[{"name":"wikibase-api-failed-save","parameters":[],"html":"The save has failed."},{"name":"wikimedia-globalblocking-ipblocked-range","parameters":["[//meta.wikimedia.org/wiki/User:Jon_Kolbert Jon Kolbert]","meta.wikimedia.org","[[m:NOP|Open Proxy]]: Colocation webhost, Contact [[m:Special:Contact/stewards|stewards]] if you are affected","04:21, 8 April 2020","04:21, 8 April 2023","78.129.222.14","78.129.128.0/17"],"html":"

Your IP address is in a range that has been blocked on all Wikimedia Foundation wikis.\n

The block was made by Jon Kolbert (meta.wikimedia.org).\nThe reason given is Open Proxy: Colocation webhost, Contact stewards if you are affected.\n

\n\n

Your current IP address is 78.129.222.14 and the blocked range is 78.129.128.0/17.\nPlease include all above details in any queries you make.\n

If you believe you were blocked by mistake, you can find additional information and instructions in the No open proxies global policy.\nOtherwise, to discuss the block please post a request for review on Meta-Wiki or send an email to the stewards OTRS queue at stewards@wikimedia.org including all above details.\n

"},{"name":"permissionserrors","parameters":[],"html":"Permission error"}],"docref":"See https://www.wikidata.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes."},"servedby":"mw1315"} + diff --git a/templates/save_error.html b/templates/save_error.html new file mode 100644 index 0000000..a6ab2ec --- /dev/null +++ b/templates/save_error.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block content %} +
+

Error saving depicts statements to Wikidata

+ +

It was not possible to save your edit to Wikidata. The details of the error returned by the Wikidata API are below.

+ +{% for message in error.messages %} +

{{ message.name }}

+
+ {{ message.html | safe }} +
+{% endfor %} + +
+ +{% endblock %}