This commit is contained in:
Emanuel Schuetze 2012-07-21 22:05:51 +02:00
commit b9c48f602e
54 changed files with 942 additions and 687 deletions

20
INSTALL
View File

@ -16,9 +16,14 @@ I. Installation on Windows (32/64bit)
1. Install requirements: 1. Install requirements:
OpenSlides requires following programs, which should be OpenSlides requires following programs, which should be
installed first: Python Programming Language 2.7, installed first:
Setuptools, ReportLab Toolkit, Python Imaging Library (PIL), + Python Programming Language 2 (>= 2.5),
Django and django-mptt: + Setuptools
+ ReportLab Toolkit
+ Python Imaging Library (PIL)
+ Django
+ django-mptt
a) Download and run 32bit MSI installer from http://www.python.org/: a) Download and run 32bit MSI installer from http://www.python.org/:
@ -80,9 +85,9 @@ II. Installation on GNU/Linux and MacOSX
OpenSlides requires following programs, which should be OpenSlides requires following programs, which should be
installed first: installed first:
+ Python Programming Language 2 (>= 2.5), + Python Programming Language 2 (>= 2.5)
+ virtualenv (>= 1.4.1), + virtualenv (>= 1.4.1)
+ ReportLab Toolkit and + ReportLab Toolkit
+ Python Imaging Library (PIL) + Python Imaging Library (PIL)
E.g. for ubuntu run: E.g. for ubuntu run:
@ -114,7 +119,7 @@ II. Installation on GNU/Linux and MacOSX
4. Activate the virtual environment: 4. Activate the virtual environment:
$ . .venv/bin/activate $ source .venv/bin/activate
5. Install the required python-packages: 5. Install the required python-packages:
@ -143,4 +148,3 @@ II. Installation on GNU/Linux and MacOSX
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 (see 4.) before starting the server (see 6.).

BIN
docs/_static/images/chapter2_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/_static/images/tutorial_de_1_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/_static/images/tutorial_de_1_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
docs/_static/images/tutorial_de_1_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
docs/_static/images/tutorial_de_1_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
docs/_static/images/tutorial_de_1_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
docs/_static/images/tutorial_de_1_06.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/_static/images/tutorial_de_1_07.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/_static/images/tutorial_de_1_08.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/_static/images/tutorial_de_1_09.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/_static/images/tutorial_de_1_10.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/_static/images/tutorial_de_1_11.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
docs/_static/images/tutorial_de_1_12.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/_static/images/tutorial_de_2_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/_static/images/tutorial_de_2_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/_static/images/tutorial_de_2_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
docs/_static/images/tutorial_de_2_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
docs/_static/images/tutorial_de_2_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/_static/images/tutorial_de_2_06.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
docs/_static/images/tutorial_de_2_07.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
docs/_static/images/tutorial_de_3_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/_static/images/tutorial_de_3_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/_static/images/tutorial_de_3_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/_static/images/tutorial_de_3_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
docs/_static/images/tutorial_de_3_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -1,3 +1,6 @@
@import url('sphinxdoc.css'); @import url('sphinxdoc.css');
/* Specific stylesheet for OpenSlides Documentation */ /* Specific stylesheet for OpenSlides Documentation */
.screenshot {
width:100%;}

View File

@ -8,14 +8,14 @@ OpenSlides wurde vor allem für Mitgliederversammlungen, Delegiertenversammlunge
OpenSlides kann in drei Modi betrieben werden: OpenSlides kann in drei Modi betrieben werden:
Präsentationsmodus: Präsentationsmodus:
Im Präsentationsmodus steuern ein oder mehrere Veranstalter (z. B. Vorstandsmitglieder eines Vereins oder einer Partei) das Programm allein. Sie bearbeiten diese Inhalte interaktiv und bestimmen, was auf dem Beamer gezeigt wird. Alle Anwesenden können die Veranstaltung auf der Leinwand verfolgen. Im Präsentationsmodus steuern ein oder mehrere Veranstalter (zum Beispiel Vorstandsmitglieder eines Vereins oder einer Partei) das Programm allein. Sie bearbeiten diese Inhalte interaktiv und bestimmen, was auf dem Beamer gezeigt wird. Alle Anwesenden können die Veranstaltung auf der Leinwand verfolgen.
Präsentationsmodus Single: Präsentationsmodus Single:
Der Unterschied zum normalen Präsentationsmodus ist, dass nur eine einzige Person das gesamte System bedient *und* der Beamer auch an ihrem Computer angeschlossen ist. Der Unterschied zum normalen Präsentationsmodus ist, dass nur eine einzige Person das gesamte System bedient *und* der Beamer auch an ihrem Computer angeschlossen ist.
Teilnehmermodus: Teilnehmermodus:
Im Teilnehmermodus können sich zusätzlich zur Versammlungsleitung die anwesenden Teilnehmer mit dem eigenen Laptop oder Smartphone über Netzwerk (z. B. WLAN) anmelden und eigene Inhalte bearbeiten, zum Beispiel einen Antrag stellen oder einen Kandidaten zur Wahl vorschlagen. Eine umfangreiche Rechteverwaltung garantiert die notwendige Sicherheit des Systems. Die Versammlungsleitung hat in der Regel weitgehende, die Versammlungsteilnehmer nur eingeschränkte Zugriffsrechte. Im Teilnehmermodus können sich zusätzlich zur Versammlungsleitung die anwesenden Teilnehmer mit dem eigenen Laptop oder Smartphone über Netzwerk (zum Beispiel WLAN) anmelden und eigene Inhalte bearbeiten, zum Beispiel einen Antrag stellen oder einen Kandidaten zur Wahl vorschlagen. Eine umfangreiche Rechteverwaltung garantiert die notwendige Sicherheit des Systems. Die Versammlungsleitung hat in der Regel weitgehende, die Versammlungsteilnehmer nur eingeschränkte Zugriffsrechte.
Außer beim Präsentationsmodus Single benötigt man ein Computernetzwerk, z. B. mit mehreren LAN-Anschlüssen oder einem WLAN im Raum. Ein Computer fungiert hier als Server für OpenSlides. Alle anderen Computer müssen auf dessen IP-Adresse zugreifen können. Der Computer, an dem der Beamer angeschlossen ist, kann auch ein eigenständiger Computer sein, der über das Netzwerk auf den Server zugreift. Außer beim Präsentationsmodus Single benötigt man ein Computernetzwerk, zum Beispiel mit mehreren LAN-Anschlüssen oder einem WLAN im Raum. Ein Computer fungiert hier als Server für OpenSlides. Alle anderen Computer müssen auf dessen IP-Adresse zugreifen können. Der Computer, an dem der Beamer angeschlossen ist, kann auch ein eigenständiger Computer sein, der über das Netzwerk auf den Server zugreift.
OpenSlides ist webbasiert, das heißt, es muss bei den Benutzern und Teilnehmern keine neue Software installiert werden. Das Programm wird ausschließlich über den eigenen Browser bedient. Alle gängigen aktuellen Browser werden untersützt. Lediglich die Veranstaltungsleitung muss auf einem einzigen Computer, dem Server, OpenSlides installieren und starten. OpenSlides ist webbasiert, das heißt, es muss bei den Benutzern und Teilnehmern keine neue Software installiert werden. Das Programm wird ausschließlich über den eigenen Browser bedient. Alle gängigen aktuellen Browser werden untersützt. Lediglich die Veranstaltungsleitung muss auf einem einzigen Computer, dem Server, OpenSlides installieren und starten.

