', methods=['GET', 'POST'])
def admin_layer(id):
if request.method == 'GET':
return render_template('admin/layer.html', layer=get_layer(id))
else:
conn = connect()
with conn.cursor() as cur:
cur.execute('UPDATE layers SET color=%s, definition=%s, name=%s WHERE id=%s', (request.form['color'], request.form['definition'], request.form['name'], id))
conn.commit()
return render_template('admin/layer.html', layer=get_layer(id), success=True)
@app.route('/login')
def login():
"""Initiate an OAuth login.
Call the MediaWiki server to get request secrets and then redirect the
user to the MediaWiki server to sign the request.
"""
consumer_token = mwoauth.ConsumerToken(
app.config['CONSUMER_KEY'], app.config['CONSUMER_SECRET'])
try:
redirect, request_token = mwoauth.initiate(
app.config['OAUTH_MWURI'], consumer_token)
except Exception:
app.logger.exception('mwoauth.initiate failed')
return flask.redirect(flask.url_for('index'))
else:
flask.session['request_token'] = dict(zip(
request_token._fields, request_token))
return flask.redirect(redirect)
@app.route('/oauth-callback')
def oauth_callback():
"""OAuth handshake callback."""
if 'request_token' not in flask.session:
flask.flash(u'OAuth callback failed. Are cookies disabled?')
return flask.redirect(flask.url_for('index'))
consumer_token = mwoauth.ConsumerToken(app.config['CONSUMER_KEY'], app.config['CONSUMER_SECRET'])
try:
access_token = mwoauth.complete(
app.config['OAUTH_MWURI'],
consumer_token,
mwoauth.RequestToken(**flask.session['request_token']),
flask.request.query_string)
identity = mwoauth.identify(app.config['OAUTH_MWURI'], consumer_token, access_token)
except Exception:
app.logger.exception('OAuth authentication failed')
else:
flask.session['request_token_secret'] = dict(zip(access_token._fields, access_token))['secret']
flask.session['request_token_key'] = dict(zip(access_token._fields, access_token))['key']
flask.session['username'] = identity['username']
return flask.redirect(flask.url_for('index'))
@app.route('/logout')
def logout():
"""Log the user out by clearing their session."""
flask.session.clear()
return flask.redirect(flask.url_for('index'))
if __name__ == "__main__":
app.run(debug=True, threaded=True)
diff --git a/src/templates/admin/index.html b/src/templates/admin/index.html
index aa0235c..1542004 100644
--- a/src/templates/admin/index.html
+++ b/src/templates/admin/index.html
@@ -1,10 +1,11 @@
{% extends 'base.html' %}
{% block content %}
{{locale['admin-interface']}}
{{locale['admin-description']}}
{% endblock %}
\ No newline at end of file
diff --git a/src/templates/admin/layers.html b/src/templates/admin/layers.html
index c80f013..9f253b0 100644
--- a/src/templates/admin/layers.html
+++ b/src/templates/admin/layers.html
@@ -1,13 +1,13 @@
{% extends 'base.html' %}
{% block content %}
{% endblock %}
\ No newline at end of file
diff --git a/src/templates/admin/user.html b/src/templates/admin/user.html
new file mode 100644
index 0000000..7220ad4
--- /dev/null
+++ b/src/templates/admin/user.html
@@ -0,0 +1,13 @@
+{% extends 'base.html' %}
+{% block content %}
+
+
{{ locale['admin-edit-user'] }}
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/templates/admin/users.html b/src/templates/admin/users.html
new file mode 100644
index 0000000..e8b817b
--- /dev/null
+++ b/src/templates/admin/users.html
@@ -0,0 +1,20 @@
+{% extends 'base.html' %}
+{% block content %}
+
+
{{locale["admin-users"]}}
+
+ {% for user in users %}
+ -
+ {{user.1}}
+ {% if user.2 == 0 %}
+ ({{ locale['inactive'] }})
+ {% else %}
+ {% if user.3 == 1 %}
+ ({{ locale['administrator'] }})
+ {% endif %}
+ {% endif %}
+
+ {% endfor %}
+
+
+{% endblock %}
\ No newline at end of file