from flask import Flask, request, render_template
import re
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'] )
def main():
color = "FFFFFF"
new_color = request.form.get('color', '')
if re.search(r'^[0-9A-F]{6}$', new_color):
color = new_color
return render_template('main.html', color = color)
<style>
* {
background-color: #{{ color }};
}
</style>
<form method="POST">
<input name="color" value="{{ color }}">
<input type="submit" value="Set">
</form>
<p>
<a href="/">home</a>
import color
import pytest
@pytest.fixture()
def web():
return color.app.test_client()
def test_app(web):
rv = web.get('/')
assert rv.status == '200 OK'
assert 'background-color: #FFFFFF;' in rv.data.decode('utf-8')
# This does not set the color
def test_get(web):
rv = web.get('/?color=AAAAAA')
assert rv.status == '200 OK'
assert 'background-color: #FFFFFF;' in rv.data.decode('utf-8')
def test_post(web):
rv = web.post('/', data={'color': 'AAAAAA'})
assert rv.status == '200 OK'
assert 'background-color: #AAAAAA;' in rv.data.decode('utf-8')
# It is not persistant
rv = web.get('/')
assert rv.status == '200 OK'
assert 'background-color: #FFFFFF;' in rv.data.decode('utf-8')