View File

@ -73,17 +73,17 @@ Falls dies wegen Ihrer Browsereinstellungen nicht gelingt, rufen Sie das OpenSli
Erster Login Erster Login
------------ ------------
Der erste Login als Administrator ist mit dem Benutzernamen ``admin`` und dem Passwort ``admin`` möglich. Sie sollten das Passwort nach dem ersten Start ändern, um Unbefugten keinen Zugriff auf Ihre Daten zu gewähren. Der erste Login als Administrator ist mit dem Benutzernamen ``admin`` und dem Passwort ``admin`` möglich. Sie sollten das Passwort nach dem ersten Start ändern__, um Unbefugten keinen Zugriff auf Ihre Daten zu gewähren.
(**TODO Link zum Passwort ändern einfügen**)
.. __: chapter5_1.html#
Arbeiten mit OpenSlides Arbeiten mit OpenSlides
+++++++++++++++++++++++ +++++++++++++++++++++++
Im Webinterface von OpenSlides können Sie über die verschiedenen Tabs alle Inhalte in OpenSlides eingeben und verwalten. Im Webinterface von OpenSlides können Sie über die verschiedenen Tabs alle Inhalte in OpenSlides eingeben und verwalten.
.. image:: _static/images/index.png .. image:: _static/images/chapter2_01.png
:class: screenshot
Im Tab „Projektor“ steuern Sie, welche Folien auf dem Beamer angezeigt werden. Dazu klicken Sie einfach auf das jeweilige graue Beamersymbol. Im Tab „Tagesordnung“ können Sie die Tagesordnung der Veranstaltung im Vorfeld anlegen und entsprechende Folien vorbereiten. In den Tabs „Anträge“ und „Wahlen“ verwalten Sie die gestellten Anträge und die Wahlämter mit den Kandidaten sowie die dazugehörigen Abstimmungen und Wahlen. Der Tab „Teilnehmer/innen“ ermöglicht einen Zugriff auf die Personenprofile. Im Tab „Konfiguration“ können einige Einstellungen vorgenommen werden. Im Tab „Projektor“ steuern Sie, welche Folien auf dem Beamer angezeigt werden. Dazu klicken Sie einfach auf das jeweilige graue Beamersymbol. Im Tab „Tagesordnung“ können Sie die Tagesordnung der Veranstaltung im Vorfeld anlegen und entsprechende Folien vorbereiten. In den Tabs „Anträge“ und „Wahlen“ verwalten Sie die gestellten Anträge und die Wahlämter mit den Kandidaten sowie die dazugehörigen Abstimmungen und Wahlen. Der Tab „Teilnehmer/innen“ ermöglicht einen Zugriff auf die Personenprofile. Im Tab „Konfiguration“ können einige Einstellungen vorgenommen werden.

View File

@ -15,6 +15,8 @@ Inhalt:
chapter2 chapter2
tutorial_de
chapter3 chapter3
chapter4 chapter4

26
docs/de/tutorial_de.rst Normal file
View File

@ -0,0 +1,26 @@
Tutorial Präsentationsmodus
=============================
In diesem Tutorial sehen Sie am Beispiel der Mitgliederversammlung eines Kleingartenvereins, wie Sie OpenSlides im Präsentationsmodus bedienen.
Zunächst lernen Sie, OpenSlides allgemein einzurichten und Folien auf dem Beamer zu zeigen. Anschließend können Sie die einzelnen Tutorials für Tagesordnung, Teilnehmerverwaltung, Anträge und Wahlen durcharbeiten.
Alle Tutorials gehen von folgenden Rahmenbedingungen aus:
Der Verein „Schreberverein Nord e. V.“ hält am 3. März 2012 seine jährliche Mitgliederversammlung ab. Der Vorstand erwartet etwa 40 Teilnehmer. Auf der Versammlung werden verschiedene Berichte gehalten und über eine Satzungsänderung und einen Antrag für ein Gartenfest abgestimmt. Außerdem finden Wahlen zum Vorstand (drei Personen) und zum Beirat (sieben Personen) statt.
Die einzelen Tutorials:
.. toctree::
:maxdepth: 1
tutorial_de_1
tutorial_de_2
tutorial_de_3
tutorial_de_4
tutorial_de_5

138
docs/de/tutorial_de_1.rst Normal file
View File

@ -0,0 +1,138 @@
Einrichtung von OpenSlides
==========================
Zunächst müssen Sie OpenSlides auf dem Server installieren, den Server starten und einige Einstellungen für Ihre Veranstaltung vornehmen. Danach können Sie Ihre ersten Folien einrichten und auf dem Beamer zeigen.
Installation und Start des Servers
----------------------------------
Installieren Sie OpenSlides wie hier__ beschrieben. Starten Sie den Server wie hier__ beschrieben. Sie sehen jetzt die Login-Seite von OpenSlides in Ihrem Browser. Loggen Sie sich als Administrator ein, indem Sie als Benutzernamen ``admin`` und als Passwort ``admin`` eingeben und auf ``Anmelden`` klicken.
.. image:: _static/images/tutorial_de_1_01.png
:class: screenshot
Anschließend sollten Sie sofort das Administrator-Passwort ändern. Geben Sie in die entsprechenden Felder Ihr altes Passwort ``admin`` und als neues Passwort ``geheim`` ein. Wiederholen Sie das neue Passwort im dritten Formularfeld. Bestätigen Sie die Eingabe mit ``Speichern``.
.. image:: _static/images/tutorial_de_1_02.png
:class: screenshot
.. __: chapter2.html#installation
.. __: chapter2.html#start-des-servers-und-offnen-des-browsers
Konfiguration des Systems
-------------------------
Geben Sie die Rahmendaten Ihrer Veranstaltung ins System ein. Wechseln Sie dazu zum Tab „Konfiguration“ und geben Sie die Allgemeinen Einstellungen wie folgt ein:
Veranstaltungsname:
Schreberverein Nord e. V.
Kurzbeschreibung der Veranstaltung:
Mitgliederversammlung des Vereins 2012
Veranstaltungszeitraum:
Sonnabend, 3. März 2012
Veranstaltungsort:
Leipzig
Veranstalter:
Schreberverein Nord e. V.
Startseite Titel:
Willkommen zur Mitgliederversammlung
Startseite Willkommenstext:
Herzlich willkommen, liebe Gartenfreunde!
.. image:: _static/images/tutorial_de_1_03.png
:class: screenshot
Klicken Sie anschließend auf ``Speichern``. Auch bei allen folgenden Eingaben dieses Tutorials müssen Sie stets auf ``Speichern`` klicken, um die Eingabe abzuschließen.
Wenn Sie nun links oben auf das Projektor-Logo klicken, kommen Sie zur Startseite von OpenSlides.
.. image:: _static/images/tutorial_de_1_04.png
:class: screenshot
Einrichtung eigener Folien
--------------------------
Um erste benutzerdefinierte Folien hinzuzufügen, wechseln Sie zum Tab „Projektor“. Klicken Sie in dem Fenster „Benutzerdefinierte Folien“ auf ``Neue Folie``
.. image:: _static/images/tutorial_de_1_05.png
:class: screenshot
und geben Sie eine Folie wie folgt ein:
Titel:
Kaffeepause um 15.30 Uhr
Text:
Bitte kommen Sie pünktlich um 16.00 Uhr zurück in den Saal.
.. image:: _static/images/tutorial_de_1_06.png
:class: screenshot
Die Ansicht im Tab „Projektor“ müsste nun wie folgt aussehen:
.. image:: _static/images/tutorial_de_1_07.png
:class: screenshot
Technische Einrichtung im Veranstaltungsraum
--------------------------------------------
Richten Sie Ihren Veranstaltungsraum ein. Im Präsentationsmodus Single schließen Sie den Beamer an Ihren Computer an und schieben ein zweites Browserfenster auf den erweiterten Bildschirm. Ansonsten richten Sie ein Netzwerk ein, schließen Sie einen beliebigen Computer an den Beamer an und öffnen im Vollbildmodus die Seite mit der Projektoransicht. Den entsprechend Link finden Sie bei OpenSlides im Tab „Projektor“ auf der linken Seite. Er lautet zum Beispiel ``http://192.168.x.y/projector/`` wobei x und y für je eine bestimmte Zahl mit ein bis drei Ziffern stehen.
.. image:: _static/images/tutorial_de_1_08.png
:class: screenshot
Das Beamerbild sieht zurzeit wie folgt aus:
.. image:: _static/images/tutorial_de_1_09.png
:class: screenshot
Auswahl der Beamerfolien
------------------------
Testen Sie, ob auf dem Beamer die gewünschten Folien zu sehen sind, wenn Sie bei OpenSlides im Tab „Projektor“ verschiedene Folien auswählen. Sie können eine bestimmte Folien anwählen, indem Sie auf den jeweiligen grauen Haken klicken. Die jeweils aktive Folie zeigt einen blauen Haken.
.. image:: _static/images/tutorial_de_1_10.png
:class: screenshot
Das volle Potenzial von OpenSlides entfaltet sich, wenn Sie über Tagesordnung, Anträge und Wahlen zahlreiche Folien anlegen, die Sie während der Veranstaltung zeigen und im Hintergrund editieren können.
Wenn Sie zwischendurch eine kurze Nachricht, zum Beispiel ein Fußballergebnis, einblenden wollen, ohne dass dazu eine extra Folie angelegt werden soll, können Sie die Message-Funktion im Fenster „Einblendungen“ benutzen. Schreiben Sie im Fenster „Einblendungen“ unter „Message“ die Nachricht „Bayern 1 : 1 Dortmund“, klicken auf ``Übernehmen`` und aktivieren die Einblendung, indem Sie auf den davor gestellten grauen Haken klicken.
.. image:: _static/images/tutorial_de_1_11.png
:class: screenshot
Das Beamerbild sieht dann wie folgt aus:
.. image:: _static/images/tutorial_de_1_12.png
:class: screenshot
Schalten Sie die Einblendung wieder aus, indem Sie erneut auf den (nunmehr blauen) Haken klicken.
Weiter geht es mit dem zweiten Teil des Tutorials: `Tagesordnung verwalten`__
.. __: tutorial_de_2.html

