Merge pull request #617 from emanuelschuetze/master

1.4a1 release
This commit is contained in:
Emanuel Schütze 2013-04-24 06:58:49 -07:00
commit b34677291b
9 changed files with 133 additions and 117 deletions

View File

@ -1,4 +1,4 @@
Installation Instructions for OpenSlides 1.3 Installation Instructions for OpenSlides 1.4
============================================ ============================================
Content Content
@ -45,9 +45,14 @@ I. Installation on GNU/Linux and MacOSX using the Python Package Index (PyPI)
OpenSlides will install the following required python packages: OpenSlides will install the following required python packages:
+ Django + Django
+ django-mptt + django-mptt
+ ReportLab Toolkit + pillow
+ Python Imaging Library (PIL) + qrcode
+ reportlab
+ tornado
+ bleach
+ beautifulsoup4
+ html5lib
4. Start OpenSlides server and open URL in your default browser: 4. Start OpenSlides server and open URL in your default browser:
$ openslides $ openslides
@ -65,17 +70,14 @@ I. Installation on GNU/Linux and MacOSX using the Python Package Index (PyPI)
II. Installation on GNU/Linux and MacOSX using the sources II. Installation on GNU/Linux and MacOSX using the sources
---------------------------------------------------------- ----------------------------------------------------------
1. Install requirements: 1. Check requirements:
OpenSlides requires following programs, which should be Make sure that you have installed Python Programming Language 2
installed first: (>= 2.6) and virtualenv (>= 1.4.1) on your system. You will also
+ Python Programming Language 2 (>= 2.6) need the Python development headers.
+ virtualenv (>= 1.4.1)
+ ReportLab Toolkit
+ Python Imaging Library (PIL)
E. g. for Ubuntu run: E. g. for Ubuntu run:
$ sudo apt-get install python python-virtualenv python-reportlab python-imaging $ sudo apt-get install python-dev python-virtualenv
2. Get OpenSlides: 2. Get OpenSlides:
@ -83,13 +85,14 @@ II. Installation on GNU/Linux and MacOSX using the sources
OR OR
b) Clone development version from OpenSlides' github repository b) Clone current master version from OpenSlides' GitHub repository
https://github.com/OpenSlides/OpenSlides. This requires Git, https://github.com/OpenSlides/OpenSlides.
see http://git-scm.com/.
E. g. for Ubuntu run:
$ sudo apt-get install git
$ git clone git://github.com/OpenSlides/OpenSlides.git OpenSlides $ git clone git://github.com/OpenSlides/OpenSlides.git OpenSlides
This requires Git (see http://git-scm.com/).
To install Git e.g. on Ubuntu run:
$ sudo apt-get install git
3. Setup a virtual environment with virtualenv (optional): 3. Setup a virtual environment with virtualenv (optional):
@ -105,22 +108,16 @@ II. Installation on GNU/Linux and MacOSX using the sources
$ virtualenv .venv $ virtualenv .venv
$ source .venv/bin/activate $ source .venv/bin/activate
4. Install the required python-packages: 4. Install all required python packages:
$ pip install django django-mptt $ pip install -r requirements.txt
If you use python < 2.6 you also have to install simplejson:
$ pip install simplejson
If requirements reportlab or PIL still missing (see 1.):
$ pip install reportlab pil
5. Start OpenSlides server and open URL in your default browser: 5. Start OpenSlides server and open URL in your default browser:
$ python start.py $ python start.py
If you run this script the first time a new database and the If you run this script the first time a new database and the
admin account are created. Please change the password after admin account will be created. Please change the password after
first login! first login!
Username: admin Username: admin
@ -131,7 +128,10 @@ II. Installation on GNU/Linux and MacOSX using the sources
6. Restart OpenSlides: 6. Restart OpenSlides:
To restart OpenSlides after closing the terminal activate the To restart OpenSlides after closing the terminal activate the
virtual environment (see 4.) before starting the server (see 6.). virtual environment before starting the server:
$ source .venv/bin/activate
$ python start.py
III. Installation on Windows (32bit) using the Python Package Index (PyPI) III. Installation on Windows (32bit) using the Python Package Index (PyPI)

View File

@ -2,7 +2,7 @@
English README file for OpenSlides English README file for OpenSlides
================================== ==================================
This is OpenSlides, version 1.4.0 (unreleased). This is OpenSlides, version 1.4-beta1-dev (unreleased).
What is OpenSlides? What is OpenSlides?
@ -70,6 +70,9 @@ The following command line options are available:
--no-reload --no-reload
Does not reload the development server Does not reload the development server
--no-browser
Do not automatically start web browser.
--version --version
Show version and exit. Show version and exit.

6
THANKS
View File

@ -16,6 +16,9 @@ OpenSlides uses parts of the following projects:
with css theme 'smoothness' with css theme 'smoothness'
and some addons: slider access, timepicker and some addons: slider access, timepicker
* nestedSortable jQuery Plugin
<http://mjsarfatti.com/sandbox/nestedSortable/>
* Twitter Bootstrap * Twitter Bootstrap
<http://twitter.github.com/bootstrap/> <http://twitter.github.com/bootstrap/>
@ -24,6 +27,3 @@ OpenSlides uses parts of the following projects:
* Ubuntu TrueType Font * Ubuntu TrueType Font
<http://font.ubuntu.com/> <http://font.ubuntu.com/>
* nestedSortable jQuery Plugin
<http://mjsarfatti.com/sandbox/nestedSortable/>

View File

@ -5,7 +5,7 @@
:license: GNU GPL, see LICENSE for more details. :license: GNU GPL, see LICENSE for more details.
""" """
VERSION = (1, 4, 0, 'alpha', 1) # During development it is the next release VERSION = (1, 4, 0, 'beta', 1) # During development it is the next release
RELEASE = False RELEASE = False

View File

@ -569,7 +569,6 @@ class AssignmentPollPDF(PDFView):
number = User.objects.filter(groups__pk=3).count() number = User.objects.filter(groups__pk=3).count()
except Group.DoesNotExist: except Group.DoesNotExist:
number = 0 number = 0
elif ballot_papers_selection == "NUMBER_OF_ALL_PARTICIPANTS": elif ballot_papers_selection == "NUMBER_OF_ALL_PARTICIPANTS":
number = int(User.objects.count()) number = int(User.objects.count())
else: # ballot_papers_selection == "CUSTOM_NUMBER" else: # ballot_papers_selection == "CUSTOM_NUMBER"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenSlides 1.x\n" "Project-Id-Version: OpenSlides 1.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-04-23 21:38+0200\n" "POT-Creation-Date: 2013-04-24 14:34+0200\n"
"PO-Revision-Date: 2012-07-28 11:07+0200\n" "PO-Revision-Date: 2012-07-28 11:07+0200\n"
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n" "Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
"Language-Team: support@openslides.de\n" "Language-Team: support@openslides.de\n"
@ -29,7 +29,7 @@ msgstr "Englisch"
msgid "French" msgid "French"
msgstr "Französisch" msgstr "Französisch"
#: account/views.py:60 #: account/views.py:61
msgid "My motions and elections" msgid "My motions and elections"
msgstr "Meine Anträge und Wahlen" msgstr "Meine Anträge und Wahlen"
@ -78,11 +78,11 @@ msgstr "Ungültiges Format. Stunden von 0 bis 99 und Minuten von 00 bis 59"
msgid "Duration (hh:mm)" msgid "Duration (hh:mm)"
msgstr "Dauer (hh:mm)" msgstr "Dauer (hh:mm)"
#: agenda/forms.py:69 #: agenda/forms.py:61
msgid "Add participant" msgid "Add participant"
msgstr "Neue/n Teilnehmer/in hinzufügen" msgstr "Neue/n Teilnehmer/in hinzufügen"
#: agenda/forms.py:82 #: agenda/forms.py:74
#, python-format #, python-format
msgid "%s is already on the list of speakers." msgid "%s is already on the list of speakers."
msgstr "%s ist bereits auf der Rednerliste" msgstr "%s ist bereits auf der Rednerliste"
@ -107,8 +107,8 @@ msgstr "Titel"
msgid "Text" msgid "Text"
msgstr "Text" msgstr "Text"
#: agenda/models.py:54 agenda/templates/agenda/overview.html:90 #: agenda/models.py:54 agenda/templates/agenda/overview.html:75
#: agenda/templates/agenda/view.html:56 participant/models.py:51 #: agenda/templates/agenda/view.html:51 participant/models.py:51
#: participant/templates/participant/overview.html:69 #: participant/templates/participant/overview.html:69
#: participant/templates/participant/user_detail.html:47 #: participant/templates/participant/user_detail.html:47
msgid "Comment" msgid "Comment"
@ -118,8 +118,7 @@ msgstr "Kommentar"
msgid "Closed" msgid "Closed"
msgstr "Abgeschlossen" msgstr "Abgeschlossen"
#: agenda/models.py:64 agenda/templates/agenda/overview.html:99 #: agenda/models.py:64 projector/models.py:29
#: projector/models.py:29
msgid "Weight" msgid "Weight"
msgstr "Gewichtung" msgstr "Gewichtung"
@ -131,31 +130,24 @@ msgstr "Typ"
msgid "List of speakers is closed" msgid "List of speakers is closed"
msgstr "Rednerliste ist geschlossen" msgstr "Rednerliste ist geschlossen"
#: agenda/models.py:162 #: agenda/models.py:238
#: agenda/templates/agenda/overlay_speaker_projector.html:20
#: agenda/templates/agenda/overlay_speaker_widget.html:5
#: agenda/templates/agenda/view.html:62
msgid "List of speakers"
msgstr "Rednerliste"
#: agenda/models.py:236
msgid "Can see agenda" msgid "Can see agenda"
msgstr "Darf die Tagesordnung sehen" msgstr "Darf die Tagesordnung sehen"
#: agenda/models.py:237 #: agenda/models.py:239
msgid "Can manage agenda" msgid "Can manage agenda"
msgstr "Darf die Tagesordung verwalten" msgstr "Darf die Tagesordung verwalten"
#: agenda/models.py:238 #: agenda/models.py:240
msgid "Can see orga items and time scheduling of agenda" msgid "Can see orga items and time scheduling of agenda"
msgstr "Darf Organisationspunkte und Tagesordnung-Zeitplan sehen" msgstr "Darf Organisationspunkte und Tagesordnung-Zeitplan sehen"
#: agenda/models.py:248 #: agenda/models.py:250
#, python-format #, python-format
msgid "%(person)s is already on the list of speakers of item %(id)s." msgid "%(person)s is already on the list of speakers of item %(id)s."
msgstr "%(person)s ist bereits auf der Rednerliste von Eintrag %(id)s." msgstr "%(person)s ist bereits auf der Rednerliste von Eintrag %(id)s."
#: agenda/models.py:283 #: agenda/models.py:285
msgid "Can put oneself on the list of speakers" msgid "Can put oneself on the list of speakers"
msgstr "Darf sich selbst auf die Rednerliste setzen" msgstr "Darf sich selbst auf die Rednerliste setzen"
@ -170,8 +162,8 @@ msgstr "Eingabeformat: TT.MM.JJJJ HH:MM"
#: agenda/signals.py:52 agenda/slides.py:23 agenda/slides.py:29 #: agenda/signals.py:52 agenda/slides.py:23 agenda/slides.py:29
#: agenda/views.py:243 agenda/views.py:244 agenda/views.py:469 #: agenda/views.py:243 agenda/views.py:244 agenda/views.py:469
#: agenda/views.py:484 agenda/templates/agenda/overview.html:8 #: agenda/views.py:484 agenda/templates/agenda/overview.html:8
#: agenda/templates/agenda/overview.html:55 #: agenda/templates/agenda/overview.html:40
#: agenda/templates/agenda/overview.html:105 #: agenda/templates/agenda/overview.html:87
#: agenda/templates/projector/AgendaSummary.html:6 #: agenda/templates/projector/AgendaSummary.html:6
#: agenda/templates/projector/AgendaSummary.html:10 #: agenda/templates/projector/AgendaSummary.html:10
msgid "Agenda" msgid "Agenda"
@ -245,16 +237,16 @@ msgid "To the current list of speakers"
msgstr "Zur aktuellen Rednerliste" msgstr "Zur aktuellen Rednerliste"
#: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:17 #: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:17
#: agenda/templates/agenda/view.html:37 #: agenda/templates/agenda/view.html:32
msgid "Edit item" msgid "Edit item"
msgstr "Eintrag bearbeiten" msgstr "Eintrag bearbeiten"
#: agenda/templates/agenda/edit.html:10 agenda/templates/agenda/edit.html:19 #: agenda/templates/agenda/edit.html:10 agenda/templates/agenda/edit.html:19
#: agenda/templates/agenda/overview.html:58 #: agenda/templates/agenda/overview.html:43
msgid "New item" msgid "New item"
msgstr "Neuer Eintrag" msgstr "Neuer Eintrag"
#: agenda/templates/agenda/edit.html:22 agenda/templates/agenda/view.html:29 #: agenda/templates/agenda/edit.html:22 agenda/templates/agenda/view.html:24
#: assignment/templates/assignment/edit.html:22 #: assignment/templates/assignment/edit.html:22
#: assignment/templates/assignment/view.html:20 #: assignment/templates/assignment/view.html:20
#: mediafile/templates/mediafile/mediafile_form.html:22 #: mediafile/templates/mediafile/mediafile_form.html:22
@ -298,17 +290,9 @@ msgstr "Abbrechen"
msgid "required" msgid "required"
msgstr "erforderlich" msgstr "erforderlich"
#: agenda/templates/agenda/item_row.html:7 #: agenda/templates/agenda/item_row.html:9
msgid "Change status (open/closed)" #: agenda/templates/agenda/overview.html:99
msgstr "Status ändern (offen/abgeschlossen)" #: agenda/templates/agenda/view.html:40 agenda/templates/agenda/widget.html:8
#: agenda/templates/agenda/item_row.html:34
msgid "End"
msgstr "Ende"
#: agenda/templates/agenda/item_row.html:42
#: agenda/templates/agenda/overview.html:117
#: agenda/templates/agenda/view.html:45 agenda/templates/agenda/widget.html:8
#: agenda/templates/agenda/widget.html:23 #: agenda/templates/agenda/widget.html:23
#: assignment/templates/assignment/overview.html:54 #: assignment/templates/assignment/overview.html:54
#: assignment/templates/assignment/widget.html:7 #: assignment/templates/assignment/widget.html:7
@ -324,7 +308,7 @@ msgstr "Ende"
msgid "Show" msgid "Show"
msgstr "Anzeigen" msgstr "Anzeigen"
#: agenda/templates/agenda/item_row.html:47 #: agenda/templates/agenda/item_row.html:14
#: agenda/templates/agenda/widget.html:26 #: agenda/templates/agenda/widget.html:26
#: assignment/templates/assignment/overview.html:59 #: assignment/templates/assignment/overview.html:59
#: assignment/templates/assignment/view.html:170 #: assignment/templates/assignment/view.html:170
@ -341,38 +325,53 @@ msgstr "Anzeigen"
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: agenda/templates/agenda/item_row.html:50 #: agenda/templates/agenda/item_row.html:17
#: agenda/templates/agenda/view.html:100 agenda/templates/agenda/view.html:114 #: agenda/templates/agenda/view.html:95 agenda/templates/agenda/view.html:109
#: agenda/templates/agenda/view.html:147 #: agenda/templates/agenda/view.html:142
#: assignment/templates/assignment/overview.html:62 #: assignment/templates/assignment/overview.html:62
#: assignment/templates/assignment/view.html:171 #: assignment/templates/assignment/view.html:171
#: mediafile/templates/mediafile/mediafile_list.html:38 #: mediafile/templates/mediafile/mediafile_list.html:38
#: motion/templates/motion/category_list.html:33 #: motion/templates/motion/category_list.html:33
#: motion/templates/motion/motion_detail.html:133 #: motion/templates/motion/motion_detail.html:133
#: motion/templates/motion/motion_list.html:91 #: motion/templates/motion/motion_list.html:90
#: participant/templates/participant/group_overview.html:37 #: participant/templates/participant/group_overview.html:37
#: participant/templates/participant/overview.html:123 #: participant/templates/participant/overview.html:123
#: projector/templates/projector/custom_slide_widget.html:23 #: projector/templates/projector/custom_slide_widget.html:23
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: agenda/templates/agenda/item_row.html:54 #: agenda/templates/agenda/item_row.html:21
#: agenda/templates/agenda/widget.html:40 #: agenda/templates/agenda/widget.html:40
msgid "Show summary for this item" msgid "Show summary for this item"
msgstr "Zusammenfassung für diesen Eintrag anzeigen" msgstr "Zusammenfassung für diesen Eintrag anzeigen"
#: agenda/templates/agenda/overlay_speaker_projector.html:27 #: agenda/templates/agenda/item_row.html:33
#: agenda/templates/agenda/view.html:153 msgid "End"
#: agenda/templates/projector/agenda_list_of_speaker.html:32 msgstr "Ende"
#: agenda/templates/agenda/item_row.html:52
msgid "Change status (open/closed)"
msgstr "Status ändern (offen/abgeschlossen)"
#: agenda/templates/agenda/overlay_speaker_projector.html:5
#: agenda/templates/agenda/overlay_speaker_widget.html:5
#: agenda/templates/agenda/view.html:57
#: agenda/templates/projector/agenda_list_of_speaker.html:9
msgid "List of speakers"
msgstr "Rednerliste"
#: agenda/templates/agenda/overlay_speaker_projector.html:12
#: agenda/templates/agenda/view.html:148
#: agenda/templates/projector/agenda_list_of_speaker.html:28
msgid "The list of speakers is empty." msgid "The list of speakers is empty."
msgstr "Die Rednerliste ist leer." msgstr "Die Rednerliste ist leer."
#: agenda/templates/agenda/overview.html:47 #: agenda/templates/agenda/overview.html:32
msgid "Do you want to save the changed order of agenda items?" msgid "Do you want to save the changed order of agenda items?"
msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
#: agenda/templates/agenda/overview.html:49 #: agenda/templates/agenda/overview.html:34
#: agenda/templates/agenda/view.html:130 assignment/models.py:288 #: agenda/templates/agenda/view.html:125 assignment/models.py:288
#: assignment/views.py:593 assignment/templates/assignment/view.html:204 #: assignment/views.py:593 assignment/templates/assignment/view.html:204
#: assignment/templates/assignment/view.html:208 #: assignment/templates/assignment/view.html:208
#: assignment/templates/projector/Assignment.html:78 #: assignment/templates/projector/Assignment.html:78
@ -384,8 +383,8 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: agenda/templates/agenda/overview.html:50 #: agenda/templates/agenda/overview.html:35
#: agenda/templates/agenda/view.html:131 assignment/models.py:288 #: agenda/templates/agenda/view.html:126 assignment/models.py:288
#: assignment/views.py:594 assignment/templates/assignment/view.html:205 #: assignment/views.py:594 assignment/templates/assignment/view.html:205
#: assignment/templates/projector/Assignment.html:79 motion/models.py:725 #: assignment/templates/projector/Assignment.html:79 motion/models.py:725
#: motion/pdf.py:147 motion/pdf.py:270 #: motion/pdf.py:147 motion/pdf.py:270
@ -395,7 +394,7 @@ msgstr "Ja"
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
#: agenda/templates/agenda/overview.html:58 #: agenda/templates/agenda/overview.html:43
#: assignment/templates/assignment/overview.html:12 #: assignment/templates/assignment/overview.html:12
#: mediafile/templates/mediafile/mediafile_list.html:12 #: mediafile/templates/mediafile/mediafile_list.html:12
#: motion/templates/motion/category_list.html:13 #: motion/templates/motion/category_list.html:13
@ -406,37 +405,37 @@ msgstr "Nein"
msgid "New" msgid "New"
msgstr "Neu" msgstr "Neu"
#: agenda/templates/agenda/overview.html:60 #: agenda/templates/agenda/overview.html:45
msgid "Print agenda as PDF" msgid "Print agenda as PDF"
msgstr "Tagesordnung als PDF drucken" msgstr "Tagesordnung als PDF drucken"
#: agenda/templates/agenda/overview.html:68 #: agenda/templates/agenda/overview.html:53
msgid "Start of event" msgid "Start of event"
msgstr "Beginn der Veranstaltung" msgstr "Beginn der Veranstaltung"
#: agenda/templates/agenda/overview.html:72 #: agenda/templates/agenda/overview.html:57
msgid "Estimated end" msgid "Estimated end"
msgstr "Voraussichtliches Ende" msgstr "Voraussichtliches Ende"
#: agenda/templates/agenda/overview.html:79 #: agenda/templates/agenda/overview.html:64
msgid "Hide closed items" msgid "Hide closed items"
msgstr "Verstecke abgeschlossene Einträge" msgstr "Verstecke abgeschlossene Einträge"
#: agenda/templates/agenda/overview.html:83 #: agenda/templates/agenda/overview.html:68
msgid "item" msgid "item"
msgid_plural "items" msgid_plural "items"
msgstr[0] "Eintrag" msgstr[0] "Eintrag"
msgstr[1] "Einträge" msgstr[1] "Einträge"
#: agenda/templates/agenda/overview.html:88 #: agenda/templates/agenda/overview.html:73
msgid "Item" msgid "Item"
msgstr "Eintrag" msgstr "Eintrag"
#: agenda/templates/agenda/overview.html:93 #: agenda/templates/agenda/overview.html:78
msgid "Duration" msgid "Duration"
msgstr "Dauer" msgstr "Dauer"
#: agenda/templates/agenda/overview.html:96 #: agenda/templates/agenda/overview.html:81
#: assignment/templates/assignment/overview.html:38 #: assignment/templates/assignment/overview.html:38
#: mediafile/templates/mediafile/mediafile_list.html:24 #: mediafile/templates/mediafile/mediafile_list.html:24
#: motion/templates/motion/category_list.html:23 #: motion/templates/motion/category_list.html:23
@ -447,7 +446,7 @@ msgstr "Dauer"
msgid "Actions" msgid "Actions"
msgstr "Aktionen" msgstr "Aktionen"
#: agenda/templates/agenda/overview.html:133 #: agenda/templates/agenda/overview.html:122
#: agenda/templates/agenda/widget.html:51 #: agenda/templates/agenda/widget.html:51
#: projector/templates/projector/custom_slide_widget.html:34 #: projector/templates/projector/custom_slide_widget.html:34
msgid "No items available." msgid "No items available."
@ -457,65 +456,65 @@ msgstr "Keine Einträge vorhanden."
msgid "Put me on the current list of speakers" msgid "Put me on the current list of speakers"
msgstr "Auf die aktuelle Rednerliste setzen" msgstr "Auf die aktuelle Rednerliste setzen"
#: agenda/templates/agenda/view.html:33 #: agenda/templates/agenda/view.html:28
#: assignment/templates/assignment/view.html:29 #: assignment/templates/assignment/view.html:29
#: motion/templates/motion/motion_detail.html:34 #: motion/templates/motion/motion_detail.html:34
msgid "More actions" msgid "More actions"
msgstr "Mehr Aktionen" msgstr "Mehr Aktionen"
#: agenda/templates/agenda/view.html:38 #: agenda/templates/agenda/view.html:33
msgid "Delete item" msgid "Delete item"
msgstr "Eintrag löschen" msgstr "Eintrag löschen"
#: agenda/templates/agenda/view.html:62 #: agenda/templates/agenda/view.html:57
msgid "closed" msgid "closed"
msgstr "geschlossen" msgstr "geschlossen"
#: agenda/templates/agenda/view.html:66 #: agenda/templates/agenda/view.html:61
msgid "Open list" msgid "Open list"
msgstr "Liste öffnen" msgstr "Liste öffnen"
#: agenda/templates/agenda/view.html:68 #: agenda/templates/agenda/view.html:63
msgid "Close list" msgid "Close list"
msgstr "Liste schließen" msgstr "Liste schließen"
#: agenda/templates/agenda/view.html:74 agenda/templates/agenda/widget.html:34 #: agenda/templates/agenda/view.html:69 agenda/templates/agenda/widget.html:34
msgid "Show list of speakers" msgid "Show list of speakers"
msgstr "Rednerliste projizieren" msgstr "Rednerliste projizieren"
#: agenda/templates/agenda/view.html:76 #: agenda/templates/agenda/view.html:71
msgid "Show list" msgid "Show list"
msgstr "Liste projizieren" msgstr "Liste projizieren"
#: agenda/templates/agenda/view.html:84 #: agenda/templates/agenda/view.html:79
msgid "Last speakers" msgid "Last speakers"
msgstr "Letzte Redner" msgstr "Letzte Redner"
#: agenda/templates/agenda/view.html:88 #: agenda/templates/agenda/view.html:83
msgid "Show all speakers" msgid "Show all speakers"
msgstr "Alle Redner anzeigen" msgstr "Alle Redner anzeigen"
#: agenda/templates/agenda/view.html:127 #: agenda/templates/agenda/view.html:122
msgid "Do you want to save the changed order of speakers?" msgid "Do you want to save the changed order of speakers?"
msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
#: agenda/templates/agenda/view.html:138 #: agenda/templates/agenda/view.html:133
msgid "Next speakers:" msgid "Next speakers:"
msgstr "Nächste Redner" msgstr "Nächste Redner"
#: agenda/templates/agenda/view.html:146 #: agenda/templates/agenda/view.html:141
msgid "Next speaker" msgid "Next speaker"
msgstr "Nächster Redner" msgstr "Nächster Redner"
#: agenda/templates/agenda/view.html:160 #: agenda/templates/agenda/view.html:154
msgid "Remove me from the list" msgid "Remove me from the list"
msgstr "Entferne mich von der Liste" msgstr "Entferne mich von der Liste"
#: agenda/templates/agenda/view.html:162 #: agenda/templates/agenda/view.html:156
msgid "Put me on the list" msgid "Put me on the list"
msgstr "Setze mich auf die Liste" msgstr "Setze mich auf die Liste"
#: agenda/templates/agenda/view.html:173 #: agenda/templates/agenda/view.html:166
#: assignment/templates/assignment/poll_view.html:83 #: assignment/templates/assignment/poll_view.html:83
#: assignment/templates/assignment/view.html:112 #: assignment/templates/assignment/view.html:112
#: motion/templates/motion/poll_form.html:70 #: motion/templates/motion/poll_form.html:70
@ -524,7 +523,7 @@ msgstr "Setze mich auf die Liste"
msgid "Apply" msgid "Apply"
msgstr "Übernehmen" msgstr "Übernehmen"
#: agenda/templates/agenda/view.html:175 #: agenda/templates/agenda/view.html:168
#: assignment/templates/assignment/view.html:114 #: assignment/templates/assignment/view.html:114
msgid "Add new participant" msgid "Add new participant"
msgstr "Neue/n Teilnehmer/in hinzufügen" msgstr "Neue/n Teilnehmer/in hinzufügen"
@ -1033,8 +1032,8 @@ msgid "Election results"
msgstr "Wahlergebnisse" msgstr "Wahlergebnisse"
#: assignment/templates/assignment/view.html:163 #: assignment/templates/assignment/view.html:163
msgid "Publish/unpublish results" msgid "Publish results"
msgstr "Ergebnisse veröffentlichen/unveröffentlichen" msgstr "Ergebnisse veröffentlichen"
#: assignment/templates/assignment/view.html:178 #: assignment/templates/assignment/view.html:178
#: assignment/templates/assignment/view.html:259 #: assignment/templates/assignment/view.html:259
@ -1279,7 +1278,7 @@ msgstr "Status"
msgid "Vote" msgid "Vote"
msgstr "Abstimmung" msgstr "Abstimmung"
#: motion/pdf.py:254 motion/templates/motion/motion_list.html:104 #: motion/pdf.py:254 motion/templates/motion/motion_list.html:102
msgid "No motions available." msgid "No motions available."
msgstr "Keine Anträge vorhanden." msgstr "Keine Anträge vorhanden."
@ -1535,7 +1534,7 @@ msgstr "Abstimmung gelöscht"
#: motion/views.py:523 #: motion/views.py:523
msgid "Poll" msgid "Poll"
msgstr "" msgstr "Abstimmung"
#: motion/views.py:559 #: motion/views.py:559
#, python-format #, python-format
@ -1767,7 +1766,7 @@ msgstr "Antragstitel"
msgid "Number of supporters" msgid "Number of supporters"
msgstr "Anzahl der Unterstützer/innen" msgstr "Anzahl der Unterstützer/innen"
#: motion/templates/motion/motion_list.html:96 #: motion/templates/motion/motion_list.html:94
msgid "Print motion as PDF" msgid "Print motion as PDF"
msgstr "Antrag als PDF drucken" msgstr "Antrag als PDF drucken"

View File

@ -27,7 +27,7 @@ from .models import Motion
# Needed to count the delegates # Needed to count the delegates
# TODO: find another way to do this. # TODO: find another way to do this.
from openslides.participant.models import User from openslides.participant.models import User, Group
def motions_to_pdf(pdf): def motions_to_pdf(pdf):
@ -277,7 +277,11 @@ def motion_poll_to_pdf(pdf, poll):
# set number of ballot papers # set number of ballot papers
if ballot_papers_selection == "NUMBER_OF_DELEGATES": if ballot_papers_selection == "NUMBER_OF_DELEGATES":
# TODO: get this number from persons # TODO: get this number from persons
number = User.objects.filter(type__iexact="delegate").count() try:
if Group.objects.get(pk=3):
number = User.objects.filter(groups__pk=3).count()
except Group.DoesNotExist:
number = 0
elif ballot_papers_selection == "NUMBER_OF_ALL_PARTICIPANTS": elif ballot_papers_selection == "NUMBER_OF_ALL_PARTICIPANTS":
# TODO: get the number from the persons # TODO: get the number from the persons
number = int(User.objects.count()) number = int(User.objects.count())

View File

@ -20,6 +20,8 @@ from django.utils.translation import ugettext as _, ugettext_lazy, ugettext_noop
from django.views.generic.detail import SingleObjectMixin from django.views.generic.detail import SingleObjectMixin
from django.http import Http404 from django.http import Http404
from reportlab.platypus import SimpleDocTemplate
from openslides.utils.pdf import stylesheet from openslides.utils.pdf import stylesheet
from openslides.utils.views import ( from openslides.utils.views import (
TemplateView, RedirectView, UpdateView, CreateView, DeleteView, PDFView, TemplateView, RedirectView, UpdateView, CreateView, DeleteView, PDFView,
@ -511,6 +513,7 @@ class PollPDFView(PollMixin, PDFView):
""" """
permission_required = 'motion.can_manage_motion' permission_required = 'motion.can_manage_motion'
top_space = 0
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
self.object = self.get_object() self.object = self.get_object()
@ -522,6 +525,14 @@ class PollPDFView(PollMixin, PDFView):
""" """
return u'%s%s_%s' % (_("Motion"), str(self.object.poll_number), _("Poll")) return u'%s%s_%s' % (_("Motion"), str(self.object.poll_number), _("Poll"))
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, pdf): def append_to_pdf(self, pdf):
""" """
Append PDF objects. Append PDF objects.