diff options
Diffstat (limited to 'cgi')
| -rw-r--r-- | cgi/add_participant.py | 87 | ||||
| -rw-r--r-- | cgi/create_meeting.py | 55 | ||||
| -rw-r--r-- | cgi/init_sqlite.py | 17 | ||||
| -rw-r--r-- | cgi/view_meeting.py | 45 |
4 files changed, 204 insertions, 0 deletions
diff --git a/cgi/add_participant.py b/cgi/add_participant.py new file mode 100644 index 0000000..7431b3b --- /dev/null +++ b/cgi/add_participant.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 + +import os +import sqlite3 + +db_path = "terminfinder_db.sqlite" + +if not os.path.exists(db_path): + print(f"DB named {db_path} does not exist!") + exit(1) + +con = sqlite3.connect(db_path) +cur = con.cursor() + + +def add_participant(meeting_id, part_name, data): + select = cur.execute( + "SELECT participants FROM meeting WHERE meeting_id = ?;", (meeting_id,) + ) + participants = select.fetchone()[0] + if participants is not None and part_name in participants.split(","): + print("Participant name already taken!") + else: + cur.execute( + "UPDATE meeting SET participants = ? WHERE meeting_id = ?;", + ( + ( + participants + "," + part_name + if participants is not None + else part_name + ), + meeting_id, + ), + ) + for datum in data: + if datum[1]: + select = cur.execute( + f"SELECT confirming FROM meeting_dates_{meeting_id} WHERE date = ?;", + (datum[0],), + ) + result = select.fetchone() + new_confirming = ( + result[0] + "," + part_name if result[0] is not None else part_name + ) + cur.execute( + f"UPDATE meeting_dates_{meeting_id} SET confirming = ? WHERE date = ?;", + ( + new_confirming, + datum[0], + ), + ) + else: + select = cur.execute( + f"SELECT declining FROM meeting_dates_{meeting_id} WHERE date = ?;", + (datum[0],), + ) + result = select.fetchone() + new_declining = ( + result[0] + "," + part_name if result[0] is not None else part_name + ) + cur.execute( + f"UPDATE meeting_dates_{meeting_id} SET declining = ? WHERE date = ?;", + ( + new_declining, + datum[0], + ), + ) + con.commit() + + +meeting_id = "meet1" +part_name = "niklas" +data = [ + ("2026-01-01_12-00", True), + ("2026-01-01_13-00", False), + ("2026-01-02_14-00", True), +] +add_participant(meeting_id, part_name, data) + +meeting_id = "meet1" +part_name = "philip" +data = [ + ("2026-01-01_12-00", False), + ("2026-01-01_13-00", True), + ("2026-01-02_14-00", True), +] +add_participant(meeting_id, part_name, data) diff --git a/cgi/create_meeting.py b/cgi/create_meeting.py new file mode 100644 index 0000000..01615c2 --- /dev/null +++ b/cgi/create_meeting.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +import os +import sqlite3 + +db_path = "terminfinder_db.sqlite" + +if not os.path.exists(db_path): + print(f"DB named {db_path} does not exist!") + exit(1) + +con = sqlite3.connect(db_path) +cur = con.cursor() + + +def create_meeting(meeting_id, meeting_name, meeting_description, meeting_dates): + select = cur.execute( + "SELECT meeting_id FROM meeting;") + meeting_ids = select.fetchall() + if meeting_id in (x[0] for x in meeting_ids): + print("meeting_id is already taken!") + else: + cur.execute( + "INSERT INTO meeting (meeting_id, title, description, possible_dates, participants) VALUES (?, ?, ?, ?, ?);", + ( + meeting_id, + meeting_name, + meeting_description, + meeting_dates, + None, + ), + ) + cur.execute( + f"CREATE TABLE meeting_dates_{meeting_id}(date, confirming, declining, meeting_id, PRIMARY KEY (date) FOREIGN KEY (meeting_id) REFERENCES meeting(meeting_id))" + ) + + for date in meeting_dates.split(","): + cur.execute( + f"INSERT INTO meeting_dates_{meeting_id} (date, confirming, declining, meeting_id) VALUES (?, ?, ?, ?);", + (date, None, None, meeting_id), + ) + con.commit() + + +meeting_id = "meet1" +meeting_name = "My first meeting" +meeting_description = "This is a test meeting description" +meeting_dates = "2026-01-01_12-00,2026-01-01_13-00,2026-01-02_14-00" +create_meeting(meeting_id, meeting_name, meeting_description, meeting_dates) + +meeting_id = "meet2" +meeting_name = "My second meeting" +meeting_description = "This is a test meeting description" +meeting_dates = "2026-01-01_12-00,2026-01-01_13-00,2026-01-02_14-00" +create_meeting(meeting_id, meeting_name, meeting_description, meeting_dates) diff --git a/cgi/init_sqlite.py b/cgi/init_sqlite.py new file mode 100644 index 0000000..acc6153 --- /dev/null +++ b/cgi/init_sqlite.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import os +import sqlite3 + +db_path = "terminfinder_db.sqlite" + +if os.path.exists(db_path): + print(f"DB named {db_path} already exists") + exit(1) + +con = sqlite3.connect(db_path) +cur = con.cursor() + +cur.execute( + "CREATE TABLE meeting(meeting_id, title, description, possible_dates, participants, PRIMARY KEY (meeting_id))" +) diff --git a/cgi/view_meeting.py b/cgi/view_meeting.py new file mode 100644 index 0000000..69ae1e3 --- /dev/null +++ b/cgi/view_meeting.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + + +import os +import sqlite3 +from urllib.parse import parse_qs + +query_string = os.environ.get("QUERY_STRING") +params = parse_qs(query_string) + + +db_path = "terminfinder_db.sqlite" + +if not os.path.exists(db_path): + print(f"DB named {db_path} does not exist!") + exit(1) + +con = sqlite3.connect(db_path) +cur = con.cursor() + +meeting_id = "meet1" + + +def extract_meeting(meeting_id): + # Data from meeting table + select = cur.execute(f"SELECT * FROM meeting WHERE meeting_id = ?;", (meeting_id,)) + result = select.fetchone() + meeting_data = {"meeting_id": meeting_id, "title": result[1], + "description": result[2], + "dates": result[3].split(",") if not result[3] is None else "", + "participants": result[4].split(",") if not result[4] is None else ""} + + # Individual dates data + select = cur.execute(f"SELECT * FROM meeting_dates_{meeting_id};") + result = select.fetchall() + + return meeting_data + + +meeting_data = extract_meeting(meeting_id) + +print("Content-Type: text/plain") +print("") +print() +print(meeting_data) |