76
docs/de/tutorial_de_2.rst Normal file
View File

@ -0,0 +1,76 @@
Tagesordnung verwalten
======================
In diesem Teil lernen Sie, wie Sie Einträge in der Tagesordnung erstellen und verwalten.
Eingabe der Tagesordnung
------------------------
Die Tagesordnung enthält bei Neuinstallation noch keine Einträge. Legen Sie zunächst einige Einträge an.
Klicken Sie dazu im Tab „Tagesordnung“ auf „Neuer Eintrag“
.. image:: _static/images/tutorial_de_2_01.png
:class: screenshot
und geben Sie den Eintrag wie folgt ein:
Titel:
Begrüßung
Text:
Es begrüßt Sie der Vereinsvorsitzende Dr. Hans Schulze.
.. image:: _static/images/tutorial_de_2_02.png
:class: screenshot
Klicken Sie anschließend auf ``Speichern``.
Erweitern Sie nun die Tagesordnung um folgende Einträge: Bericht des Vorstands, Satzungsänderung, Gartenfest, Sonstiges, Wahlen der Vereinsämter.
Die Übersicht über die Einträge (links bei „Alle Einträge“) müsste nun so aussehen:
.. image:: _static/images/tutorial_de_2_03.png
:class: screenshot
Sie können nun nachträglich die Reihenfolge der Einträge verändern und auch Tagesordnungspunkte zu Unterpunkten verschieben. Ziehen Sie zum Beispiel mit der Maus an den gekreuzten Pfeilen des Punktes „Sonstiges“, um seine Position zu verändern und ihn nach unten zu verschieben. Richten Sie die Tagesordnung durch Verschieben der übrigen Einträge so ein, dass sie wie folgt aussieht:
.. image:: _static/images/tutorial_de_2_04.png
:class: screenshot
Klicken Sie auf ``Ja``, um die geänderte Reihenfolge zu speichern. Solange Sie die veränderte Reihenfolge nicht gespeichert haben, wird die Veränderung nicht in der Datenbank hinterlegt. Dies wird Ihnen durch die kleinen Sternchen hinter den verschobenen Tagesordnungspunkten angezeigt.
*Zu jedem Antrag und zu jedem Wahlamt können Sie über einen Link im Seitenmenü des betreffenden Antrags oder Wahlamts auch einen eigenen Eintrag in der Tagesordnung erstellen, der direkt mit der Antrags- bzw. Wahlfolie verknüpft ist. Dies empfiehlt sich, wenn ein einzelner Antrag oder eine einzelne Wahl an einer bestimmten Stelle der Tagesordnung behandelt werden soll.*
Ändern von Einträgen in der Tagesordnung
----------------------------------------
Titel und Inhalt der Tagesordnungspunkte (Einträge) können jederzeit, insbesondere während des laufenden Betriebs geändert werden. Solange ein Eintrag keinen Inhalt im Feld „Text“ enthält, wird der Titel auf dem Beamer groß und zentriert dargestellt. Wenn Sie einen zusätzlichen Text eingeben, werden Überschrift und Text linksbündig dargestellt.
Ändern Sie zum Beispiel den Inhalt des Tagesordnungspunktes „Bericht des Vorstandes“, indem Sie in der Zeile dieses Eintrags auf das Bearbeiten-Symbol |document-edit| klicken und zusätzlich zum Titel einen Text zum Tagesordnungspunkt wie folgt eingeben:
Der Vorstand berichtet über seine Arbeit, insbesondere die Entwicklung der Mitgliederzahlen und Finanzen.
.. image:: _static/images/tutorial_de_2_05.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Auswahl der Beamerfolien
------------------------
Wenn Sie in den Tab „Projektor“ wechseln
.. image:: _static/images/tutorial_de_2_06.png
:class: screenshot
können Sie durch einen Klick auf den jeweiligen grauen Haken eine bestimmte Folie auswählen. Die jeweils aktive Folie zeigt einen blauen Haken. Probieren Sie, verschiedene Tagesordnungspunkte auf dem Beamer anzuzeigen.
.. image:: _static/images/tutorial_de_2_07.png
:class: screenshot
Weiter geht es mit dem dritten Teil des Tutorials: `Teilnehmer/innen verwalten`__
.. __: tutorial_de_3.html

72
docs/de/tutorial_de_3.rst Normal file
View File

