From 046d9c920ac2439d02a18517083449f0e99f9e9d Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Mon, 19 Jan 2026 18:10:31 +0100 Subject: add and support HTML templates --- Readme.md | 16 +++++++--- spgen.py | 21 +++++++++++-- templates/8,9,9,4.html | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 8 deletions(-) create mode 100644 templates/8,9,9,4.html diff --git a/Readme.md b/Readme.md index 07b6e17..1e9e007 100644 --- a/Readme.md +++ b/Readme.md @@ -1,4 +1,4 @@ -# simple script to generate random seating plans using LaTeX templates +# simple script to generate random seating plans using templates ## Usage @@ -15,18 +15,24 @@ options: ``` +Pipeline to generate a HTML seating plan from a Infoportal csv class list. + +```sh +cat Klassenliste.csv | cut -f2 -d';' | ./spgen.py templates/8,9,9,4.html --seats=n > class.html +``` + ## Available Templates ``` templates -└── 4x(2,5).tex - -1 directory, 1 file +├── 4x(2,5).tex +├── 8,9,9,4.html +└── 8,9,9,4.tex ``` ## Requirements -* python >= 3.11 +* python >= 3.10 The requirements can be installed in virtual environment using [`pipenv`](https://pipenv.pypa.io/). diff --git a/spgen.py b/spgen.py index 42ddfed..a72f440 100755 --- a/spgen.py +++ b/spgen.py @@ -8,6 +8,10 @@ import sys class SPTemplate(Template): + """Seating plan template + + %% is used as delimiter because the most templates are written in LaTeX. + """ delimiter = '%%' @@ -15,11 +19,22 @@ def print_sp_template(template: SPTemplate, duration: str, names: list[str], seats: list[int]): """Print the template including our name definitions""" defs = [] - for name in names: - seat = seats.pop() + seating = {i: '' for i in range(1, 33)} + for i, name in enumerate(names): + seat = seats[i] + seating[seat] = name defs.append(rf'\csdef{{name{seat}}}{{{name}}}') + defs.append(rf'\csdef{{duration}}{{{duration}}}') - print(template.substitute({'defs': '\n'.join(defs)})) + + subs = { + 'defs': '\n'.join(defs) + } | { + f'name{seat}': name + for seat, name in seating.items() + } + + print(template.substitute(subs)) def main(): diff --git a/templates/8,9,9,4.html b/templates/8,9,9,4.html new file mode 100644 index 0000000..f087d48 --- /dev/null +++ b/templates/8,9,9,4.html @@ -0,0 +1,83 @@ + + + + + + Sitzplan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%%name1%%name9%%name10
%%name2%%name11%%name12%%name27
%%name3%%name13%%name14%%name28
%%name4%%name15%%name16%%name29
%%name5%%name17%%name18%%name30
%%name6%%name19%%name20
%%name7%%name21%%name22
%%name8%%name23%%name24
%%name25%%name26
+ + -- cgit v1.2.3