From 2da018775babb52adb5895081fbe20fbbf1a7fc5 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Tue, 28 Feb 2023 08:27:01 +0100 Subject: [PATCH] add url to get a qr code which leads to the feedback page for a specific talk --- pretalx_broadcast_tools/views.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pretalx_broadcast_tools/views.py b/pretalx_broadcast_tools/views.py index 169151f..12a80b2 100644 --- a/pretalx_broadcast_tools/views.py +++ b/pretalx_broadcast_tools/views.py @@ -1,7 +1,12 @@ import datetime as dt +from xml.etree import ElementTree as ET import pytz -from django.http import JsonResponse +import qrcode +import qrcode.image.svg +from django.conf import settings +from django.http import HttpResponse, JsonResponse +from django.utils.safestring import mark_safe from django.views import View from django.views.generic import FormView from django.views.generic.base import TemplateView @@ -65,6 +70,17 @@ class BroadcastToolsEventInfoView(View): ) +class BroadcastToolsFeedbackQrCode(View): + def get(self, request, *args, **kwargs): + talk = self.request.event.submissions.filter(id=kwargs["talk"]).first() + domain = request.event.custom_domain or settings.SITE_URL + image = qrcode.make( + f"{domain}{talk.urls.feedback}", image_factory=qrcode.image.svg.SvgImage + ) + svg_data = mark_safe(ET.tostring(image.get_image()).decode()) + return HttpResponse(svg_data, content_type="image/svg+xml") + + class BroadcastToolsScheduleView(EventPermissionRequired, ScheduleMixin, View): permission_required = "agenda.view_schedule"