From c53b89100adda762b8cc9f44bcdc1fac60c5bd14 Mon Sep 17 00:00:00 2001 From: David Rodenkirchen Date: Tue, 5 May 2026 18:41:44 +0200 Subject: [PATCH] fu --- ezgg_badge_generator.py | 6 +++++- output_badges/merge.py | 13 +++++++++++ services/DatabaseService.py | 43 ++++++++++++++++++++++++------------- 3 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 output_badges/merge.py diff --git a/ezgg_badge_generator.py b/ezgg_badge_generator.py index 575b77e..08b8dc3 100644 --- a/ezgg_badge_generator.py +++ b/ezgg_badge_generator.py @@ -6,7 +6,11 @@ def main(): db = DatabaseService("config.toml") db.init_db() - badges = db.get_user_badges() + user_id = input("Einzelticket ID:") + if user_id == "": + badges = db.get_user_badges() + else: + badges = db.get_user_badges(int(user_id.strip())) badge_generator = BadgeGeneratorService("config.toml") diff --git a/output_badges/merge.py b/output_badges/merge.py new file mode 100644 index 0000000..f81b60c --- /dev/null +++ b/output_badges/merge.py @@ -0,0 +1,13 @@ +import os +from subprocess import check_output, DEVNULL + +from from_root import from_root + +for file in os.listdir(from_root("output_badges")): + if file.endswith(".pdf"): + outfile_name = file.split(".pdf")[0] + outfile_name += "-print.pdf" + check_output( + ["pdfjam", file, "--nup", "1x2", "--paper", "a4paper", "--noautoscale", "true", "--outfile", outfile_name], + stderr=DEVNULL + ) diff --git a/services/DatabaseService.py b/services/DatabaseService.py index f9812f6..b6037d5 100644 --- a/services/DatabaseService.py +++ b/services/DatabaseService.py @@ -24,18 +24,31 @@ class DatabaseService: cursorclass=pymysql.cursors.DictCursor) logger.info("Connected to database.") - def get_user_badges(self) -> List[Dict]: - with self._conn.cursor() as cursor: - cursor.execute( - """SELECT u.user_id, u.user_name, s.seat_id, upp.picture, tic.ticket_id - FROM users AS u - LEFT JOIN seats AS s - ON u.user_id = s.`user` - LEFT JOIN user_profile_picture AS upp - ON u.user_id = upp.user_id - INNER JOIN tickets AS tic - ON u.user_id = tic.user;""" - ) - user_badges = cursor.fetchall() - logger.info(f"Got {len(user_badges)} user badges from database.") - return user_badges + def get_user_badges(self, user_id: Optional[int] = None) -> List[Dict]: + if user_id is None: + with self._conn.cursor() as cursor: + cursor.execute( + """SELECT u.user_id, u.user_name, s.seat_id, upp.picture, tic.ticket_id + FROM users AS u + LEFT JOIN seats AS s + ON u.user_id = s.`user` + LEFT JOIN user_profile_picture AS upp + ON u.user_id = upp.user_id + INNER JOIN tickets AS tic + ON u.user_id = tic.user;""" + ) + user_badges = cursor.fetchall() + else: + with self._conn.cursor() as cursor: + cursor.execute( + """SELECT u.user_id, u.user_name, s.seat_id, upp.picture + FROM users AS u + LEFT JOIN seats AS s + ON u.user_id = s.`user` + LEFT JOIN user_profile_picture AS upp + ON u.user_id = upp.user_id + WHERE u.user_id = %s;""", (user_id,) + ) + user_badges = cursor.fetchall() + logger.info(f"Got {len(user_badges)} user badges from database.") + return user_badges