@ -0,0 +1,72 @@
Teilnehmer/innen verwalten
==========================
In diesem Teil lernen Sie, wie Sie die Teilnehmer und Teilnehmerinnen Ihrer Veranstaltungen im System erfassen. Grundsätzlich brauchen Sie nur diejenigen Teilnehmer und Teilnehmerinnen erfassen, die das System verwalten, Anträge stellen oder unterstützen oder bei Wahlen kandidieren.
Eingabe der Teilnehmer und Teilnehmerinnen
------------------------------------------
Sie können die Teilnehmer und Teilnehmerinnen einzeln eintragen oder wie hier__ beschrieben importieren. Jedoch werden beim Import alle vorher eingetragenen Teilnehmer gelöscht. Eingetragenen Personen, die das System verwalten sollen, müssen die entsprechenden Berechtigungen zugewiesen werden.
.. __: chapter5_6.html
Wechseln Sie zum Tab „Teilnehmer/innen“. Klicken Sie links auf „Neue/r Teilnehmer/in“
.. image:: _static/images/tutorial_de_3_01.png
:class: screenshot
und geben Sie einen neuen Teilnehmer wie folgt ein:
Vorname:
Max
Nachname:
Mustermann
Benutzerrolle:
Delegierter
Geschlecht:
männlich
Typ:
Delegierter
.. image:: _static/images/tutorial_de_3_02.png
:class: screenshot
Wiederholen Sie diese Schritte und geben Sie folgende weitere Teilnehmer und Teilnehmerinnen ein: Peter Müller, Franziska Meyer, Luise Schmidt und Hans Schulze.
Wenn Sie anschließend links auf „Alle Teilnehmer/innen“ klicken, sehen Sie die folgende Übersicht:
.. image:: _static/images/tutorial_de_3_03.png
:class: screenshot
Bearbeiten eines Teilnehmers
----------------------------
Sie können die Angaben zu einem Teilnehmer jederzeit bearbeiten. Klicken Sie zum Beispiel beim Teilnehmer „Max Mustermann“ unter der Rubrik „Aktionen“ auf das Bearbeiten-Symbol |document-edit| und weisen Sie der Person die Benutzerrollen „Tagesleitung“ und „Delegierter“ zu. Um mehrere Einträge auszuwählen, halten Sie beim Anklicken die Taste ``Strg`` gedrückt.
.. image:: _static/images/tutorial_de_3_04.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Passworts eines Teilnehmers
---------------------------
Beim Anlegen eines Teilnehmers wird automatisch ein zufälliges Erst-Passwort gesetzt. Sie können das Erst-Passwort aus einer PDF-Datei ablesen, die Sie durch Klick auf den Link „Erst-Passwörter als PDF“ im linken Seitenmenü erreichen.
Bitten Sie jeden, dem Sie sein Erst-Passwort aushändigen, dieses nach dem ersten Login zu ändern.
Um als Administrator das Passwort von zum Beispiel Max Mustermann neu zu setzen, klicken Sie erneut auf das Bearbeiten-Symbol |document-edit| und tragen Sie unten unter „Erst-Passwort“ ein neues, selbstgewähltes Passwort ein. Für dieses Tutorial sei als Passwort ``geheim`` gewählt. Anschließend klicken Sie auf ``Übernehmen``. In einem zweiten Schritt müssen Sie auf den Link „Auf Erst-Passwort zurücksetzen“ klicken, um das im System gespeicherte Passwort mit Ihrem neu eingegebenen zu ersetzen. Bestätigen Sie den oben auf der Seite erscheinenden Dialog mit ``Ja``.
.. image:: _static/images/tutorial_de_3_05.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Weiter geht es mit dem vierten Teil des Tutorials: `Anträge verwalten und behandeln`__
.. __: tutorial_de_4.html

View File

@ -0,0 +1,2 @@
Anträge verwalten und behandeln
===============================

View File

@ -0,0 +1,2 @@
Wahlen durchführen
==================

View File

@ -18,7 +18,7 @@ except ImportError:
from django.db import models from django.db import models
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _, ugettext_noop from django.utils.translation import ugettext_lazy as _, ugettext_noop, ugettext
from mptt.models import MPTTModel, TreeForeignKey from mptt.models import MPTTModel, TreeForeignKey
@ -67,7 +67,7 @@ class Item(MPTTModel, SlideMixin):
For use in Template For use in Template
??Why does {% trans item.print_related_type|capfirst %} not work?? ??Why does {% trans item.print_related_type|capfirst %} not work??
""" """
return _(self.get_related_type().capitalize()) return ugettext(self.get_related_type().capitalize())
def get_title(self): def get_title(self):
""" """
@ -77,6 +77,18 @@ class Item(MPTTModel, SlideMixin):
return self.title return self.title
return self.get_related_slide().get_agenda_title() return self.get_related_slide().get_agenda_title()
def get_title_supplement(self):
"""
return a supplement for the title.
"""
if self.related_sid is None:
return ''
try:
return self.get_related_slide().get_agenda_title_supplement()
except AttributeError:
return '(%s)' % self.print_related_type()
def slide(self): def slide(self):
""" """
Return a map with all Data for the Slide Return a map with all Data for the Slide

View File

@ -21,16 +21,7 @@
<div class="dragcell"></div> <div class="dragcell"></div>
{% endif %} {% endif %}
<a href="{% model_url item 'view' %}">{{ item }}</a> <a href="{% model_url item 'view' %}">{{ item }}</a>
{% if item.get_related_type == 'application' %} {{ item.get_title_supplement|safe }}
({% trans 'Application' %}
{% if item.get_related_slide.number %}
{{ item.get_related_slide.number }})
{% else %}
<i>[{% trans "no number" %}]</i>)
{% endif %}
{% elif item.related_sid %}
({{ item.print_related_type }})
{% endif %}
</td> </td>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<td> <td>

View File

@ -40,16 +40,7 @@
<span class="indentation">&nbsp;</span> <span class="indentation">&nbsp;</span>
{% endfor %} {% endfor %}
<a href="{% model_url item 'view' %}">{{ item }}</a> <a href="{% model_url item 'view' %}">{{ item }}</a>
{% if item.get_related_type == 'application' %} {{ item.get_title_supplement }}
({% trans 'Application' %}
{% if item.get_related_slide.number %}
{{ item.get_related_slide.number }})
{% else %}
<i>[{% trans "no number" %}]</i>)
{% endif %}
{% elif item.related_sid %}
({{ item.print_related_type }})
{% endif %}
</li> </li>
{% empty %} {% empty %}
<li>{% trans 'No items available.' %}</li> <li>{% trans 'No items available.' %}</li>

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
{% load tags %}
<head>
<link type="text/css" rel="stylesheet" href="/static/styles/beamer.css">
<link rel="shortcut icon" href="/static/images/favicon.png" type="image/png" />
<script type="text/javascript" src="/static/javascript/jquery.js"></script>
<script type="text/javascript" src="/static/javascript/beamer.js"></script>
<title>{% block title %} {% get_config 'event_name' %} {% endblock %}</title>
{% block header %}
{% endblock %}
</head>
<body>
<div id="config" style="display:none;">
<div id="ajax">{{ ajax }}</div>
</div>
<div id="ajaxswitcher"></div>
<div id="header">
<div id="logo"><img src="/static/images/logo-beamer.png"></div>
<div class="event_name">{% get_config 'event_name' %}</div>
<div class="event_description">{% get_config 'event_description' %}</div>
</div>
<div id="currentTime">
{% now "H:i" %}
</div>
<div id="countdown">0:00</div>
<div id="content">
{% block content %}
{% endblock %}
</div>
</body>
</html>

