diff --git a/.gitignore b/.gitignore index 2a6db5c..f57bc15 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ links.db password.txt /.vs /.vscode +data.json /links.json diff --git a/backend/main.py b/backend/main.py index 6551080..9a6d74b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -29,7 +29,7 @@ def get_data_from_query(query): def regen_JSON(): """Gets links from DB and outputs them in JSON""" - links_list = get_data_from_query('SELECT url, name FROM links ORDER BY position') + links_list = get_data_from_query('SELECT url, name FROM links WHERE active=1 ORDER BY position') links_json = json.dumps(links_list, indent=4) return links_json @@ -41,7 +41,7 @@ def verify_password(username, password): @app.route('/links', methods = ['GET']) def get_links(): - links_list = get_data_from_query('SELECT name, url FROM links ORDER BY position') + links_list = get_data_from_query('SELECT url, name FROM links WHERE active=1 ORDER BY position') return jsonify(links_list) @app.route('/editor/links', methods = ['POST']) @@ -55,7 +55,7 @@ def update_links(): links = [] data = request.json['links'] - items = 'url', 'name', 'clicks' + items = 'url', 'name', 'clicks', 'active' for i in range(len(data)): if not(all(e in data[i] for e in items)): return "Bad request, some items missing from link object", 400 @@ -63,12 +63,13 @@ def update_links(): url = data[i]['url'] name = data[i]['name'] clicks = data[i]['clicks'] + active = data[i]['active'] position = i - newlink = (url, name, clicks, position) + newlink = (url, name, clicks, position, active) links.append(newlink) - cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + cur.executemany('INSERT INTO links VALUES (?,?,?,?,?)', links) con.commit() con.close() data = regen_JSON() @@ -82,14 +83,14 @@ def update_links(): con.close() raise e - links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') + links_list = get_data_from_query('SELECT name, url, clicks, active FROM links ORDER BY position') return jsonify(links_list) @app.route('/editor/links', methods = ['GET']) @auth.login_required def get_editor_links(): """endpoint lists all URLs and clicks, returns json object for editor.""" - links_list = get_data_from_query('SELECT name, url, clicks FROM links ORDER BY position') + links_list = get_data_from_query('SELECT name, url, clicks, active FROM links ORDER BY position') return jsonify(links_list) @app.route('/clicks', methods=['POST']) diff --git a/backend/setup_db.py b/backend/setup_db.py index b7ff457..dda91c4 100644 --- a/backend/setup_db.py +++ b/backend/setup_db.py @@ -7,11 +7,11 @@ con = sqlite3.connect(DB_PATH) # array of links to store links = [ - ('http://csclub.uwaterloo.ca/','CS Club Website',3,0), - ('https://www.instagram.com/uwcsclub/','Instagram',4,1), - ('https://www.facebook.com/uw.computerscienceclub','Facebook',5,2), - ('http://twitch.tv/uwcsclub','Twitch',6,3), - ('http://bit.ly/uwcsclub-yt','YouTube',7,4), + ('http://csclub.uwaterloo.ca/','CS Club Website',3,0,1), + ('https://www.instagram.com/uwcsclub/','Instagram',4,1,1), + ('https://www.facebook.com/uw.computerscienceclub','Facebook',5,2,1), + ('http://twitch.tv/uwcsclub','Twitch',6,3,1), + ('http://bit.ly/uwcsclub-yt','YouTube',7,4,1), ] # SQLite setup @@ -27,9 +27,10 @@ else: name text NOT NULL, clicks int NOT NULL, position int NOT NULL UNIQUE, + active int NOT NULL, UNIQUE(url, name) )''') - cur.executemany('INSERT INTO links VALUES (?,?,?,?)', links) + cur.executemany('INSERT INTO links VALUES (?,?,?,?,?)', links) con.commit() con.close() \ No newline at end of file