diff --git a/datentrog.py b/datentrog.py index f68841f..ba04da8 100755 --- a/datentrog.py +++ b/datentrog.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 import bottle +import io +import qrcode +import qrcode.image.styledpil as qrstyled import sqlite3 @@ -18,6 +21,13 @@ cursor.execute(""" """) +def url(route): + return '%s://%s/%s' % ( + bottle.request.urlparts.scheme, + bottle.request.urlparts.netloc, + route) + + @application.get("/") @bottle.view("template/new.tpl") def new_get(): @@ -29,7 +39,7 @@ def new_get(): def new_post(): event = bottle.request.forms.get("event", "") if event: - bottle.redirect("event/" + event) + bottle.redirect(url("qr/" + event)) return dict(event=event, feedback=True) @@ -38,6 +48,23 @@ def static_get(file): return bottle.static_file(file, root="static") +@application.get("/qr/") +@bottle.view("template/qr.tpl") +def qr_get(event): + return dict(event=event, url=url("event/" + event)) + + +@application.get("/qr/img/.png") +def qr_img_get(event): + qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=20) + qr.add_data(url("event/" + event)) + image = qr.make_image(image_factory=qrstyled.StyledPilImage, embeded_image_path="heizhaus_logo_square.png") + buffer = io.BytesIO() + image.save(buffer, format="PNG") + bottle.response.content_type = "image/png" + return buffer.getvalue() + + @application.get("/event/") @bottle.view("template/event.tpl") def event_get(event): diff --git a/heizhaus_logo.png b/heizhaus_logo.png new file mode 100644 index 0000000..8d66416 Binary files /dev/null and b/heizhaus_logo.png differ diff --git a/heizhaus_logo_circle.png b/heizhaus_logo_circle.png new file mode 100644 index 0000000..f466b76 Binary files /dev/null and b/heizhaus_logo_circle.png differ diff --git a/heizhaus_logo_square.png b/heizhaus_logo_square.png new file mode 100644 index 0000000..1f4c40a Binary files /dev/null and b/heizhaus_logo_square.png differ diff --git a/requirements.txt b/requirements.txt index 310dc0b..50dd77f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ bottle +qrcode[pil] diff --git a/template/event.tpl b/template/event.tpl index 802a9c2..6acc826 100644 --- a/template/event.tpl +++ b/template/event.tpl @@ -1,4 +1,4 @@ -% rebase('template/toplevel.tpl', title=event) +% rebase("template/toplevel.tpl", title=event) % if get("success", False):
Erfolgreich registriert.
diff --git a/template/new.tpl b/template/new.tpl index a329524..8091552 100644 --- a/template/new.tpl +++ b/template/new.tpl @@ -1,8 +1,8 @@ -% rebase('template/toplevel.tpl', title='Neu erstellen') +% rebase("template/toplevel.tpl", title="Neu erstellen")
- + % if get("feedback", False): % end diff --git a/template/qr.tpl b/template/qr.tpl new file mode 100644 index 0000000..aa55399 --- /dev/null +++ b/template/qr.tpl @@ -0,0 +1,7 @@ +% rebase("template/toplevel.tpl", title=event) +
+ Zum Formular + +
+QR-Code +

{{ url }}