View File

@ -18,7 +18,7 @@ from django.db import models
from django.db.models import Max from django.db.models import Max
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.translation import pgettext from django.utils.translation import pgettext
from django.utils.translation import ugettext_lazy as _, ugettext_noop from django.utils.translation import ugettext_lazy as _, ugettext_noop, ugettext
from openslides.utils.utils import _propper_unicode from openslides.utils.utils import _propper_unicode
@ -436,6 +436,10 @@ class Application(models.Model, SlideMixin):
def get_agenda_title(self): def get_agenda_title(self):
return self.public_version.title return self.public_version.title
def get_agenda_title_supplement(self):
number = self.number or '<i>[%s]</i>' % ugettext('no number')
return '(%s %s)' % (ugettext('Application'), number)
def __getattr__(self, name): def __getattr__(self, name):
""" """
if name is title, text, reason or time, if name is title, text, reason or time,

View File

@ -72,7 +72,7 @@ class ConfigForm(forms.Form, CssClassMixin):
required=False, required=False,
label=_("Election method"), label=_("Election method"),
choices=( choices=(
("auto", _("Choose the right method.")), ("auto", _("Automatic assign of method.")),
("votes", _("Always one option per candidate.")), ("votes", _("Always one option per candidate.")),
("yesnoabstain", _("Always Yes-No-Abstain per candidate.")), ("yesnoabstain", _("Always Yes-No-Abstain per candidate.")),
) )

View File

@ -43,7 +43,7 @@ class Assignment(models.Model, SlideMixin):
posts = models.PositiveSmallIntegerField( posts = models.PositiveSmallIntegerField(
verbose_name=_("Number of available posts")) verbose_name=_("Number of available posts"))
polldescription = models.CharField(max_length=100, null=True, blank=True, polldescription = models.CharField(max_length=100, null=True, blank=True,
verbose_name=_("Short description (for ballot paper)")) verbose_name=_("Comment on the ballot paper."))
profile = models.ManyToManyField(Profile, null=True, blank=True) profile = models.ManyToManyField(Profile, null=True, blank=True)
elected = models.ManyToManyField(Profile, null=True, blank=True, elected = models.ManyToManyField(Profile, null=True, blank=True,
related_name='elected_set') related_name='elected_set')

View File

@ -15,7 +15,7 @@ from django.contrib import messages
from django.contrib.auth.models import Group, Permission from django.contrib.auth.models import Group, Permission
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.importlib import import_module from django.utils.importlib import import_module
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext as _
from openslides import get_version from openslides import get_version

View File

