From 5aa8e0d2dafadabbe3796f63741868a9b0d17a5c Mon Sep 17 00:00:00 2001 From: Niclas Dobbertin Date: Fri, 10 Jul 2026 11:51:09 +0200 Subject: move into subdirs --- add_participant.py | 87 -------------------------------------------------- cgi/add_participant.py | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ cgi/create_meeting.py | 55 +++++++++++++++++++++++++++++++ cgi/init_sqlite.py | 17 ++++++++++ cgi/view_meeting.py | 45 ++++++++++++++++++++++++++ create_meeting.py | 56 -------------------------------- init_sqlite.py | 17 ---------- view_meeting.py | 37 --------------------- www/index.html | 19 +++++++++++ 9 files changed, 223 insertions(+), 197 deletions(-) delete mode 100644 add_participant.py create mode 100644 cgi/add_participant.py create mode 100644 cgi/create_meeting.py create mode 100644 cgi/init_sqlite.py create mode 100644 cgi/view_meeting.py delete mode 100644 create_meeting.py delete mode 100644 init_sqlite.py delete mode 100644 view_meeting.py create mode 100644 www/index.html diff --git a/add_participant.py b/add_participant.py deleted file mode 100644 index 7431b3b..0000000 --- a/add_participant.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/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/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) diff --git a/create_meeting.py b/create_meeting.py deleted file mode 100644 index d07172c..0000000 --- a/create_meeting.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/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() - print(meeting_ids) - 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/init_sqlite.py b/init_sqlite.py deleted file mode 100644 index acc6153..0000000 --- a/init_sqlite.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/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/view_meeting.py b/view_meeting.py deleted file mode 100644 index 5ec8dd0..0000000 --- a/view_meeting.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/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() - -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() - print(result) - - return meeting_data - - -meeting_data = extract_meeting(meeting_id) -print(meeting_data) diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..4811061 --- /dev/null +++ b/www/index.html @@ -0,0 +1,19 @@ + + + + +

Termin Finden

+ +
+
+
+ + + +
+ +

If you click the "Submit" button, the form-data will be sent to a page called "/view_meeting".

+ + + + -- cgit v1.2.3