From 4e55fc8273f92f8ec3a39757ed5bf1b0db457f79 Mon Sep 17 00:00:00 2001 From: tcprod Date: Sun, 15 Mar 2026 21:15:17 +0100 Subject: [PATCH] add clean badge generation for each user from database --- .gitignore | 3 +- ezgg_badge_generator.py | 27 +++ requirements.txt | 3 + services/BadgeGeneratorService.py | 68 +++++++ services/DatabaseService.py | 38 ++++ services/__init__.py | 0 sql_config.toml | 6 + template/Vorlage_LAN_Ausweis_mit_Daten.svg | 200 -------------------- template/badge_pdf.html | 39 ++++ template/template_dynamic_name_size.svg | 203 +++++++++++++++++++++ template/test_profile_picture.png | Bin 101234 -> 0 bytes user_badge_creator.py | 104 ----------- 12 files changed, 386 insertions(+), 305 deletions(-) create mode 100644 ezgg_badge_generator.py create mode 100644 requirements.txt create mode 100644 services/BadgeGeneratorService.py create mode 100644 services/DatabaseService.py create mode 100644 services/__init__.py create mode 100644 sql_config.toml delete mode 100644 template/Vorlage_LAN_Ausweis_mit_Daten.svg create mode 100644 template/badge_pdf.html create mode 100644 template/template_dynamic_name_size.svg delete mode 100644 template/test_profile_picture.png delete mode 100644 user_badge_creator.py diff --git a/.gitignore b/.gitignore index 40cb5fc..d91c3ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .venv test.pdf -.idea \ No newline at end of file +.idea +files \ No newline at end of file diff --git a/ezgg_badge_generator.py b/ezgg_badge_generator.py new file mode 100644 index 0000000..ef70003 --- /dev/null +++ b/ezgg_badge_generator.py @@ -0,0 +1,27 @@ +import asyncio + +from services.DatabaseService import DatabaseService +from services.BadgeGeneratorService import BadgeGeneratorService +from pathlib import Path + + +async def main(): + db = DatabaseService("sql_config.toml") + await db.init_db_pool() + + badges = await db.get_user_badges() + + badge_generator = BadgeGeneratorService( + svg_template=Path("template/template_dynamic_name_size.svg"), + chrome_path=Path(r"C:\Program Files\Google\Chrome\Application\chrome.exe") + ) + for user_badge in badges: + badge_generator.generate_badge( + name=user_badge["user_name"], + seat_id=user_badge["seat_id"], + picture=user_badge["picture"] + ) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..643d45d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +mysql-connector-python~=9.6.0 +aiomysql~=0.3.2 +Jinja2~=3.1.6 \ No newline at end of file diff --git a/services/BadgeGeneratorService.py b/services/BadgeGeneratorService.py new file mode 100644 index 0000000..c746268 --- /dev/null +++ b/services/BadgeGeneratorService.py @@ -0,0 +1,68 @@ +import logging +import os +import re +import base64 +import subprocess +import tempfile +from pathlib import Path +from jinja2 import Environment, FileSystemLoader + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s" +) + +logger = logging.getLogger(__name__.split(".")[-1]) + + +class BadgeGeneratorService: + + def __init__(self, svg_template: Path, chrome_path: Path): + self.svg_template = svg_template + self.chrome_path = chrome_path + + def generate_badge(self, name, seat_id, picture) -> None: + svg = self.generate_svg(name, seat_id, picture) + self.svg_to_pdf(svg, f"files/{name}.pdf") + + def generate_svg(self, username: str, seat: str, image_base64: bytes) -> str: + with open(self.svg_template, "r", encoding="utf-8") as f: + svg = f.read() + # ToDo: Select font size for long names + svg = svg.replace(">test_username", f">{username}") + svg = svg.replace(">Platz: XYZ<", f">Platz: {seat}<") + if image_base64: + encoded = base64.b64encode(image_base64).decode("utf-8") + svg = svg.replace('xlink:href="data:image/jpeg;base64,"', f'xlink:href="data:image/jpeg;base64,{encoded}"') + logger.info(f"Generate svg string: Username: {username}, Seat: {seat}, Picture: {str(image_base64)[:15]}") + return svg + + def svg_to_pdf(self, svg_string: str, pdf_path: str): + + width = re.search(r'width="([^"]+)"', svg_string).group(1) + height = re.search(r'height="([^"]+)"', svg_string).group(1) + + env = Environment(loader=FileSystemLoader("template")) + template = env.get_template("badge_pdf.html") + + html = template.render( + width=width, + height=height, + svg_string=svg_string + ) + + with tempfile.NamedTemporaryFile(delete=False, suffix=".html", mode="w", encoding="utf-8") as f: + f.write(html) + html_path = f.name + + try: + subprocess.run([ + self.chrome_path, + "--headless", + "--disable-gpu", + f"--print-to-pdf={os.path.abspath(pdf_path)}", + html_path + ], check=True) + finally: + os.remove(html_path) + logger.info(f"Created: {pdf_path}") diff --git a/services/DatabaseService.py b/services/DatabaseService.py new file mode 100644 index 0000000..0236a13 --- /dev/null +++ b/services/DatabaseService.py @@ -0,0 +1,38 @@ +import tomllib +import aiomysql +from typing import Optional + + +class DatabaseService: + + def __init__(self, sql_config: str): + with open(sql_config, "rb") as f: + config = tomllib.load(f) + + self.db_config = config["database"] + self._pool: Optional[aiomysql.Pool] = None + + async def init_db_pool(self): + self._pool = await aiomysql.create_pool( + host=self.db_config["db_host"], + port=self.db_config["db_port"], + user=self.db_config["db_user"], + password=self.db_config["db_password"], + db=self.db_config["db_name"], + minsize=1, + maxsize=40, + autocommit=True + ) + + async def get_user_badges(self) -> list: + async with self._pool.acquire() as conn: + async with conn.cursor(aiomysql.DictCursor) as cursor: + await 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;""" + ) + return await cursor.fetchall() diff --git a/services/__init__.py b/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sql_config.toml b/sql_config.toml new file mode 100644 index 0000000..8411c13 --- /dev/null +++ b/sql_config.toml @@ -0,0 +1,6 @@ +[database] + db_user="demo_user" + db_password="demo_password" + db_host="127.0.0.1" + db_port=3306 + db_name="ezgg_lan_manager" \ No newline at end of file diff --git a/template/Vorlage_LAN_Ausweis_mit_Daten.svg b/template/Vorlage_LAN_Ausweis_mit_Daten.svg deleted file mode 100644 index 3a6466c..0000000 --- a/template/Vorlage_LAN_Ausweis_mit_Daten.svg +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - - - - - - - -LANtest_namePlatz: c05ich bin dein bier-geld diff --git a/template/badge_pdf.html b/template/badge_pdf.html new file mode 100644 index 0000000..58093f0 --- /dev/null +++ b/template/badge_pdf.html @@ -0,0 +1,39 @@ + + + + + + +
+{{ svg_string | safe }} +
+ +
+{{ svg_string | safe }} +
+ + + \ No newline at end of file diff --git a/template/template_dynamic_name_size.svg b/template/template_dynamic_name_size.svg new file mode 100644 index 0000000..7f6560a --- /dev/null +++ b/template/template_dynamic_name_size.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + +LANtest_usernamePlatz: XYZich bin dein bier-geld diff --git a/template/test_profile_picture.png b/template/test_profile_picture.png deleted file mode 100644 index 3ac36575124c8e419935c2fc2f4972242147aad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101234 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

    hh3}dVWF&7%4Byz_mhyw7-V;JHlX|yzQ2qlb5lZ zqDHG}UV< zaexVLB1*}|dWP=ezV328c@c>EY%MC0xKA@o)}s#u6%Fi(+nxJE>;6`IuX7C48>cd{ zpfwOiHtDZ$jqmGIX}o>^{)G4eJnue4y!WO!_4T?eca0D9U%fgaZTT|Uykp7~rEan( zzW7e$(Y(=D^Nv=>i%mE``TP5yKYQ}vXl2u`LvB+y3f*CD6iXG0@jW^ z+m1~Ru)Bx9f0BK1U=1fHXRt9huSJ&e1m`P%O)IVPuy36YuQsVH1vDQhDAaWFh(T7j zFY{HijzYuo@^eF3k0`3;>c;Y zJ$ta_pvlt}e`MHy{QTDkfZ{J_ezK%aiH_GANVNyf7WqXmEJE*ujP8BO~9Ib4r^V#4u7&?ceT9Oa9}CCskzY@D1^DAt{# zfBjNOt~@_pR#)}2H1UdQtiQi{{~=fFLi6#Tcg8!}OinGlA5BYji9K7&#rf&H^~X6w zy`u52?U8}otXkU6KY1)^D;Is3m(HlB)?IzWhtF8zh>^T)dr|9#q9-qHPhIL&3J)1! z+pDJ5cI@)sN9GxHlapKXKuFrOt>fh_e)|odNrIot=C|w5{^;DO?~z%qPWznC9iDp0 zAyIQwOhlwcQo8ZSmAu5WCxPM0h0ko+QM6!d(O=@~#;`9~&%+h}o@*J4+|IxQY=4V# zM_P3@jmux9dze?09xmUVc4*1mtSlbB=4$SX{ia5Tvb*M{gV#KuZRfV*8;HA>U7y`! zdVl_AWOMo%3;uPJeq_nAcsERZ*dPbLUr@xQ=JYujHwo`n;;6 zW@bQ5&DoGGl*MuN$EvyP^uZqfO@mvXTaS;~ShT48w$HrNp{J(SaMWjOqm07BgrDg( zt9pLB2LbQTuNkyynCppR&|NqVVP5g`p%p^x=UkX6`=;U)|CT#O4F5y zb2FQJJejZFRbhR8a&zy&sss&)&UQVWiyRZz^V>f9&^I(_mY>0Eh?RXp2vE_Z?c$Z; zMS2geG^9s#KX+Ni))&inY4?_*?7g`cZGwIc4n)^|YPwV3TIa5zudjc>&P9K6DkS9l zOQ*gMmft>3#VWh2D>@_|R&@Cr^XJdyF*-%ju3SxhlDH=52@hZQ&~u+-14o{|kdUOM zZQUh1J$dimJ<;4?{mIV1K930fsnW}KU{obxRMvNunfGZ5zqI!2simu){`da?VYFiM diff --git a/user_badge_creator.py b/user_badge_creator.py deleted file mode 100644 index 21af5f0..0000000 --- a/user_badge_creator.py +++ /dev/null @@ -1,104 +0,0 @@ -import os -import re -import base64 -import subprocess -import tempfile -from pathlib import Path - -SVG_TEMPLATE = Path("template/Vorlage_LAN_Ausweis.svg") -CHROME_PATH = Path(r"C:\Program Files\Google\Chrome\Application\chrome.exe") - - -def get_image_as_base64(image_path: str) -> str: - with open(image_path, "rb") as image_file: - encoded_bytes = base64.b64encode(image_file.read()) - encoded_string = encoded_bytes.decode("utf-8") - return f'xlink:href="data:image/jpeg;base64,{encoded_string}"' - - -def get_user_svg_string(username: str, seat: str, user_image: str) -> str: - with open(SVG_TEMPLATE, "r", encoding="utf-8") as svg_file: - svg_string = svg_file.read() - - svg_string = svg_string.replace(">test_username", f">{username}") - svg_string = svg_string.replace(">Platz: XYZ<", f">Platz: {seat}<") - svg_string = svg_string.replace('xlink:href="data:image/jpeg;base64,"', user_image) - - """ - with open("test.svg", "w", encoding="utf-8") as f: - f.write(svg_content) - """ - - return svg_string - - -def create_pdf_from_svg(svg_string: str, pdf_path: str): - width = re.search(r'width="([^"]+)"', svg_string) - height = re.search(r'height="([^"]+)"', svg_string) - - width = width.group(1) - height = height.group(1) - - html = f""" - - - - - - -

    -{svg_string} -
    - -
    -{svg_string} -
    - - - -""" - - with tempfile.NamedTemporaryFile(delete=False, suffix=".html", mode="w", encoding="utf-8") as f: - f.write(html) - html_path = f.name - - try: - subprocess.run([ - CHROME_PATH, - "--headless", - "--disable-gpu", - f"--print-to-pdf={os.path.abspath(pdf_path)}", - html_path - ], check=True) - finally: - os.remove(html_path) - - -if __name__ == "__main__": - img_base64 = get_image_as_base64("template/test_profile_picture.png") - user_svg_string = get_user_svg_string("Tcprod.", "C01", img_base64) - create_pdf_from_svg(user_svg_string, "test.pdf")