diff --git a/openslides/participant/pdf.py b/openslides/participant/pdf.py
new file mode 100644
index 000000000..788e49ee2
--- /dev/null
+++ b/openslides/participant/pdf.py
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+
+from django.utils.translation import ugettext as _
+from reportlab.graphics.barcode.qr import QrCodeWidget
+from reportlab.graphics.shapes import Drawing
+from reportlab.lib import colors
+from reportlab.lib.units import cm
+from reportlab.platypus import (LongTable, PageBreak, Paragraph, Spacer, Table,
+ TableStyle)
+
+from openslides.config.api import config
+from openslides.utils.pdf import stylesheet
+
+from .models import User
+
+
+def participants_to_pdf(pdf):
+ """
+ Create a list of all participants as PDF
+ """
+ data = [['#', _('Title'), _('Last Name'), _('First Name'),
+ _('Structure level'), _('Group')]]
+ if config['participant_sort_users_by_first_name']:
+ sort = 'first_name'
+ else:
+ sort = 'last_name'
+ counter = 0
+ for user in User.objects.all().order_by(sort):
+ counter += 1
+ groups = ''
+ for group in user.groups.all():
+ if group.pk != 2:
+ groups += "%s
" % unicode(_(group.name))
+ data.append([
+ counter,
+ Paragraph(user.title, stylesheet['Tablecell']),
+ Paragraph(user.last_name, stylesheet['Tablecell']),
+ Paragraph(user.first_name, stylesheet['Tablecell']),
+ Paragraph(user.structure_level, stylesheet['Tablecell']),
+ Paragraph(groups, stylesheet['Tablecell'])])
+ t = LongTable(data, style=[
+ ('VALIGN', (0, 0), (-1, -1), 'TOP'),
+ ('LINEABOVE', (0, 0), (-1, 0), 2, colors.black),
+ ('LINEABOVE', (0, 1), (-1, 1), 1, colors.black),
+ ('LINEBELOW', (0, -1), (-1, -1), 2, colors.black),
+ ('ROWBACKGROUNDS', (0, 1), (-1, -1),
+ (colors.white, (.9, .9, .9)))])
+ t._argW[0] = 0.75 * cm
+ t._argW[1] = 1 * cm
+ pdf.append(t)
+ return pdf
+
+
+def participants_passwords_to_pdf(pdf):
+ """
+ Create access data sheets for all participants as PDF
+ """
+ system_wlan_ssid = config["system_wlan_ssid"] or "-"
+ system_wlan_password = config["system_wlan_password"] or "-"
+ system_wlan_encryption = config["system_wlan_encryption"] or "-"
+ system_url = config["system_url"] or "-"
+ participant_pdf_welcometitle = config["participant_pdf_welcometitle"]
+ participant_pdf_welcometext = config["participant_pdf_welcometext"]
+ if config['participant_sort_users_by_first_name']:
+ sort = 'first_name'
+ else:
+ sort = 'last_name'
+ qrcode_size = 2 * cm
+ # qrcode for system url
+ qrcode_url = QrCodeWidget(system_url)
+ qrcode_url.barHeight = qrcode_size
+ qrcode_url.barWidth = qrcode_size
+ qrcode_url.barBorder = 0
+ qrcode_url_draw = Drawing(45, 45)
+ qrcode_url_draw.add(qrcode_url)
+ # qrcode for wlan
+ text = "WIFI:S:%s;T:%s;P:%s;;" % (system_wlan_ssid, system_wlan_encryption, system_wlan_password)
+ qrcode_wlan = QrCodeWidget(text)
+ qrcode_wlan.barHeight = qrcode_size
+ qrcode_wlan.barWidth = qrcode_size
+ qrcode_wlan.barBorder = 0
+ qrcode_wlan_draw = Drawing(45, 45)
+ qrcode_wlan_draw.add(qrcode_wlan)
+
+ for user in User.objects.all().order_by(sort):
+ pdf.append(Paragraph(unicode(user), stylesheet['h1']))
+ pdf.append(Spacer(0, 1 * cm))
+ data = []
+ # WLAN access data
+ cell = []
+ cell.append(Paragraph(_("WLAN access data"),
+ stylesheet['h2']))
+ cell.append(Paragraph("%s:" % _("WLAN name (SSID)"),
+ stylesheet['formfield']))
+ cell.append(Paragraph(system_wlan_ssid,
+ stylesheet['formfield_value']))
+ cell.append(Paragraph("%s:" % _("WLAN password"),
+ stylesheet['formfield']))
+ cell.append(Paragraph(system_wlan_password,
+ stylesheet['formfield_value']))
+ cell.append(Paragraph("%s:" % _("WLAN encryption"),
+ stylesheet['formfield']))
+ cell.append(Paragraph(system_wlan_encryption,
+ stylesheet['formfield_value']))
+ cell.append(Spacer(0, 0.5 * cm))
+ # OpenSlides access data
+ cell2 = []
+ cell2.append(Paragraph(_("OpenSlides access data"),
+ stylesheet['h2']))
+ cell2.append(Paragraph("%s:" % _("Username"),
+ stylesheet['formfield']))
+ cell2.append(Paragraph(user.username,
+ stylesheet['formfield_value']))
+ cell2.append(Paragraph("%s:" % _("Password"),
+ stylesheet['formfield']))
+ cell2.append(Paragraph(user.default_password,
+ stylesheet['formfield_value']))
+ cell2.append(Paragraph("URL:",
+ stylesheet['formfield']))
+ cell2.append(Paragraph(system_url,
+ stylesheet['formfield_value']))
+ data.append([cell, cell2])
+ # QRCodes
+ cell = []
+ if system_wlan_ssid != "-" and system_wlan_encryption != "-":
+ cell.append(qrcode_wlan_draw)
+ cell.append(Paragraph(_("Scan this QRCode to connect WLAN."),
+ stylesheet['qrcode_comment']))
+ cell2 = []
+ if system_url != "-":
+ cell2.append(qrcode_url_draw)
+ cell2.append(Paragraph(_("Scan this QRCode to open URL."),
+ stylesheet['qrcode_comment']))
+ data.append([cell, cell2])
+ # build table
+ table = Table(data)
+ table._argW[0] = 8 * cm
+ table._argW[1] = 8 * cm
+ table.setStyle(TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')]))
+ pdf.append(table)
+ pdf.append(Spacer(0, 2 * cm))
+
+ # welcome title and text
+ pdf.append(Paragraph(participant_pdf_welcometitle, stylesheet['h2']))
+ pdf.append(Paragraph(participant_pdf_welcometext.replace('\r\n', '
'),
+ stylesheet['Paragraph12']))
+ pdf.append(PageBreak())
+ return pdf
diff --git a/openslides/participant/views.py b/openslides/participant/views.py
index e6f4723a2..e33966b7c 100644
--- a/openslides/participant/views.py
+++ b/openslides/participant/views.py
@@ -8,16 +8,9 @@ from django.core.urlresolvers import reverse
from django.shortcuts import redirect
from django.utils.translation import ugettext as _
from django.utils.translation import activate, ugettext_lazy
-from reportlab.graphics.barcode.qr import QrCodeWidget
-from reportlab.graphics.shapes import Drawing
-from reportlab.lib import colors
-from reportlab.lib.units import cm
-from reportlab.platypus import (LongTable, PageBreak, Paragraph, Spacer, Table,
- TableStyle)
from openslides.config.api import config
from openslides.projector.projector import Widget
-from openslides.utils.pdf import stylesheet
from openslides.utils.template import Tab
from openslides.utils.utils import (delete_default_permissions, html_strong,
template)
@@ -30,6 +23,7 @@ from .api import gen_password, gen_username, import_users
from .forms import (GroupForm, UserCreateForm, UserImportForm, UsersettingsForm,
UserUpdateForm)
from .models import get_protected_perm, Group, User
+from .pdf import participants_to_pdf, participants_passwords_to_pdf
class UserOverview(ListView):
@@ -191,42 +185,16 @@ class ParticipantsListPDF(PDFView):
filename = ugettext_lazy("Participant-list")
document_title = ugettext_lazy('List of Participants')
- def append_to_pdf(self, story):
- data = [['#', _('Title'), _('Last Name'), _('First Name'),
- _('Structure level'), _('Group'), _('Committee')]]
- if config['participant_sort_users_by_first_name']:
- sort = 'first_name'
- else:
- sort = 'last_name'
- counter = 0
- for user in User.objects.all().order_by(sort):
- counter += 1
- groups = ''
- for group in user.groups.all():
- if group.pk != 2:
- groups += "%s
" % unicode(_(group.name))
- data.append([
- counter,
- Paragraph(user.title, stylesheet['Tablecell']),
- Paragraph(user.last_name, stylesheet['Tablecell']),
- Paragraph(user.first_name, stylesheet['Tablecell']),
- Paragraph(user.structure_level, stylesheet['Tablecell']),
- Paragraph(groups, stylesheet['Tablecell']),
- Paragraph(user.committee, stylesheet['Tablecell'])])
- t = LongTable(data, style=[
- ('VALIGN', (0, 0), (-1, -1), 'TOP'),
- ('LINEABOVE', (0, 0), (-1, 0), 2, colors.black),
- ('LINEABOVE', (0, 1), (-1, 1), 1, colors.black),
- ('LINEBELOW', (0, -1), (-1, -1), 2, colors.black),
- ('ROWBACKGROUNDS', (0, 1), (-1, -1),
- (colors.white, (.9, .9, .9)))])
- t._argW[0] = 0.75 * cm
- story.append(t)
+ def append_to_pdf(self, pdf):
+ """
+ Append PDF objects.
+ """
+ participants_to_pdf(pdf)
class ParticipantsPasswordsPDF(PDFView):
"""
- Generate the Welcomepaper for the users.
+ Generate the access data welcome paper for all participants as PDF.
"""
permission_required = 'participant.can_manage_participant'
filename = ugettext_lazy("Participant-access-data")
@@ -235,98 +203,11 @@ class ParticipantsPasswordsPDF(PDFView):
def build_document(self, pdf_document, story):
pdf_document.build(story)
- def append_to_pdf(self, story):
- system_wlan_ssid = config["system_wlan_ssid"] or "-"
- system_wlan_password = config["system_wlan_password"] or "-"
- system_wlan_encryption = config["system_wlan_encryption"] or "-"
- system_url = config["system_url"] or "-"
- participant_pdf_welcometitle = config["participant_pdf_welcometitle"]
- participant_pdf_welcometext = config["participant_pdf_welcometext"]
- if config['participant_sort_users_by_first_name']:
- sort = 'first_name'
- else:
- sort = 'last_name'
- qrcode_size = 2 * cm
- # qrcode for system url
- qrcode_url = QrCodeWidget(system_url)
- qrcode_url.barHeight = qrcode_size
- qrcode_url.barWidth = qrcode_size
- qrcode_url.barBorder = 0
- qrcode_url_draw = Drawing(45, 45)
- qrcode_url_draw.add(qrcode_url)
- # qrcode for wlan
- text = "WIFI:S:%s;T:%s;P:%s;;" % (system_wlan_ssid, system_wlan_encryption, system_wlan_password)
- qrcode_wlan = QrCodeWidget(text)
- qrcode_wlan.barHeight = qrcode_size
- qrcode_wlan.barWidth = qrcode_size
- qrcode_wlan.barBorder = 0
- qrcode_wlan_draw = Drawing(45, 45)
- qrcode_wlan_draw.add(qrcode_wlan)
-
- for user in User.objects.all().order_by(sort):
- story.append(Paragraph(unicode(user), stylesheet['h1']))
- story.append(Spacer(0, 1 * cm))
- data = []
- # WLAN access data
- cell = []
- cell.append(Paragraph(_("WLAN access data"),
- stylesheet['h2']))
- cell.append(Paragraph("%s:" % _("WLAN name (SSID)"),
- stylesheet['formfield']))
- cell.append(Paragraph(system_wlan_ssid,
- stylesheet['formfield_value']))
- cell.append(Paragraph("%s:" % _("WLAN password"),
- stylesheet['formfield']))
- cell.append(Paragraph(system_wlan_password,
- stylesheet['formfield_value']))
- cell.append(Paragraph("%s:" % _("WLAN encryption"),
- stylesheet['formfield']))
- cell.append(Paragraph(system_wlan_encryption,
- stylesheet['formfield_value']))
- cell.append(Spacer(0, 0.5 * cm))
- # OpenSlides access data
- cell2 = []
- cell2.append(Paragraph(_("OpenSlides access data"),
- stylesheet['h2']))
- cell2.append(Paragraph("%s:" % _("Username"),
- stylesheet['formfield']))
- cell2.append(Paragraph(user.username,
- stylesheet['formfield_value']))
- cell2.append(Paragraph("%s:" % _("Password"),
- stylesheet['formfield']))
- cell2.append(Paragraph(user.default_password,
- stylesheet['formfield_value']))
- cell2.append(Paragraph("URL:",
- stylesheet['formfield']))
- cell2.append(Paragraph(system_url,
- stylesheet['formfield_value']))
- data.append([cell, cell2])
- # QRCodes
- cell = []
- if system_wlan_ssid != "-" and system_wlan_encryption != "-":
- cell.append(qrcode_wlan_draw)
- cell.append(Paragraph(_("Scan this QRCode to connect WLAN."),
- stylesheet['qrcode_comment']))
- cell2 = []
- if system_url != "-":
- cell2.append(qrcode_url_draw)
- cell2.append(Paragraph(_("Scan this QRCode to open URL."),
- stylesheet['qrcode_comment']))
- data.append([cell, cell2])
- # build table
- table = Table(data)
- table._argW[0] = 8 * cm
- table._argW[1] = 8 * cm
- table.setStyle(TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')]))
- story.append(table)
- story.append(Spacer(0, 2 * cm))
-
- # welcome title and text
- story.append(Paragraph(participant_pdf_welcometitle,
- stylesheet['h2']))
- story.append(Paragraph(participant_pdf_welcometext.replace('\r\n', '
'),
- stylesheet['Paragraph12']))
- story.append(PageBreak())
+ def append_to_pdf(self, pdf):
+ """
+ Append PDF objects.
+ """
+ participants_passwords_to_pdf(pdf)
class UserImportView(FormView):