# HG changeset patch # User Dennis Fink # Date 2015-10-25 16:25:26 # Node ID 0ee9f58d8bfdf272498ca2b2bd65153ce9ab3fa9 # Parent 34da714bae581e6ee4c4f3ad0a50c5e90fe05858 Added server type select form to status page diff --git a/ennstatus/status/forms.py b/ennstatus/status/forms.py new file mode 100644 --- /dev/null +++ b/ennstatus/status/forms.py @@ -0,0 +1,19 @@ +from flask_wtf import Form +from wtforms import SelectField, SubmitField +from wtforms.validators import DataRequired + +SERVERTYPES = [ + ('all', 'All'), + ('exit', 'Exits'), + ('relay', 'Relays'), + ('bridge', 'Bridges') +] + + +class ServerTypeForm(Form): + servertype = SelectField( + 'Servertype', + validators=[DataRequired()], + choices=SERVERTYPES + ) + submit = SubmitField('Submit') diff --git a/ennstatus/status/views.py b/ennstatus/status/views.py --- a/ennstatus/status/views.py +++ b/ennstatus/status/views.py @@ -1,38 +1,61 @@ -from flask import Blueprint, render_template, current_app +from flask import (Blueprint, + render_template, + current_app, + request, + redirect, + url_for) from ennstatus.status.functions import (all_servers_by_type, single_server, split_all_servers_to_types) +from .forms import ServerTypeForm + status_page = Blueprint('status', __name__) -@status_page.route('/') +@status_page.route('/', methods=('GET', 'POST')) def index(): current_app.logger.info('Handling status index!') + form = ServerTypeForm() + + if request.method == 'POST': + current_app.logger.debug('Validating form') + if form.validate_on_submit(): + servertype = form.servertype.data + if servertype != 'all': + return redirect(url_for('status.' + servertype)) + servers = split_all_servers_to_types() current_app.logger.info('Returning servers') return render_template('status/index.html', exit=servers['exit'], - relay=servers['relay'], bridge=servers['bridge']) + relay=servers['relay'], bridge=servers['bridge'], + form=form) @status_page.route('/exit') def exit(): servers = list(all_servers_by_type('exit')) - return render_template('status/index.html', exit=servers) + form = ServerTypeForm() + form.servertype.data = 'exit' + return render_template('status/index.html', exit=servers, form=form) @status_page.route('/relay') def relay(): servers = list(all_servers_by_type('relay')) - return render_template('status/index.html', relay=servers) + form = ServerTypeForm() + form.servertype.data = 'relay' + return render_template('status/index.html', relay=servers, form=form) @status_page.route('/bridge') def bridge(): servers = list(all_servers_by_type('bridge')) - return render_template('status/index.html', bridge=servers) + form = ServerTypeForm() + form.servertype.data = 'bridge' + return render_template('status/index.html', bridge=servers, form=form) @status_page.route('/single/') diff --git a/ennstatus/templates/status/index.html b/ennstatus/templates/status/index.html --- a/ennstatus/templates/status/index.html +++ b/ennstatus/templates/status/index.html @@ -9,7 +9,16 @@ {% endblock %} {% block content %} -
+
+
+
+ {{ form.hidden_tag() }} +
+ {{ form.servertype(class_='form-control input-sm', onchange='this.form.submit()') }} + +
+
+
{% if not (exit or relay or bridge) %}

No servers found!

{% else %}