@ -6,7 +6,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: 2012-07-19 11:04+0200\n" "POT-Creation-Date: 2012-07-20 11:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n" "Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
"Language-Team: German\n" "Language-Team: German\n"
@ -69,8 +69,6 @@ msgstr "Darf die Tagesordung verwalten"
#: agenda/templates/agenda/overview.html:77 #: agenda/templates/agenda/overview.html:77
#: agenda/templates/projector/AgendaSummary.html:6 #: agenda/templates/projector/AgendaSummary.html:6
#: agenda/templates/projector/AgendaSummary.html:10 #: agenda/templates/projector/AgendaSummary.html:10
#: application/templates/projector/overview.html:3
#: application/templates/projector/overview.html:10
msgid "Agenda" msgid "Agenda"
msgstr "Tagesordnung" msgstr "Tagesordnung"
@ -107,9 +105,6 @@ msgstr "Eintrag %s wurde erfolgreich gelöscht."
#: application/views.py:487 application/views.py:809 application/views.py:860 #: application/views.py:487 application/views.py:809 application/views.py:860
#: application/templates/application/view.html:82 #: application/templates/application/view.html:82
#: application/templates/projector/Application.html:37 #: application/templates/projector/Application.html:37
#: application/templates/projector/ItemApplication.html:30
#: application/templates/projector/ItemAssignment.html:67
#: application/templates/projector/ItemAssignment.html:71
#: assignment/models.py:240 assignment/views.py:557 #: assignment/models.py:240 assignment/views.py:557
#: assignment/templates/assignment/view.html:158 #: assignment/templates/assignment/view.html:158
#: assignment/templates/assignment/view.html:162 #: assignment/templates/assignment/view.html:162
@ -124,8 +119,6 @@ msgstr "Ja"
#: application/views.py:487 application/views.py:809 application/views.py:861 #: application/views.py:487 application/views.py:809 application/views.py:861
#: application/templates/application/view.html:83 #: application/templates/application/view.html:83
#: application/templates/projector/Application.html:38 #: application/templates/projector/Application.html:38
#: application/templates/projector/ItemApplication.html:31
#: application/templates/projector/ItemAssignment.html:68
#: assignment/models.py:240 assignment/views.py:558 #: assignment/models.py:240 assignment/views.py:558
#: assignment/templates/assignment/view.html:159 #: assignment/templates/assignment/view.html:159
#: assignment/templates/projector/Assignment.html:79 utils/utils.py:53 #: assignment/templates/projector/Assignment.html:79 utils/utils.py:53
@ -156,22 +149,28 @@ msgstr "Neuer Eintrag"
msgid "Agenda as PDF" msgid "Agenda as PDF"
msgstr "Tagesordnung als PDF" msgstr "Tagesordnung als PDF"
#: agenda/templates/agenda/base_agenda.html:26 #: agenda/templates/agenda/base_agenda.html:19
#: projector/templates/projector/base_projector.html:20
#: templates/front_page.html:25
msgid "Projector view"
msgstr "Projektor-Ansicht"
#: agenda/templates/agenda/base_agenda.html:31
msgid "View item" msgid "View item"
msgstr "Eintrag anzeigen" msgstr "Eintrag anzeigen"
#: agenda/templates/agenda/base_agenda.html:31 #: agenda/templates/agenda/base_agenda.html:36
#: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:16 #: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:16
#: agenda/templates/agenda/item_row.html:49 #: agenda/templates/agenda/item_row.html:49
msgid "Edit item" msgid "Edit item"
msgstr "Eintrag bearbeiten" msgstr "Eintrag bearbeiten"
#: agenda/templates/agenda/base_agenda.html:33 #: agenda/templates/agenda/base_agenda.html:38
#: agenda/templates/agenda/item_row.html:50 #: agenda/templates/agenda/item_row.html:50
msgid "Delete item" msgid "Delete item"
msgstr "Eintrag löschen" msgstr "Eintrag löschen"
#: agenda/templates/agenda/base_agenda.html:38 #: agenda/templates/agenda/base_agenda.html:43
msgid "Show item" msgid "Show item"
msgstr "Eintrag projizieren" msgstr "Eintrag projizieren"
@ -349,7 +348,6 @@ msgstr "Bearbeiten"
#: application/templates/application/view.html:232 #: application/templates/application/view.html:232
#: application/templates/application/view.html:252 #: application/templates/application/view.html:252
#: application/templates/projector/Application.html:77 #: application/templates/projector/Application.html:77
#: application/templates/projector/ItemApplication.html:56
msgid "Reason" msgid "Reason"
msgstr "Begründung" msgstr "Begründung"
@ -365,7 +363,6 @@ msgstr "Triviale Änderungen erzeugen keine neue Version."
#: application/templates/application/overview.html:41 #: application/templates/application/overview.html:41
#: application/templates/application/view.html:18 #: application/templates/application/view.html:18
#: application/templates/projector/Application.html:55 #: application/templates/projector/Application.html:55
#: application/templates/projector/ItemApplication.html:19
msgid "Submitter" msgid "Submitter"
msgstr "Antragsteller/in" msgstr "Antragsteller/in"
@ -486,7 +483,7 @@ msgstr "Version %d zugelassen"
#: application/models.py:109 #: application/models.py:109
#, python-format #, python-format
msgctxt "Rejected meens not permittd" msgctxt "Rejected means not permitted"
msgid "Version %d rejected" msgid "Version %d rejected"
msgstr "Version %d verworfen" msgstr "Version %d verworfen"
@ -735,10 +732,9 @@ msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
#: application/views.py:563 participant/views.py:395 #: application/views.py:563 participant/views.py:395
msgid "" msgid ""
"The import function is available for the superuser (without user profile) " "The import function is available for the admin (without user profile) only."
"only."
msgstr "" msgstr ""
"Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar." "Die Importfunktion ist nur für den superuser (ohne Nutzerprofil) verfügbar."
#: application/views.py:594 application/views.py:598 application/views.py:604 #: application/views.py:594 application/views.py:598 application/views.py:604
#: application/views.py:607 participant/views.py:464 #: application/views.py:607 participant/views.py:464
@ -802,7 +798,6 @@ msgstr "Keine Anträge vorhanden."
#: application/views.py:738 #: application/views.py:738
#: application/templates/application/base_application.html:24 #: application/templates/application/base_application.html:24
#: application/templates/projector/Application.html:63 #: application/templates/projector/Application.html:63
#: application/templates/projector/ItemApplication.html:50
msgid "Application No." msgid "Application No."
msgstr "Antrag Nr." msgstr "Antrag Nr."
@ -810,8 +805,6 @@ msgstr "Antrag Nr."
#: application/templates/application/overview.html:40 #: application/templates/application/overview.html:40
#: application/templates/application/view.html:37 #: application/templates/application/view.html:37
#: application/templates/projector/Application.html:11 #: application/templates/projector/Application.html:11
#: application/templates/projector/ItemApplication.html:8
#: application/templates/projector/ItemAssignment.html:13
#: assignment/templates/assignment/overview.html:14 #: assignment/templates/assignment/overview.html:14
#: assignment/templates/assignment/overview.html:27 #: assignment/templates/assignment/overview.html:27
#: assignment/templates/assignment/view.html:11 #: assignment/templates/assignment/view.html:11
@ -821,7 +814,7 @@ msgid "Status"
msgstr "Status" msgstr "Status"
#: application/views.py:792 application/templates/application/view.html:217 #: application/views.py:792 application/templates/application/view.html:217
#: application/templates/application/view.html:247 config/models.py:133 #: application/templates/application/view.html:247 config/models.py:131
#: config/templates/config/version.html:5 #: config/templates/config/version.html:5
#: config/templates/config/version.html:8 #: config/templates/config/version.html:8
#: config/templates/config/version.html:11 #: config/templates/config/version.html:11
@ -840,24 +833,19 @@ msgstr "Abstimmungsergebnis"
#: application/templates/application/view.html:69 #: application/templates/application/view.html:69
#: application/templates/application/view.html:77 #: application/templates/application/view.html:77
#: application/templates/projector/Application.html:33 #: application/templates/projector/Application.html:33
#: application/templates/projector/ItemApplication.html:27
msgid "Vote" msgid "Vote"
msgstr "Abstimmung" msgstr "Abstimmung"
#: application/views.py:809 application/views.py:862 #: application/views.py:809 application/views.py:862
#: application/templates/application/view.html:84 #: application/templates/application/view.html:84
#: application/templates/projector/Application.html:39 #: application/templates/projector/Application.html:39 assignment/views.py:558
#: application/templates/projector/ItemApplication.html:32 #: assignment/templates/assignment/view.html:160
#: application/templates/projector/ItemAssignment.html:69
#: assignment/views.py:558 assignment/templates/assignment/view.html:160
#: assignment/templates/projector/Assignment.html:80 #: assignment/templates/projector/Assignment.html:80
msgid "Abstention" msgid "Abstention"
msgstr "Enthaltung" msgstr "Enthaltung"
#: application/views.py:809 application/templates/application/view.html:85 #: application/views.py:809 application/templates/application/view.html:85
#: application/templates/projector/Application.html:40 #: application/templates/projector/Application.html:40
#: application/templates/projector/ItemApplication.html:33
#: application/templates/projector/ItemAssignment.html:88
#: assignment/templates/assignment/view.html:182 #: assignment/templates/assignment/view.html:182
#: assignment/templates/projector/Assignment.html:101 #: assignment/templates/projector/Assignment.html:101
msgid "Invalid" msgid "Invalid"
@ -866,11 +854,8 @@ msgstr "Ungültig"
#: application/views.py:809 #: application/views.py:809
#: application/templates/application/poll_view.html:35 #: application/templates/application/poll_view.html:35
#: application/templates/application/view.html:87 #: application/templates/application/view.html:87
#: application/templates/projector/Application.html:42 #: application/templates/projector/Application.html:42 assignment/views.py:442
#: application/templates/projector/ItemApplication.html:35 #: assignment/templates/assignment/poll_view.html:45
#: application/templates/projector/ItemAssignment.html:93
#: application/templates/projector/ItemAssignment.html:96
#: assignment/views.py:442 assignment/templates/assignment/poll_view.html:45
#: assignment/templates/assignment/view.html:194 #: assignment/templates/assignment/view.html:194
#: assignment/templates/assignment/view.html:199 #: assignment/templates/assignment/view.html:199
#: assignment/templates/projector/Assignment.html:111 #: assignment/templates/projector/Assignment.html:111
@ -1047,9 +1032,8 @@ msgstr "Wahlmöglichkeit"
msgid "Votes" msgid "Votes"
msgstr "Stimmen" msgstr "Stimmen"
#: application/templates/application/poll_view.html:31 #: application/templates/application/poll_view.html:31 assignment/views.py:435
#: application/templates/projector/ItemAssignment.html:85 #: assignment/templates/assignment/poll_view.html:35
#: assignment/views.py:435 assignment/templates/assignment/poll_view.html:35
#: assignment/templates/assignment/view.html:177 #: assignment/templates/assignment/view.html:177
#: assignment/templates/projector/Assignment.html:97 #: assignment/templates/projector/Assignment.html:97
msgid "Invalid votes" msgid "Invalid votes"
@ -1189,83 +1173,19 @@ msgid "Log"
msgstr "Log" msgstr "Log"
#: application/templates/projector/Application.html:29 #: application/templates/projector/Application.html:29
#: application/templates/projector/ItemApplication.html:23
msgid "Poll result" msgid "Poll result"
msgstr "Abstimmungsergebnis" msgstr "Abstimmungsergebnis"
#: application/templates/projector/Application.html:47 #: application/templates/projector/Application.html:47
#: application/templates/projector/ItemApplication.html:41
msgid "No poll results available." msgid "No poll results available."
msgstr "Keine Abstimmungen vorhanden." msgstr "Keine Abstimmungen vorhanden."
#: application/templates/projector/ItemAssignment.html:8
#: assignment/views.py:501 assignment/views.py:517
#: assignment/templates/assignment/overview.html:25
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/view.html:6
#: assignment/templates/projector/Assignment.html:27
msgid "Election"
msgstr "Wahl"
#: application/templates/projector/ItemAssignment.html:16
#: assignment/forms.py:24 assignment/models.py:44 assignment/views.py:364 #: assignment/forms.py:24 assignment/models.py:44 assignment/views.py:364
#: assignment/templates/assignment/view.html:13 #: assignment/templates/assignment/view.html:13
#: assignment/templates/projector/Assignment.html:21 #: assignment/templates/projector/Assignment.html:21
msgid "Number of available posts" msgid "Number of available posts"
msgstr "Anzahl der zur Wahl stehenden Posten" msgstr "Anzahl der zur Wahl stehenden Posten"
#: application/templates/projector/ItemAssignment.html:30
#: application/templates/projector/ItemAssignment.html:48
#: assignment/views.py:370 assignment/views.py:403
#: assignment/templates/assignment/overview.html:26
#: assignment/templates/assignment/poll_view.html:18
#: assignment/templates/assignment/view.html:36
#: assignment/templates/assignment/view.html:110
#: assignment/templates/projector/Assignment.html:38
#: assignment/templates/projector/Assignment.html:56
msgid "Candidates"
msgstr "Kandidaten/innen"
#: application/templates/projector/ItemAssignment.html:36
#: assignment/templates/assignment/view.html:47
#: assignment/templates/projector/Assignment.html:44
msgid "No candidates available."
msgstr "Keine Kandidaten/innen vorhanden."
#: application/templates/projector/ItemAssignment.html:45
#: assignment/templates/assignment/view.html:95
#: assignment/templates/projector/Assignment.html:52
msgid "Election results"
msgstr "Wahlergebnisse"
#: application/templates/projector/ItemAssignment.html:51
#: assignment/views.py:395
#: assignment/templates/assignment/base_assignment.html:71
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/poll_view.html:8
#: assignment/templates/assignment/view.html:104
#: assignment/templates/assignment/view.html:113
#: assignment/templates/projector/Assignment.html:59
msgid "ballot"
msgstr "Wahlgang"
#: application/templates/projector/ItemAssignment.html:60
#: assignment/templates/assignment/view.html:145
#: assignment/templates/projector/Assignment.html:69
msgid "Candidate is elected"
msgstr "Kandidat/in ist gewählt"
#: application/templates/projector/ItemAssignment.html:81
#: assignment/templates/assignment/view.html:213
#: assignment/templates/projector/Assignment.html:126
msgid "No ballots available."
msgstr "Keine Wahlgänge vorhanden."
#: application/templates/projector/ItemPoll.html:4
#, fuzzy
msgid "Poll about"
msgstr "Abstimmungsergebnis"
#: assignment/forms.py:35 #: assignment/forms.py:35
msgid "Nominate a participant" msgid "Nominate a participant"
msgstr "Teilnehmer/in vorschlagen" msgstr "Teilnehmer/in vorschlagen"
@ -1288,8 +1208,8 @@ msgid "Election method"
msgstr "Wahlmethode" msgstr "Wahlmethode"
#: assignment/forms.py:75 #: assignment/forms.py:75
msgid "Choose the right method." msgid "Automatic assign of method."
msgstr "Wähle die passende Methode." msgstr "Automatische Zuordnung der Methode."
#: assignment/forms.py:76 #: assignment/forms.py:76
msgid "Always one option per candidate." msgid "Always one option per candidate."
@ -1467,6 +1387,26 @@ msgstr "Keine Wahlen vorhanden."
msgid "Election: %s" msgid "Election: %s"
msgstr "Wahlen: %s" msgstr "Wahlen: %s"
#: assignment/views.py:370 assignment/views.py:403
#: assignment/templates/assignment/overview.html:26
#: assignment/templates/assignment/poll_view.html:18
#: assignment/templates/assignment/view.html:36
#: assignment/templates/assignment/view.html:110
#: assignment/templates/projector/Assignment.html:38
#: assignment/templates/projector/Assignment.html:56
msgid "Candidates"
msgstr "Kandidaten/innen"
#: assignment/views.py:395
#: assignment/templates/assignment/base_assignment.html:71
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/poll_view.html:8
#: assignment/templates/assignment/view.html:104
#: assignment/templates/assignment/view.html:113
#: assignment/templates/projector/Assignment.html:59
msgid "ballot"
msgstr "Wahlgang"
#: assignment/views.py:398 #: assignment/views.py:398
msgid "ballots" msgid "ballots"
msgstr "Wahlgänge" msgstr "Wahlgänge"
@ -1482,6 +1422,14 @@ msgstr ""
"N: %(NO)s\n" "N: %(NO)s\n"
"E: %(ABSTAIN)s" "E: %(ABSTAIN)s"
#: assignment/views.py:501 assignment/views.py:517
#: assignment/templates/assignment/overview.html:25
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/view.html:6
#: assignment/templates/projector/Assignment.html:27
msgid "Election"
msgstr "Wahl"
#: assignment/views.py:523 #: assignment/views.py:523
#, python-format #, python-format
msgid "%d. ballot" msgid "%d. ballot"
@ -1569,6 +1517,11 @@ msgstr "Status ändern"
msgid "Remove candidate" msgid "Remove candidate"
msgstr "Kandidate/in entfernen" msgstr "Kandidate/in entfernen"
#: assignment/templates/assignment/view.html:47
#: assignment/templates/projector/Assignment.html:44
msgid "No candidates available."
msgstr "Keine Kandidaten/innen vorhanden."
#: assignment/templates/assignment/view.html:60 #: assignment/templates/assignment/view.html:60
msgid "Withdraw self candidature" msgid "Withdraw self candidature"
msgstr "Eigene Kandidatur zurückziehen" msgstr "Eigene Kandidatur zurückziehen"
@ -1581,6 +1534,11 @@ msgstr "Selbst kandidieren"
msgid "Add new participant" msgid "Add new participant"
msgstr "Neue/n Teilnehmer/in hinzufügen" msgstr "Neue/n Teilnehmer/in hinzufügen"
#: assignment/templates/assignment/view.html:95
#: assignment/templates/projector/Assignment.html:52
msgid "Election results"
msgstr "Wahlergebnisse"
#: assignment/templates/assignment/view.html:118 #: assignment/templates/assignment/view.html:118
msgid "Publish/unpublish results" msgid "Publish/unpublish results"
msgstr "Ergebnisse veröffentlichen/unveröffentlichen" msgstr "Ergebnisse veröffentlichen/unveröffentlichen"
@ -1590,11 +1548,21 @@ msgstr "Ergebnisse veröffentlichen/unveröffentlichen"
msgid "New ballot" msgid "New ballot"
msgstr "Neuer Wahlgang" msgstr "Neuer Wahlgang"
#: assignment/templates/assignment/view.html:145
#: assignment/templates/projector/Assignment.html:69
msgid "Candidate is elected"
msgstr "Kandidat/in ist gewählt"
#: assignment/templates/assignment/view.html:164 #: assignment/templates/assignment/view.html:164
#: assignment/templates/projector/Assignment.html:84 #: assignment/templates/projector/Assignment.html:84
msgid "was not a <br> candidate" msgid "was not a <br> candidate"
msgstr "war kein Kandidat" msgstr "war kein Kandidat"
#: assignment/templates/assignment/view.html:213
#: assignment/templates/projector/Assignment.html:126
msgid "No ballots available."
msgstr "Keine Wahlgänge vorhanden."
#: config/forms.py:24 #: config/forms.py:24
msgid "Event name" msgid "Event name"
msgstr "Veranstaltungsname" msgstr "Veranstaltungsname"
@ -1756,7 +1724,7 @@ msgstr "Mitarbeiter"
msgid "Guest" msgid "Guest"
msgstr "Gast" msgstr "Gast"
#: participant/models.py:39 participant/views.py:605 #: participant/models.py:39 participant/views.py:609
#: participant/templates/participant/overview.html:29 #: participant/templates/participant/overview.html:29
#: participant/templates/participant/overview.html:67 #: participant/templates/participant/overview.html:67
msgid "Group" msgid "Group"
@ -1778,7 +1746,7 @@ msgstr "Nur zum Filtern der Benutzerliste."
msgid "Typ" msgid "Typ"
msgstr "Typ" msgstr "Typ"
#: participant/models.py:46 participant/views.py:606 #: participant/models.py:46 participant/views.py:610
#: participant/templates/participant/overview.html:44 #: participant/templates/participant/overview.html:44
#: participant/templates/participant/overview.html:69 #: participant/templates/participant/overview.html:69
msgid "Committee" msgid "Committee"
@ -1929,13 +1897,20 @@ msgstr "Das Passwort für <b>%s</b> wurde erfolgreich zurückgesetzt."
msgid "Do you really want to reset the password for <b>%s</b>?" msgid "Do you really want to reset the password for <b>%s</b>?"
msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?" msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?"
#: participant/views.py:571 #: participant/views.py:573
#, python-format #, python-format
msgid "The password for the user %(user)s is %(password)s. Please change it" msgid ""
"Installation was successfully! Use %(user)s (password: %(password)s) for "
"first login.<br><strong>Important:</strong> Please change the password after "
"first login! Otherwise this message still appears for everyone and could be "
"a security risk."
msgstr "" msgstr ""
"Das Passwort für den Benutzer %(user)s ist %(password)s. Bitte ändere es" "Die Installation war erfolgreich! Verwende %(user)s (passwort: %(password)s) "
"für die erste Anmeldung.<br><strong>Wichtig:</strong> Ändere das Passwort "
"nach der ersten Anmeldung! Anderenfalls erscheint diese Meldung weiterhin "
"für jeden und ist ein sicherheitsrisiko."
#: participant/views.py:588 #: participant/views.py:592
#: participant/templates/participant/base_participant.html:12 #: participant/templates/participant/base_participant.html:12
#: participant/templates/participant/overview.html:7 #: participant/templates/participant/overview.html:7
#: participant/templates/participant/overview.html:17 #: participant/templates/participant/overview.html:17
@ -1943,56 +1918,56 @@ msgstr ""
msgid "Participants" msgid "Participants"
msgstr "Teilnehmer/innen" msgstr "Teilnehmer/innen"
#: participant/views.py:601 #: participant/views.py:605
msgid "Participant-list" msgid "Participant-list"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:602 #: participant/views.py:606
msgid "List of Participants" msgid "List of Participants"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:605 participant/templates/participant/overview.html:66 #: participant/views.py:609 participant/templates/participant/overview.html:66
msgid "Last Name" msgid "Last Name"
msgstr "Nachname" msgstr "Nachname"
#: participant/views.py:605 participant/templates/participant/overview.html:65 #: participant/views.py:609 participant/templates/participant/overview.html:65
msgid "First Name" msgid "First Name"
msgstr "Vorname" msgstr "Vorname"
#: participant/views.py:605 participant/templates/participant/overview.html:36 #: participant/views.py:609 participant/templates/participant/overview.html:36
#: participant/templates/participant/overview.html:68 #: participant/templates/participant/overview.html:68
msgid "Type" msgid "Type"
msgstr "Typ" msgstr "Typ"
#: participant/views.py:642 #: participant/views.py:646
msgid "Participant-passwords" msgid "Participant-passwords"
msgstr "Teilnehmer-Passwoerter" msgstr "Teilnehmer-Passwoerter"
#: participant/views.py:661 #: participant/views.py:665
msgid "Account for OpenSlides" msgid "Account for OpenSlides"
msgstr "Zugang für OpenSlides" msgstr "Zugang für OpenSlides"
#: participant/views.py:663 #: participant/views.py:667
#, python-format #, python-format
msgid "for %s" msgid "for %s"
msgstr "für %s" msgstr "für %s"
#: participant/views.py:666 #: participant/views.py:670
#, python-format #, python-format
msgid "User: %s" msgid "User: %s"
msgstr "Nutzername: %s" msgstr "Nutzername: %s"
#: participant/views.py:668 #: participant/views.py:672
#, python-format #, python-format
msgid "Password: %s" msgid "Password: %s"
msgstr "Passwort: %s" msgstr "Passwort: %s"
#: participant/views.py:671 #: participant/views.py:675
#, python-format #, python-format
msgid "URL: %s" msgid "URL: %s"
msgstr "URL: %s" msgstr "URL: %s"
#: participant/views.py:716 #: participant/views.py:720
msgid "Participants settings successfully saved." msgid "Participants settings successfully saved."
msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert." msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert."
@ -2180,11 +2155,6 @@ msgstr "Projektor"
msgid "Overview" msgid "Overview"
msgstr "Übersicht" msgstr "Übersicht"
#: projector/templates/projector/base_projector.html:20
#: templates/front_page.html:25
msgid "Projector view"
msgstr "Projektor-Ansicht"
#: projector/templates/projector/control.html:20 #: projector/templates/projector/control.html:20
msgid "Adjust projector view" msgid "Adjust projector view"
msgstr "Projektor-Ansicht anpassen" msgstr "Projektor-Ansicht anpassen"

