diff --git a/project_server.py b/project_server.py index e82e33e8ba2eeff3fabb2b41bcae982fb22101ae..cf33dbd9506369ebde226b064d99971357b1df12 100644 --- a/project_server.py +++ b/project_server.py @@ -7,7 +7,19 @@ DATABASE = "project_db.db" ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) - +#Error handling for common database connection. +#Parameter optional. Defaults to DATABASE. +def connect_db(db_file=DATABASE): + conn = None + try: + conn = sqlite3.connect(db_file) + except: + print("Error connecting to database.") + return conn + +<<<<<<< HEAD +@app.route('/SearchRecord', methods=['POST']) +======= @app.route("/", methods=['GET']) def returnIndex(): return render_template("test.html") @@ -17,102 +29,122 @@ def returnManageCoworkingSpaces(): return render_template("Manage_Coworking_Spaces.html") @app.route("/SearchRecord", methods=['POST']) +>>>>>>> 447d1e30bd664c46c1ad4a89ed35119391ab95a6 def searchRecord(): - if request.method =='POST': + if (request.method =='POST'): + recordName = request.form.get('recordName', default="Error") + print(f"Searching for '{recordName}' in the database.") + try: - recordName = request.form.get('recordName', default="Error") - conn = sqlite3.connect(DATABASE) + conn = connect_db() cur = conn.cursor() cur.execute("SELECT * FROM coworking_spaces WHERE Name=?;", [recordName]) recordData = cur.fetchall() + except: - print(f"Error: {recordData}") - conn.close() + print(f"Encountered an error whilst searching for record.") + finally: conn.close() - print(f"{str(recordData)} Record found.") - return str(recordData) -# Adds a record to the CSV file. -@app.route("/AddRecord", methods=['POST']) -def addRecord(): + if not recordData: #If recordData is an empty list... + print(f"'{recordName}' not found.") + return (f"'{recordName}' not found.") - print('Processing record.') - infoMessage = ('Add record failed.') + else: + print(f"Found: {recordData}") + return (recordData) + +@app.route('/AddRecord', methods=['POST']) +def addRecord(): if (request.method == 'POST'): - recordName = request.form['recordName'] - recordAddress = request.form['recordAddress'] - recordMainPhotos = request.form['recordMainPhotos'] - recordAdditionalPhotos = request.form['recordAdditionalPhotos'] - recordDescription = request.form['recordDescription'] - recordWebsite = request.form['recordWebsite'] - recordEmail = request.form['recordEmail'] - recordPhoneNumber = request.form['recordPhoneNumber'] - recordOpeningHours = request.form['recordOpeningHours'] - recordCheckinInstructions = request.form['recordCheckinInstructions'] + recordName = request.form.get('recordName', default="Error") + recordAddress = request.form.get('recordAddress', default="Error") + recordMainPhotos = request.form.get('recordMainPhotos', default="Error") + recordAdditionalPhotos = request.form.get('recordAdditionalPhotos', default="Error") + recordDescription = request.form.get('recordDescription', default="Error") + recordWebsite = request.form.get('recordWebsite', default="Error") + recordEmail = request.form.get('recordEmail', default="Error") + recordPhoneNumber = request.form.get('recordPhoneNumber', default="Error") + recordOpeningHours = request.form.get('recordOpeningHours', default="Error") + recordCheckinInstructions = request.form.get('recordCheckinInstructions', default="Error") recordData = [recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions] + print(f"Adding '{recordName}' to the database.") - conn = sqlite3.connect(DATABASE) - cur = conn.cursor() - cur.execute("INSERT INTO coworking_spaces ('Name', 'Address', 'Main_Photo', 'Additional_Photos', 'Description', 'Website', 'Email', 'Phone_Number', 'Opening_Hours', 'Checkin_Instructions')\ - VALUES (?,?,?,?,?,?,?,?,?,?)", (recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions)) - conn.commit() - conn.close() + try: + conn = connect_db() + cur = conn.cursor() + cur.execute("INSERT INTO coworking_spaces ('Name', 'Address', 'Main_Photo', 'Additional_Photos', 'Description', 'Website', 'Email', 'Phone_Number', 'Opening_Hours', 'Checkin_Instructions')\ + VALUES (?,?,?,?,?,?,?,?,?,?)", (recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions)) + conn.commit() + infoMessage = (f"Added: {recordData}") - infoMessage = (f'{recordData} Record added.') + except: + conn.rollback() + infoMessage = (f"Error adding record.") - print(infoMessage) - return (infoMessage) + finally: + conn.close() + print(infoMessage) + return (infoMessage) -@app.route("/DeleteRecord", methods=['POST']) +@app.route('/DeleteRecord', methods=['POST']) def deleteRecord(): - if request.method =='POST': + if (request.method =='POST'): + recordName = request.form.get('recordName', default="Error") + print(f"Deleting '{recordName}' from the database.") + try: - recordName = request.form.get('recordName', default="Error") conn = sqlite3.connect(DATABASE) cur = conn.cursor() cur.execute("DELETE FROM coworking_spaces WHERE Name=?;", [recordName]) conn.commit() + infoMessage = (f"Deleted: '{recordName}'.") + except: - print(f"Error: {recordData}") - conn.close() + conn.rollback() + infoMessage = (f"Error deleting record.") + finally: conn.close() - print("Record deleted.") - return ("Record deleted.") - -@app.route("/EditRecord", methods=['POST']) -def editRecord(): + print(infoMessage) + return (infoMessage) - print('Processing record.') - infoMessage = ('Add record failed.') +@app.route('/UpdateRecord', methods=['POST']) +def updateRecord(): if (request.method == 'POST'): - recordName = request.form['recordName'] - recordAddress = request.form['recordAddress'] - recordMainPhotos = request.form['recordMainPhotos'] - recordAdditionalPhotos = request.form['recordAdditionalPhotos'] - recordDescription = request.form['recordDescription'] - recordWebsite = request.form['recordWebsite'] - recordEmail = request.form['recordEmail'] - recordPhoneNumber = request.form['recordPhoneNumber'] - recordOpeningHours = request.form['recordOpeningHours'] - recordCheckinInstructions = request.form['recordCheckinInstructions'] + recordName = request.form.get('recordName', default="Error") + recordAddress = request.form.get('recordAddress', default="Error") + recordMainPhotos = request.form.get('recordMainPhotos', default="Error") + recordAdditionalPhotos = request.form.get('recordAdditionalPhotos', default="Error") + recordDescription = request.form.get('recordDescription', default="Error") + recordWebsite = request.form.get('recordWebsite', default="Error") + recordEmail = request.form.get('recordEmail', default="Error") + recordPhoneNumber = request.form.get('recordPhoneNumber', default="Error") + recordOpeningHours = request.form.get('recordOpeningHours', default="Error") + recordCheckinInstructions = request.form.get('recordCheckinInstructions', default="Error") recordData = [recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions] + print(f"Updating '{recordName}' in the database.") - conn = sqlite3.connect(DATABASE) - cur = conn.cursor() - cur.execute("UPDATE coworking_spaces SET 'Name' = ?, 'Address' = ?, 'Main_Photo' = ?, 'Additional_Photos' = ?, 'Description' = ?, 'Website' = ?, 'Email' = ?, 'Phone_Number' = ?, 'Opening_Hours' = ?, 'Checkin_Instructions' = ? WHERE Name=?;", [recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions, recordName]) - conn.commit() - conn.close() + try: + conn = sqlite3.connect(DATABASE) + cur = conn.cursor() + cur.execute("UPDATE coworking_spaces SET 'Name' = ?, 'Address' = ?, 'Main_Photo' = ?, 'Additional_Photos' = ?, 'Description' = ?, 'Website' = ?, 'Email' = ?, 'Phone_Number' = ?, 'Opening_Hours' = ?, 'Checkin_Instructions' = ? WHERE Name=?;", [recordName, recordAddress, recordMainPhotos, recordAdditionalPhotos, recordDescription, recordWebsite, recordEmail, recordPhoneNumber, recordOpeningHours, recordCheckinInstructions, recordName]) + conn.commit() + infoMessage = (f"Updated: '{recordName}'.") - infoMessage = (f'{recordData} Record amended.') + except: + conn.rollback() + infoMessage = (f"Error updating record.") - print(infoMessage) - return (infoMessage) + finally: + conn.close() + print(infoMessage) + return (infoMessage) if __name__ == "__main__": app.run(debug=True)