From aec809fac886098f1d6026151ef08cf99fff32c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Wed, 12 Oct 2016 16:35:54 +0200 Subject: [PATCH] Improve search form --- website/REQUIREMENTS.txt | 1 + website/__init__.py | 18 ++++++++++++++---- website/templates/main.html | 1 + website/templates/search.html | 15 +++++++-------- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/website/REQUIREMENTS.txt b/website/REQUIREMENTS.txt index 90ef6ca..f51582f 100644 --- a/website/REQUIREMENTS.txt +++ b/website/REQUIREMENTS.txt @@ -1,3 +1,4 @@ flask flask_bootstrap flask_nav +flask_wtf diff --git a/website/__init__.py b/website/__init__.py index abef8d6..fba75d4 100644 --- a/website/__init__.py +++ b/website/__init__.py @@ -5,6 +5,9 @@ from flask import Flask, request, render_template from flask_bootstrap import Bootstrap from flask_nav import Nav from flask_nav.elements import Navbar, View +from flask_wtf import FlaskForm +from wtforms import StringField +from wtforms.validators import DataRequired from pytaxonomies import Taxonomies @@ -20,6 +23,7 @@ def mynavbar(): ) app = Flask(__name__) +app.secret_key = '' Bootstrap(app) app.config['BOOTSTRAP_SERVE_LOCAL'] = True app.debug = True @@ -28,6 +32,11 @@ nav.init_app(app) #t = Taxonomies(manifest_path="../../misp-taxonomies/MANIFEST.json") t = Taxonomies() + +class SearchForm(FlaskForm): + query = StringField('Query', validators=[DataRequired()]) + + @app.route('/', methods=['GET']) def index(): return taxonomies() @@ -43,15 +52,16 @@ def taxonomies(name=None): @app.route('/search', methods=['GET', 'POST']) def search(): - if request.form.get('query'): + form = SearchForm() + if form.validate_on_submit(): q = request.form.get('query') entries = t.search(q) if entries: to_display = {e: t.revert_machinetag(e) for e in entries} - return render_template('search.html', query=q, entries=to_display) + return render_template('search.html', form=form, entries=to_display) else: - return render_template('search.html', query=q, entries=None) - return render_template('search.html', query=None, entries=None) + return render_template('search.html', form=form, entries=None) + return render_template('search.html', form=form, entries=None) def main(): diff --git a/website/templates/main.html b/website/templates/main.html index f7ea193..2c596ef 100644 --- a/website/templates/main.html +++ b/website/templates/main.html @@ -1,4 +1,5 @@ {% extends "bootstrap/base.html" %} +{% import "bootstrap/wtf.html" as wtf %} {% block scripts %} {{ super() }} diff --git a/website/templates/search.html b/website/templates/search.html index f895329..dbebd2d 100644 --- a/website/templates/search.html +++ b/website/templates/search.html @@ -5,11 +5,10 @@

Search {% if query %} - {{query}} {%endif%}

-
-
- -
- + + {{ form.csrf_token }} + {{ form.query(size=20) }} +

@@ -39,12 +38,12 @@ {% if val|length == 3 %} {% if val[2].description %} - {{ val[2].description.decode() }} + {{ val[2].description }} {% elif val[2].expanded %} - {{ val[2].expanded.decode() }} + {{ val[2].expanded }} {%endif%} {% elif val[1].description %} - {{ val[1].description.decode() }} + {{ val[1].description }} {% else %} {{ val[1].predicate }} {%endif%}