Changeset - 0ee9f58d8bfd
[Not reviewed]
dev
0 2 1
Dennis Fink - 9 years ago 2015-10-25 16:25:26
dennis.fink@c3l.lu
Added server type select form to status page
3 files changed with 58 insertions and 7 deletions:
0 comments (0 inline, 0 general)
ennstatus/status/forms.py
Show inline comments
 
new file 100644
 
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')
ennstatus/status/views.py
Show inline comments
 
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/<server_name>')
ennstatus/templates/status/index.html
Show inline comments
 
@@ -9,7 +9,16 @@
 
{% endblock %}
 

	
 
{% block content %}
 
  <div class="col-md-12">
 
  <div class="col-md-12 clearfix">
 
    <div class="pull-right">
 
      <form class="form-inline" role="form" method="POST" action="{{ url_for('status.index') }}">
 
        {{ form.hidden_tag() }}
 
        <div class="form-group">
 
          {{ form.servertype(class_='form-control input-sm', onchange='this.form.submit()') }}
 
          <noscript>{{ form.submit(class_='btn btn-enn btn-sm') }}</noscript>
 
        </div>
 
      </form>
 
    </div>
 
    {% if not (exit or relay or bridge) %}
 
      <p>No servers found!</p>
 
    {% else %}
0 comments (0 inline, 0 general)