from flask import Flask, request, render_template, session
import re
app = Flask(__name__)
app.secret_key = 'blabla'
@app.route("/",methods=['GET', 'POST'] )
def main():
color = session.get('color', 'FFFFFF')
app.logger.debug("Color: " + color)
new_color = request.form.get('color', '')
if re.search(r'^[0-9A-F]{6}$', new_color):
app.logger.debug('New color: ' + new_color)
session['color'] = new_color
color = new_color
return render_template('main.html', color = color)
import app
def test_app():
web = app.app.test_client()
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 = app.app.test_client()
rv = web.get('/?color=AAAAAA')
assert rv.status == '200 OK'
assert 'background-color: #FFFFFF;' in rv.data.decode('utf-8')
def test_post():
web = app.app.test_client()
rv = web.post('/', data={'color': 'AAAAAA'})
assert rv.status == '200 OK'
assert 'background-color: #AAAAAA;' in rv.data.decode('utf-8')
# This is persistant
rv = web.get('/')
assert rv.status == '200 OK'
assert 'background-color: #AAAAAA;' in rv.data.decode('utf-8')
# Other sessions will still have the default value
web2 = app.app.test_client()
rv = web2.get('/')
assert rv.status == '200 OK'
assert 'background-color: #FFFFFF;' in rv.data.decode('utf-8')