diff --git a/extras/logo/openlides-logo.svg b/extras/logo/openslides-logo.svg similarity index 100% rename from extras/logo/openlides-logo.svg rename to extras/logo/openslides-logo.svg diff --git a/extras/logo/openlides-logo_100.png b/extras/logo/openslides-logo_100.png similarity index 100% rename from extras/logo/openlides-logo_100.png rename to extras/logo/openslides-logo_100.png diff --git a/extras/logo/openlides-logo_150.png b/extras/logo/openslides-logo_150.png similarity index 100% rename from extras/logo/openlides-logo_150.png rename to extras/logo/openslides-logo_150.png diff --git a/extras/logo/openlides-logo_icon.png b/extras/logo/openslides-logo_icon.png similarity index 100% rename from extras/logo/openlides-logo_icon.png rename to extras/logo/openslides-logo_icon.png diff --git a/extras/logo/openlides-logo_icon.svg b/extras/logo/openslides-logo_icon.svg similarity index 100% rename from extras/logo/openlides-logo_icon.svg rename to extras/logo/openslides-logo_icon.svg diff --git a/openslides/openslides_settings.py b/openslides/openslides_settings.py index 17714031a..95ecb8db2 100755 --- a/openslides/openslides_settings.py +++ b/openslides/openslides_settings.py @@ -62,7 +62,7 @@ USE_L10N = True # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = '' +MEDIA_ROOT = os.path.join(SITE_ROOT, './static/') # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). diff --git a/openslides/participant/templates/participant/base_participant.html b/openslides/participant/templates/participant/base_participant.html index cf531f158..ad688d2bc 100644 --- a/openslides/participant/templates/participant/base_participant.html +++ b/openslides/participant/templates/participant/base_participant.html @@ -25,6 +25,7 @@ {% endif %} {% if perms.participant.can_manage_participant %}
  • {% trans 'First time passwords as PDF' %}
  • +
  • Namenskarten als PDF
  • {% endif %} {% endblock %} diff --git a/openslides/participant/urls.py b/openslides/participant/urls.py index a7d152c21..eb5051fc2 100644 --- a/openslides/participant/urls.py +++ b/openslides/participant/urls.py @@ -13,7 +13,7 @@ from django.conf.urls.defaults import * from django.core.urlresolvers import reverse -from participant.views import ParticipantsListPDF, ParticipantsPasswordsPDF +from participant.views import ParticipantsListPDF, ParticipantsPasswordsPDF, ParticipantsBadgePDF urlpatterns = patterns('participant.views', url(r'^$', @@ -80,4 +80,10 @@ urlpatterns = patterns('participant.views', ParticipantsPasswordsPDF.as_view(), name='print_passwords', ), + + url(r'^badges/print$', + ParticipantsBadgePDF.as_view(), + name='print_badges', + ), + ) diff --git a/openslides/participant/views.py b/openslides/participant/views.py index 1bb656eca..195518962 100644 --- a/openslides/participant/views.py +++ b/openslides/participant/views.py @@ -53,6 +53,8 @@ from utils.template import Tab from utils.views import (FormView, PDFView) from utils.utils import delete_default_permissions +from openslides import settings +import qrcode @permission_required('participant.can_see_participant') @template('participant/overview.html') @@ -551,6 +553,10 @@ class ParticipantsPasswordsPDF(PDFView): for user in User.objects.all().order_by('last_name'): try: user.get_profile() + qrcode_img = qrcode.make(participant_pdf_system_url) + qrcode_img.save( settings.MEDIA_ROOT + 'qr-code_systemurl.png', 'PNG') + imgfile = settings.MEDIA_ROOT + 'qr-code_systemurl.png'; + qrcode_systemurl = "" % imgfile cell = [] cell.append(Spacer(0,0.8*cm)) cell.append(Paragraph(_("Account for OpenSlides"), stylesheet['Ballot_title'])) @@ -560,7 +566,8 @@ class ParticipantsPasswordsPDF(PDFView): cell.append(Paragraph(_("Password: %s") % (user.profile.firstpassword), stylesheet['Monotype'])) cell.append(Spacer(0,0.5*cm)) cell.append(Paragraph(_("URL: %s") % (participant_pdf_system_url), stylesheet['Ballot_option'])) - cell.append(Spacer(0,0.5*cm)) + cell.append(Spacer(0,1*cm)) + cell.append(Paragraph(qrcode_systemurl, stylesheet['Ballot_option'])) cell2 = [] cell2.append(Spacer(0,0.8*cm)) if participant_pdf_welcometext is not None: @@ -578,7 +585,44 @@ class ParticipantsPasswordsPDF(PDFView): ])) story.append(t) +class ParticipantsBadgePDF(PDFView): + permission_required = 'participant.can_manage_participant' + filename = _("participant-badges") + top_space = 0 + def get_template(self, buffer): + return SimpleDocTemplate(buffer, topMargin=-6, bottomMargin=-6, leftMargin=0, rightMargin=0, showBoundary=False) + + def build_document(self, pdf_document, story): + pdf_document.build(story) + + def append_to_pdf(self, story): + data= [] + for user in User.objects.all().order_by('last_name'): + try: + user.get_profile() + qrcode_img = qrcode.make( "%s%s" % (config['participant_pdf_system_url'], reverse('user_status', args=[user.id])) ) + qrcode_img.save( settings.MEDIA_ROOT + 'qr-code_statusurl.png', 'PNG') + imgfile = settings.MEDIA_ROOT + 'qr-code_statusurl.png'; + qrcode_statusurl = "" % imgfile + cell = [] + cell.append(Spacer(0,0.8*cm)) + cell.append(Paragraph("%s %s" % (user.first_name, user.last_name), stylesheet['Badge_title'])) + cell.append(Spacer(0,0.5*cm)) + cell.append(Paragraph("%s" % (user.profile.group), stylesheet['Badge_subtitle'])) + cell.append(Paragraph("%s" % (user.profile.committee), stylesheet['Badge_italic'])) + cell.append(Spacer(0,2.25*cm)) + cell.append(Paragraph(qrcode_statusurl, stylesheet['Badge_qrcode'])) + # print cards + data.append([cell,cell]) + except Profile.DoesNotExist: + pass + + t=Table(data, 10.5*cm, 7.42*cm) + t.setStyle(TableStyle([ ('GRID', (0,0), (-1,-1), 0.25, colors.grey), + ('VALIGN', (0,0), (-1,-1), 'TOP'), + ])) + story.append(t) class Config(FormView): permission_required = 'config.can_manage_config' diff --git a/openslides/utils/pdf.py b/openslides/utils/pdf.py index fb9394662..d9e3a5009 100755 --- a/openslides/utils/pdf.py +++ b/openslides/utils/pdf.py @@ -181,7 +181,29 @@ stylesheet.add(ParagraphStyle(name = 'Ballot_option_group_right', leading = 16, leftIndent = 49), ) +stylesheet.add(ParagraphStyle(name = 'Badge_title', + parent = stylesheet['Bold'], + fontSize = 16, + leading = 22, + leftIndent = 30), + ) +stylesheet.add(ParagraphStyle(name = 'Badge_subtitle', + parent = stylesheet['Normal'], + fontSize = 12, + leading = 24, + leftIndent = 30), + ) +stylesheet.add(ParagraphStyle(name = 'Badge_italic', + parent = stylesheet['Italic'], + fontSize = 12, + leading = 24, + leftIndent = 30), + ) +stylesheet.add(ParagraphStyle(name = 'Badge_qrcode', + fontSize = 12, + leftIndent = 190), + ) def firstPage(canvas, doc): canvas.saveState()