diff --git a/squawker/.idea/inspectionProfiles/Project_Default.xml b/squawker/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..5cb71ef
--- /dev/null
+++ b/squawker/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/inspectionProfiles/profiles_settings.xml b/squawker/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..3b31283
--- /dev/null
+++ b/squawker/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/misc.xml b/squawker/.idea/misc.xml
new file mode 100644
index 0000000..d8a4a57
--- /dev/null
+++ b/squawker/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/modules.xml b/squawker/.idea/modules.xml
new file mode 100644
index 0000000..745d5fa
--- /dev/null
+++ b/squawker/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/sqldialects.xml b/squawker/.idea/sqldialects.xml
new file mode 100644
index 0000000..217054f
--- /dev/null
+++ b/squawker/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/squawker.iml b/squawker/.idea/squawker.iml
new file mode 100644
index 0000000..63431a1
--- /dev/null
+++ b/squawker/.idea/squawker.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/.idea/workspace.xml b/squawker/.idea/workspace.xml
new file mode 100644
index 0000000..fabc75a
--- /dev/null
+++ b/squawker/.idea/workspace.xml
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1477340696310
+
+
+ 1477340696310
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/squawker/schema.sql b/squawker/schema.sql
index 5e67ffb..0fba017 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 autoincrement,
+ phrase varchar(140) NOT NULL ,
+ time datetime NOT NULL
+);
diff --git a/squawker/server.py b/squawker/server.py
index 6ff24ba..0e50b68 100644
--- a/squawker/server.py
+++ b/squawker/server.py
@@ -1,10 +1,18 @@
from flask import Flask, g
import sqlite3
-
+import datetime
# -- leave these lines intact --
+from flask import abort
+from flask import redirect
+from flask import render_template
+from flask import request
+from flask import url_for
+
app = Flask(__name__)
+COUNT = 20
+
def get_db():
if not hasattr(g, 'sqlite_db'):
@@ -34,14 +42,52 @@ def close_connection(exception):
db = getattr(g, 'sqlite_db', None)
if db is not None:
db.close()
+
+
# ------------------------------
+
@app.route('/')
-def root():
+def show_entries():
+ page = 0
+ if request.args.get('page'):
+ page = int(request.args.get('page'))
+
+ start_index = COUNT * page
+ # print("Page: " + str(page))
+ # print("StartIndex: " + str(start_index))
+
conn = get_db()
- # TODO change this
- return "Hello World!"
+ cur = conn.execute(
+ 'SELECT id, phrase, time FROM squawks ORDER BY time DESC LIMIT ' + str(COUNT + 1) + ' OFFSET ' + str(
+ start_index))
+ entries = cur.fetchall()
+
+ more = False
+ less = False
+ previous_page = None
+ if len(entries) > COUNT:
+ more = True
+ entries.remove(entries[COUNT])
+ if page > 0:
+ less = True
+ previous_page = page-1
+
+ return render_template('show_entries.html', entries=entries, more=more, next_page=(page+1), less=less, previous_page=previous_page)
+
+
+@app.route('/add', methods=['POST'])
+def add_entry():
+ text = request.form['text']
+ if len(text) > 140:
+ abort(400)
+ return
+ db = get_db()
+ db.execute('INSERT INTO squawks (phrase, time) VALUES (?, ?)', [text, datetime.datetime.utcnow()])
+ db.commit()
+ # flash('New entry was successfully posted')
+ return redirect(url_for('show_entries'))
if __name__ == '__main__':
diff --git a/squawker/templates/layout.html b/squawker/templates/layout.html
new file mode 100644
index 0000000..1834909
--- /dev/null
+++ b/squawker/templates/layout.html
@@ -0,0 +1,7 @@
+
+
Squawks
+
+
+
Squawks - Mario Rial, mr2224
+ {% block body %}{% endblock %}
+
diff --git a/squawker/templates/show_entries.html b/squawker/templates/show_entries.html
new file mode 100644
index 0000000..d912552
--- /dev/null
+++ b/squawker/templates/show_entries.html
@@ -0,0 +1,23 @@
+{% extends "layout.html" %}
+{% block body %}
+
+
+ {% for entry in entries %}
+ {{ entry[1]|safe }}
+ {% else %}
+ - Unbelievable. No entries here so far
+ {% endfor %}
+
+ {% if less %}
+ Previous Page
+ {% endif %}
+ {% if more %}
+ Next Page
+ {% endif %}
+{% endblock %}