diff --git a/requirements.txt b/requirements.txt index 3e0178d..a4bb384 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ -Flask~=0.11.1 +Django~=1.10.2 pep8~=1.7.0 pytest~=3.0.3 +pytest-django~=3.0.0 pytest-json~=0.4.0 --e git+https://github.com/startup-systems/splinter.git@ba3afc8a0750dcfea096f8f89adb58f8f8d78276#egg=splinter[flask] +splinter[flask]~=0.7.5 diff --git a/squawker/schema.sql b/squawker/schema.sql index 5e67ffb..df6a61f 100644 --- a/squawker/schema.sql +++ b/squawker/schema.sql @@ -1,3 +1,7 @@ -- TODO change this -DROP TABLE IF EXISTS mytable; -CREATE TABLE mytable (id integer); +DROP TABLE IF EXISTS squawks; +CREATE TABLE squawks ( + id integer PRIMARY KEY, + timestamp datetime DEFAULT CURRENT_TIMESTAMP, + msg varchar(140) +); diff --git a/squawker/server.py b/squawker/server.py index 6ff24ba..0d67c2f 100644 --- a/squawker/server.py +++ b/squawker/server.py @@ -1,4 +1,4 @@ -from flask import Flask, g +from flask import Flask, g, render_template, request import sqlite3 @@ -34,15 +34,42 @@ def close_connection(exception): db = getattr(g, 'sqlite_db', None) if db is not None: db.close() -# ------------------------------ +# ------------------------------- -@app.route('/') -def root(): - conn = get_db() - # TODO change this - return "Hello World!" +@app.route('/', methods=['GET', 'POST'], defaults={'page': 1}) +@app.route('/page/', methods=['GET', 'POST']) +def root(page): + err = "" + status = 200 + if request.form: + msg = request.form['squawk_msg'] + if len(msg) > 140: + err = "Invalid Squawk!" + status = 400 + elif len(msg) > 0: + query = "INSERT INTO squawks (\'msg\') VALUES (\'" + msg + "\')" + query_exec = get_db().execute(query, ()) + get_db().commit() + query = "SELECT COUNT(*) FROM squawks" + query_exec = get_db().execute(query, ()) + count = query_exec.fetchone()[0] + return render_template("home.html", num_squawks=count, page=page, error=err), status + + +@app.context_processor +def utility_processor(): + def get_squawks(page=1): + query = "SELECT msg FROM squawks ORDER BY timestamp DESC" + query_exec = get_db().execute(query, ()) + result = query_exec.fetchall() + query_exec.close() + p_start = min(len(result) - 1, (page - 1) * 20) + p_end = min(len(result), (page * 20)) + results_to_show = result[p_start:p_end] + return results_to_show + return dict(get_squawks=get_squawks) if __name__ == '__main__': - app.run() + app.run(host="0.0.0.0") diff --git a/squawker/templates/.home.html.swp b/squawker/templates/.home.html.swp new file mode 100644 index 0000000..d6578f6 Binary files /dev/null and b/squawker/templates/.home.html.swp differ diff --git a/squawker/templates/home.html b/squawker/templates/home.html new file mode 100644 index 0000000..cceb0e7 --- /dev/null +++ b/squawker/templates/home.html @@ -0,0 +1,41 @@ + + + + Squawker + + +
+
+ + + +
+
+ +
+ + {{ error }} + +
+ +

+ +
+

+ There are {{num_squawks}} Squawks in the database! +

+ {% if page > 1 %} + Previous Page +   + {% endif %} + Next Page +
+ {% for squawk in get_squawks(page) %} +
+
{{ squawk[0] }}
+ {% endfor %} +
+ + + +