View File

@ -34,7 +34,7 @@ from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.views import login as django_login from django.contrib.auth.views import login as django_login
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.translation import ugettext as _, ungettext from django.utils.translation import ugettext as _, ungettext, ugettext_lazy
from openslides.utils import csv_ext from openslides.utils import csv_ext
from openslides.utils.pdf import stylesheet from openslides.utils.pdf import stylesheet
@ -94,7 +94,7 @@ def get_overview(request):
elif sortfilter['sort'][0] in ['group', 'type', 'committee', 'comment']: elif sortfilter['sort'][0] in ['group', 'type', 'committee', 'comment']:
query = query.order_by('profile__%s' % sortfilter['sort'][0]) query = query.order_by('profile__%s' % sortfilter['sort'][0])
else: else:
query = query.order_by('first_name') query = query.order_by('last_name')
if 'reverse' in sortfilter: if 'reverse' in sortfilter:
query = query.reverse() query = query.reverse()
@ -603,7 +603,7 @@ class ParticipantsListPDF(PDFView):
""" """
permission_required = 'participant.can_see_participant' permission_required = 'participant.can_see_participant'
filename = _("Participant-list") filename = _("Participant-list")
document_title = _('List of Participants') document_title = ugettext_lazy('List of Participants')
def append_to_pdf(self, story): def append_to_pdf(self, story):
data= [['#', _('Last Name'), _('First Name'), _('Group'), _('Type'), data= [['#', _('Last Name'), _('First Name'), _('Group'), _('Type'),

View File

@ -267,7 +267,7 @@ class PDFView(PermissionMixin, View):
return self.top_space return self.top_space
def get_document_title(self): def get_document_title(self):
return self.document_title return unicode(self.document_title)
def get_filename(self): def get_filename(self):
return self.filename return self.filename