From ac6fc809331315de88e33248f262b5ddefd43ef5 Mon Sep 17 00:00:00 2001
From: Liam Driscoll <driscolll4@cardiff.ac.uk>
Date: Tue, 6 Dec 2022 16:29:24 +0000
Subject: [PATCH 1/2] Updating functions.

---
 project_server.py | 97 ++++++++++++++++++++++++++++++-----------------
 1 file changed, 62 insertions(+), 35 deletions(-)

diff --git a/project_server.py b/project_server.py
index d709010..a69276e 100644
--- a/project_server.py
+++ b/project_server.py
@@ -7,73 +7,100 @@ 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
+
 @app.route("/SearchRecord", methods=['POST'])
 def searchRecord():
 
     if request.method =='POST':
+
+        recordName = request.form.get('recordName', default="Error")
+        print(f"Searching for '{recordName}' in 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"Error searching for record.")
+
         finally:
             conn.close()
-            print(f"{str(recordData)} Record found.")
-            return str(recordData)
 
-# Adds a record to the CSV file.
+            if not recordData: #If recordData is an empty list...
+                print(f"'{recordName}' not found.")
+                return (f"'{recordName}' not found.")
+
+            else:
+                print(f"Found: {recordData}")
+                return (str(recordData))
+
 @app.route("/AddRecord", methods=['POST'])
 def addRecord():
 
-    print('Processing record.')
-    infoMessage = ('Add record failed.')
-
     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 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'])
 def deleteRecord():
 
     if request.method =='POST':
+        recordName = request.form.get('recordName', default="Error")
+        print(f"Deleting '{recordName}' from 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.")
+            print(infoMessage)
+            return (infoMessage)
 
 @app.route("/EditRecord", methods=['POST'])
 def editRecord():
@@ -100,7 +127,7 @@ def editRecord():
         conn.commit()
         conn.close()
 
-        infoMessage = (f'{recordData} Record amended.')
+        infoMessage = (f'Updated: {recordData}')
 
     print(infoMessage)
     return (infoMessage)
-- 
GitLab


From 10b883cd7b79f9536bf3a90784068a52f012b87f Mon Sep 17 00:00:00 2001
From: Liam Driscoll <driscolll4@cardiff.ac.uk>
Date: Tue, 6 Dec 2022 17:57:22 +0000
Subject: [PATCH 2/2] Updates.

---
 project_server.py | 70 ++++++++++++++++++++++++-----------------------
 1 file changed, 36 insertions(+), 34 deletions(-)

diff --git a/project_server.py b/project_server.py
index a69276e..5e98f5d 100644
--- a/project_server.py
+++ b/project_server.py
@@ -17,13 +17,12 @@ def connect_db(db_file=DATABASE):
         print("Error connecting to database.")
     return conn
 
-@app.route("/SearchRecord", methods=['POST'])
+@app.route('/SearchRecord', methods=['POST'])
 def searchRecord():
 
-    if request.method =='POST':
-
+    if (request.method =='POST'):
         recordName = request.form.get('recordName', default="Error")
-        print(f"Searching for '{recordName}' in database.")
+        print(f"Searching for '{recordName}' in the database.")
 
         try:
             conn = connect_db()
@@ -32,7 +31,7 @@ def searchRecord():
             recordData = cur.fetchall()
 
         except:
-            print(f"Error searching for record.")
+            print(f"Encountered an error whilst searching for record.")
 
         finally:
             conn.close()
@@ -43,9 +42,9 @@ def searchRecord():
 
             else:
                 print(f"Found: {recordData}")
-                return (str(recordData))
+                return (recordData)
 
-@app.route("/AddRecord", methods=['POST'])
+@app.route('/AddRecord', methods=['POST'])
 def addRecord():
 
     if (request.method == 'POST'):
@@ -60,7 +59,7 @@ def addRecord():
         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 database.")
+        print(f"Adding '{recordName}' to the database.")
 
         try:
             conn = connect_db()
@@ -79,12 +78,12 @@ def addRecord():
             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 database.")
+        print(f"Deleting '{recordName}' from the database.")
 
         try:
             conn = sqlite3.connect(DATABASE)
@@ -102,35 +101,38 @@ def deleteRecord():
             print(infoMessage)
             return (infoMessage)
 
-@app.route("/EditRecord", methods=['POST'])
-def editRecord():
-
-    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'Updated: {recordData}')
+        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)
-- 
GitLab