diff --git a/ennstatus/donate/forms.py b/ennstatus/donate/forms.py --- a/ennstatus/donate/forms.py +++ b/ennstatus/donate/forms.py @@ -1,5 +1,5 @@ from flask_wtf import Form -from wtforms import SelectField +from wtforms import SelectField, SubmitField from wtforms.validators import DataRequired @@ -10,3 +10,5 @@ class DateForm(Form): ('{:02d}'.format(i), str(i)) for i in range(1, 13) ], validators=[DataRequired()]) + + submit = SubmitField('Submit') diff --git a/ennstatus/root/forms.py b/ennstatus/root/forms.py --- a/ennstatus/root/forms.py +++ b/ennstatus/root/forms.py @@ -20,6 +20,7 @@ class BPMForm(Form): country = SelectField('Country', validators=[DataRequired()], choices=COUNTRIES) + submit = SubmitField('Submit') class MembershipForm(Form): diff --git a/ennstatus/static/css/ennstatus.css b/ennstatus/static/css/ennstatus.css --- a/ennstatus/static/css/ennstatus.css +++ b/ennstatus/static/css/ennstatus.css @@ -61,57 +61,6 @@ a, a:hover, a:active, a:visited { color: #af24cb; } - -/* Multi level dropdown menu http://bootsnipp.com/snippets/featured/multi-level-dropdown-menu-bs3 */ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu > .dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover > .dropdown-menu { - display: block; -} - -.dropdown-submenu > a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #ccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover > a:after { - border-left-color: #fff; -} - -.dropdown-submenu .pull-left { - float: none; -} - -.dropdown-submenu .pull-left > .dropdown-menu { - left: -100%; - margin-left: 10px; - -webkit-border-radius: 6px 0 6px 6px; - -moz-border-radius: 6px 0 6px 6px; - border-radius: 6px 0 6px 6px; -} - /* fancy bootstrap checkboxes */ .form-group input[type="checkbox"] { 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/base.html b/ennstatus/templates/base.html --- a/ennstatus/templates/base.html +++ b/ennstatus/templates/base.html @@ -61,17 +61,8 @@