Merge pull request #23 from emanuelschuetze/master
prepare 1.3-beta1 release
This commit is contained in:
commit
0397849a79
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@ docs/_build/*
|
|||||||
*.egg-info
|
*.egg-info
|
||||||
build/*
|
build/*
|
||||||
dist/*
|
dist/*
|
||||||
|
.DS_Store
|
||||||
|
13
INSTALL.txt
13
INSTALL.txt
@ -1,4 +1,4 @@
|
|||||||
Installation Instructions for OpenSlides 1.2
|
Installation Instructions for OpenSlides 1.3
|
||||||
============================================
|
============================================
|
||||||
|
|
||||||
Content
|
Content
|
||||||
@ -48,7 +48,7 @@ I. Installation on Windows (32/64bit)
|
|||||||
easy_install django django-mptt reportlab pil
|
easy_install django django-mptt reportlab pil
|
||||||
|
|
||||||
If you use a 64bit version of Python, you have to install reportlab
|
If you use a 64bit version of Python, you have to install reportlab
|
||||||
and pil not by using easy_install but manually.
|
and PIL manually - without using easy_install.
|
||||||
|
|
||||||
2. Get OpenSlides:
|
2. Get OpenSlides:
|
||||||
|
|
||||||
@ -56,13 +56,12 @@ I. Installation on Windows (32/64bit)
|
|||||||
|
|
||||||
OR
|
OR
|
||||||
|
|
||||||
b) Clone development version from mercurial repository
|
b) Clone development version from OpenSlides' github repository
|
||||||
http://hg.openslides.org. This requires Mercurial source control
|
https://github.com/OpenSlides/OpenSlides.
|
||||||
management (hg), see http://mercurial.selenic.com.
|
This requires Git, see http://git-scm.com/.
|
||||||
|
|
||||||
Open command line (cmd) and run:
|
Open command line (cmd) and run:
|
||||||
|
|
||||||
hg clone http://hg.openslides.org OpenSlides
|
git clone git://github.com/OpenSlides/OpenSlides.git
|
||||||
|
|
||||||
3. Start OpenSlides server and open URL in your default browser:
|
3. Start OpenSlides server and open URL in your default browser:
|
||||||
|
|
||||||
|
19
README.txt
19
README.txt
@ -2,7 +2,7 @@
|
|||||||
English README file for OpenSlides
|
English README file for OpenSlides
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
This is OpenSlides, version 1.2 (2012-07-25).
|
This is OpenSlides, version 1.3-beta1 (2012-10-30).
|
||||||
|
|
||||||
|
|
||||||
What is OpenSlides?
|
What is OpenSlides?
|
||||||
@ -47,17 +47,27 @@ Command line options
|
|||||||
--------------------
|
--------------------
|
||||||
The following command line options are available:
|
The following command line options are available:
|
||||||
|
|
||||||
|
-h, --help
|
||||||
|
Shows all options
|
||||||
|
|
||||||
-a, --address=ADDRESS
|
-a, --address=ADDRESS
|
||||||
Changes the address on which the server will listen for connections
|
Changes the address on which the server will listen for connections
|
||||||
|
|
||||||
-p, --port
|
-p PORT, --port=PORT
|
||||||
Changes the port on which the server will listen for connections
|
Changes the port on which the server will listen for connections
|
||||||
|
|
||||||
--syncdb
|
--syncdb
|
||||||
Create/ update the database
|
Creates/updates database before starting the server
|
||||||
|
|
||||||
--reset-admin
|
--reset-admin
|
||||||
This will reset the password of the user
|
Resets the password to 'admin' for user 'admin'
|
||||||
|
|
||||||
|
-s SETTINGS, --settings=SETTINGS
|
||||||
|
Sets the path to the settings file.
|
||||||
|
|
||||||
|
--no-reload
|
||||||
|
Does not reload the development server
|
||||||
|
|
||||||
|
|
||||||
Example 1: Openslides should only be accessible on this computer:
|
Example 1: Openslides should only be accessible on this computer:
|
||||||
openslides.exe -a 127.0.0.1
|
openslides.exe -a 127.0.0.1
|
||||||
@ -82,4 +92,3 @@ Browsers:
|
|||||||
IE 7+
|
IE 7+
|
||||||
Chrome
|
Chrome
|
||||||
Safari
|
Safari
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
:license: GNU GPL, see LICENSE for more details.
|
:license: GNU GPL, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
VERSION = (1, 3, 0, 'alpha', 1)
|
VERSION = (1, 3, 0, 'beta', 1)
|
||||||
|
|
||||||
|
|
||||||
def get_version(version=None):
|
def get_version(version=None):
|
||||||
@ -16,7 +16,7 @@ def get_version(version=None):
|
|||||||
if version is None:
|
if version is None:
|
||||||
version = VERSION
|
version = VERSION
|
||||||
assert len(version) == 5
|
assert len(version) == 5
|
||||||
assert version[3] in ('alpha', 'beta', 'rc', 'final')
|
assert version[3] in ('dev', 'alpha', 'beta', 'rc', 'final')
|
||||||
|
|
||||||
# Now build the two parts of the version number:
|
# Now build the two parts of the version number:
|
||||||
# main = X.Y[.Z]
|
# main = X.Y[.Z]
|
||||||
@ -27,8 +27,7 @@ def get_version(version=None):
|
|||||||
main = '.'.join(str(x) for x in version[:main_parts])
|
main = '.'.join(str(x) for x in version[:main_parts])
|
||||||
|
|
||||||
if version[3] != 'final':
|
if version[3] != 'final':
|
||||||
mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}
|
if version[3] == 'dev':
|
||||||
sub = mapping[version[3]] + str(version[4])
|
|
||||||
try:
|
try:
|
||||||
git_head_path = '.git/' + open('.git/HEAD', 'r').read()[5:].rstrip()
|
git_head_path = '.git/' + open('.git/HEAD', 'r').read()[5:].rstrip()
|
||||||
except IOError:
|
except IOError:
|
||||||
@ -36,7 +35,9 @@ def get_version(version=None):
|
|||||||
else:
|
else:
|
||||||
import os
|
import os
|
||||||
git_commit_id = open(os.path.abspath(git_head_path), 'r').read().rstrip()
|
git_commit_id = open(os.path.abspath(git_head_path), 'r').read().rstrip()
|
||||||
sub = '%s commit %s' % (sub, git_commit_id)
|
sub = '-%s%s' % (version[3], git_commit_id)
|
||||||
|
else:
|
||||||
|
sub = '-' + version[3] + str(version[4])
|
||||||
else:
|
else:
|
||||||
sub = ''
|
sub = ''
|
||||||
|
|
||||||
|
@ -81,13 +81,13 @@ def default_config(sender, key, **kwargs):
|
|||||||
return {
|
return {
|
||||||
'event_name': 'OpenSlides',
|
'event_name': 'OpenSlides',
|
||||||
'event_description':
|
'event_description':
|
||||||
_('Presentation system for agenda, motions and elections'),
|
_('Presentation and assembly system'),
|
||||||
'event_date': '',
|
'event_date': '',
|
||||||
'event_location': '',
|
'event_location': '',
|
||||||
'event_organizer': '',
|
'event_organizer': '',
|
||||||
'presentation': '',
|
'presentation': '',
|
||||||
'frontpage_title': _('Welcome'),
|
'frontpage_title': _('Welcome to OpenSlides'),
|
||||||
'frontpage_welcometext': _('Welcome to OpenSlides!'),
|
'frontpage_welcometext': _('[Place for your welcome text.]'),
|
||||||
'show_help_text': True,
|
'show_help_text': True,
|
||||||
'help_text': _("Get professional support for OpenSlides on %s.") %
|
'help_text': _("Get professional support for OpenSlides on %s.") %
|
||||||
"<a href='http://openslides.org/' target='_blank'> \
|
"<a href='http://openslides.org/' target='_blank'> \
|
||||||
|
Binary file not shown.
@ -7,10 +7,10 @@ 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-10-24 12:51+0200\n"
|
"POT-Creation-Date: 2012-10-30 22:38+0100\n"
|
||||||
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
||||||
"Last-Translator: Oskar Hahn <mail@oshahn.de>\n"
|
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
|
||||||
"Language-Team: Deutsch <mail@oshahn.de>\n"
|
"Language-Team: support@openslides.de\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -30,12 +30,12 @@ msgid "Parent item"
|
|||||||
msgstr "Elternelement"
|
msgstr "Elternelement"
|
||||||
|
|
||||||
#: agenda/models.py:42 config/forms.py:61 motion/forms.py:22
|
#: agenda/models.py:42 config/forms.py:61 motion/forms.py:22
|
||||||
#: motion/models.py:544 motion/templates/motion/view.html:246
|
#: motion/models.py:540 motion/templates/motion/view.html:246
|
||||||
#: projector/models.py:32
|
#: projector/models.py:32
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titel"
|
msgstr "Titel"
|
||||||
|
|
||||||
#: agenda/models.py:43 motion/forms.py:23 motion/models.py:545
|
#: agenda/models.py:43 motion/forms.py:23 motion/models.py:541
|
||||||
#: motion/templates/motion/view.html:247 projector/models.py:33
|
#: motion/templates/motion/view.html:247 projector/models.py:33
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
@ -225,8 +225,8 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
|
|||||||
#: assignment/views.py:576 assignment/templates/assignment/view.html:166
|
#: assignment/views.py:576 assignment/templates/assignment/view.html:166
|
||||||
#: assignment/templates/assignment/view.html:170
|
#: assignment/templates/assignment/view.html:170
|
||||||
#: assignment/templates/projector/Assignment.html:78
|
#: assignment/templates/projector/Assignment.html:78
|
||||||
#: assignment/templates/projector/Assignment.html:82 motion/models.py:578
|
#: assignment/templates/projector/Assignment.html:82 motion/models.py:574
|
||||||
#: motion/views.py:778 motion/views.py:829
|
#: motion/views.py:804 motion/views.py:855
|
||||||
#: motion/templates/motion/view.html:79
|
#: motion/templates/motion/view.html:79
|
||||||
#: motion/templates/projector/Motion.html:37 utils/utils.py:53
|
#: motion/templates/projector/Motion.html:37 utils/utils.py:53
|
||||||
#: utils/views.py:111
|
#: utils/views.py:111
|
||||||
@ -235,8 +235,8 @@ msgstr "Ja"
|
|||||||
|
|
||||||
#: agenda/templates/agenda/overview.html:47 assignment/models.py:300
|
#: agenda/templates/agenda/overview.html:47 assignment/models.py:300
|
||||||
#: assignment/views.py:577 assignment/templates/assignment/view.html:167
|
#: assignment/views.py:577 assignment/templates/assignment/view.html:167
|
||||||
#: assignment/templates/projector/Assignment.html:79 motion/models.py:578
|
#: assignment/templates/projector/Assignment.html:79 motion/models.py:574
|
||||||
#: motion/views.py:778 motion/views.py:830
|
#: motion/views.py:804 motion/views.py:856
|
||||||
#: motion/templates/motion/view.html:80
|
#: motion/templates/motion/view.html:80
|
||||||
#: motion/templates/projector/Motion.html:38 utils/utils.py:53
|
#: motion/templates/projector/Motion.html:38 utils/utils.py:53
|
||||||
#: utils/views.py:111
|
#: utils/views.py:111
|
||||||
@ -385,7 +385,7 @@ msgstr "Abgeschlossen"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: assignment/models.py:55
|
#: assignment/models.py:55 participant/models.py:114
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschreibung"
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
@ -393,7 +393,7 @@ msgstr "Beschreibung"
|
|||||||
msgid "Comment on the ballot paper"
|
msgid "Comment on the ballot paper"
|
||||||
msgstr "Kommentar für den Stimmzettel"
|
msgstr "Kommentar für den Stimmzettel"
|
||||||
|
|
||||||
#: assignment/models.py:69 motion/models.py:339
|
#: assignment/models.py:69 motion/models.py:335
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s is not a valid status."
|
msgid "%s is not a valid status."
|
||||||
msgstr "%s ist kein gültiger Status."
|
msgstr "%s ist kein gültiger Status."
|
||||||
@ -438,7 +438,7 @@ msgstr "Darf selbst für Wahlen kandidieren"
|
|||||||
msgid "Can manage assignment"
|
msgid "Can manage assignment"
|
||||||
msgstr "Darf Wahlen verwalten"
|
msgstr "Darf Wahlen verwalten"
|
||||||
|
|
||||||
#: assignment/models.py:301 motion/models.py:579
|
#: assignment/models.py:301 motion/models.py:575
|
||||||
msgid "Abstain"
|
msgid "Abstain"
|
||||||
msgstr "Enthaltung"
|
msgstr "Enthaltung"
|
||||||
|
|
||||||
@ -471,9 +471,9 @@ msgstr "Neue Wahl wurde erfolgreich angelegt."
|
|||||||
msgid "Election was successfully modified."
|
msgid "Election was successfully modified."
|
||||||
msgstr "Wahl wurde erfolgreich geändert."
|
msgstr "Wahl wurde erfolgreich geändert."
|
||||||
|
|
||||||
#: assignment/views.py:138 motion/views.py:256 motion/views.py:637
|
#: assignment/views.py:138 motion/views.py:257 motion/views.py:663
|
||||||
#: participant/views.py:463 participant/views.py:486 utils/views.py:210
|
#: participant/views.py:457 participant/views.py:480 utils/views.py:225
|
||||||
#: utils/views.py:228 utils/views.py:252
|
#: utils/views.py:243 utils/views.py:267
|
||||||
msgid "Please check the form for errors."
|
msgid "Please check the form for errors."
|
||||||
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
|
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
|
||||||
|
|
||||||
@ -572,7 +572,7 @@ msgstr "Wahlen: %s"
|
|||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr "Kandidaten/innen"
|
msgstr "Kandidaten/innen"
|
||||||
|
|
||||||
#: assignment/views.py:410 motion/views.py:771
|
#: assignment/views.py:410 motion/views.py:797
|
||||||
#: motion/templates/motion/view.html:44
|
#: motion/templates/motion/view.html:44
|
||||||
msgid "Vote results"
|
msgid "Vote results"
|
||||||
msgstr "Abstimmungsergebnis"
|
msgstr "Abstimmungsergebnis"
|
||||||
@ -613,7 +613,7 @@ msgstr "Ungültige Stimmen"
|
|||||||
#: assignment/templates/assignment/view.html:202
|
#: assignment/templates/assignment/view.html:202
|
||||||
#: assignment/templates/assignment/view.html:207
|
#: assignment/templates/assignment/view.html:207
|
||||||
#: assignment/templates/projector/Assignment.html:111
|
#: assignment/templates/projector/Assignment.html:111
|
||||||
#: assignment/templates/projector/Assignment.html:117 motion/views.py:778
|
#: assignment/templates/projector/Assignment.html:117 motion/views.py:804
|
||||||
#: motion/templates/motion/poll_view.html:35
|
#: motion/templates/motion/poll_view.html:35
|
||||||
#: motion/templates/motion/view.html:84
|
#: motion/templates/motion/view.html:84
|
||||||
#: motion/templates/projector/Motion.html:42 poll/models.py:76
|
#: motion/templates/projector/Motion.html:42 poll/models.py:76
|
||||||
@ -646,8 +646,8 @@ msgid "%d available posts"
|
|||||||
msgstr "%d verfügbare Posten"
|
msgstr "%d verfügbare Posten"
|
||||||
|
|
||||||
#: assignment/views.py:577 assignment/templates/assignment/view.html:168
|
#: assignment/views.py:577 assignment/templates/assignment/view.html:168
|
||||||
#: assignment/templates/projector/Assignment.html:80 motion/views.py:778
|
#: assignment/templates/projector/Assignment.html:80 motion/views.py:804
|
||||||
#: motion/views.py:831 motion/templates/motion/view.html:81
|
#: motion/views.py:857 motion/templates/motion/view.html:81
|
||||||
#: motion/templates/projector/Motion.html:39
|
#: motion/templates/projector/Motion.html:39
|
||||||
msgid "Abstention"
|
msgid "Abstention"
|
||||||
msgstr "Enthaltung"
|
msgstr "Enthaltung"
|
||||||
@ -712,7 +712,7 @@ msgstr "Wahl-Einstellungen"
|
|||||||
#: 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
|
||||||
#: assignment/templates/projector/Assignment.html:18 motion/views.py:749
|
#: assignment/templates/projector/Assignment.html:18 motion/views.py:775
|
||||||
#: motion/templates/motion/overview.html:20
|
#: motion/templates/motion/overview.html:20
|
||||||
#: motion/templates/motion/overview.html:40
|
#: motion/templates/motion/overview.html:40
|
||||||
#: motion/templates/motion/view.html:34
|
#: motion/templates/motion/view.html:34
|
||||||
@ -815,7 +815,7 @@ msgid "was not a <br> candidate"
|
|||||||
msgstr "war kein Kandidat"
|
msgstr "war kein Kandidat"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:190
|
#: assignment/templates/assignment/view.html:190
|
||||||
#: assignment/templates/projector/Assignment.html:101 motion/views.py:778
|
#: assignment/templates/projector/Assignment.html:101 motion/views.py:804
|
||||||
#: motion/templates/motion/view.html:82
|
#: motion/templates/motion/view.html:82
|
||||||
#: motion/templates/projector/Motion.html:40
|
#: motion/templates/projector/Motion.html:40
|
||||||
msgid "Invalid"
|
msgid "Invalid"
|
||||||
@ -859,16 +859,16 @@ msgid "Can manage configuration"
|
|||||||
msgstr "Darf die Konfiguration verwalten"
|
msgstr "Darf die Konfiguration verwalten"
|
||||||
|
|
||||||
#: config/models.py:84
|
#: config/models.py:84
|
||||||
msgid "Presentation system for agenda, motions and elections"
|
msgid "Presentation and assembly system"
|
||||||
msgstr "Präsentationssystem für Tagesordnung, Anträge und Wahlen"
|
msgstr "Präsentations- und Versammlungssystem"
|
||||||
|
|
||||||
#: config/models.py:89 templates/base.html:30
|
#: config/models.py:89
|
||||||
msgid "Welcome"
|
msgid "Welcome to OpenSlides"
|
||||||
msgstr "Willkommen"
|
msgstr "Willkommen bei OpenSlides"
|
||||||
|
|
||||||
#: config/models.py:90 participant/models.py:192
|
#: config/models.py:90
|
||||||
msgid "Welcome to OpenSlides!"
|
msgid "[Place for your welcome text.]"
|
||||||
msgstr "Willkommen bei OpenSlides!"
|
msgstr "[Platz für Ihren Begrüßungstext.]"
|
||||||
|
|
||||||
#: config/models.py:92
|
#: config/models.py:92
|
||||||
#, python-format
|
#, python-format
|
||||||
@ -881,7 +881,7 @@ msgstr "Allgemein"
|
|||||||
|
|
||||||
#: config/models.py:131 config/templates/config/version.html:5
|
#: config/models.py:131 config/templates/config/version.html:5
|
||||||
#: config/templates/config/version.html:8
|
#: config/templates/config/version.html:8
|
||||||
#: config/templates/config/version.html:11 motion/views.py:763
|
#: config/templates/config/version.html:11 motion/views.py:789
|
||||||
#: motion/templates/motion/view.html:214 motion/templates/motion/view.html:244
|
#: motion/templates/motion/view.html:214 motion/templates/motion/view.html:244
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
@ -919,7 +919,7 @@ msgstr "Startseite"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
#: motion/forms.py:25 motion/models.py:546 motion/views.py:797
|
#: motion/forms.py:25 motion/models.py:542 motion/views.py:823
|
||||||
#: motion/templates/motion/view.html:229 motion/templates/motion/view.html:249
|
#: motion/templates/motion/view.html:229 motion/templates/motion/view.html:249
|
||||||
#: motion/templates/projector/Motion.html:77
|
#: motion/templates/projector/Motion.html:77
|
||||||
msgid "Reason"
|
msgid "Reason"
|
||||||
@ -933,7 +933,7 @@ msgstr "Triviale Änderung"
|
|||||||
msgid "Trivial changes don't create a new version."
|
msgid "Trivial changes don't create a new version."
|
||||||
msgstr "Triviale Änderungen erzeugen keine neue Version."
|
msgstr "Triviale Änderungen erzeugen keine neue Version."
|
||||||
|
|
||||||
#: motion/forms.py:44 motion/views.py:736 motion/templates/motion/view.html:22
|
#: motion/forms.py:44 motion/views.py:762 motion/templates/motion/view.html:22
|
||||||
msgid "Supporters"
|
msgid "Supporters"
|
||||||
msgstr "Unterstützer/innen"
|
msgstr "Unterstützer/innen"
|
||||||
|
|
||||||
@ -1022,7 +1022,7 @@ msgstr "Verworfen (nicht zulässig)"
|
|||||||
msgid "Needs Review"
|
msgid "Needs Review"
|
||||||
msgstr "Benötigt Review"
|
msgstr "Benötigt Review"
|
||||||
|
|
||||||
#: motion/models.py:66 motion/views.py:716
|
#: motion/models.py:66 motion/views.py:742
|
||||||
#: motion/templates/motion/overview.html:41
|
#: motion/templates/motion/overview.html:41
|
||||||
#: motion/templates/motion/view.html:18
|
#: motion/templates/motion/view.html:18
|
||||||
#: motion/templates/projector/Motion.html:55
|
#: motion/templates/projector/Motion.html:55
|
||||||
@ -1034,11 +1034,6 @@ msgstr "Antragsteller/in"
|
|||||||
msgid "Version %d authorized"
|
msgid "Version %d authorized"
|
||||||
msgstr "Version %d zugelassen"
|
msgstr "Version %d zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:110
|
|
||||||
msgctxt "Rejected means not authorized"
|
|
||||||
msgid "Version %d rejected"
|
|
||||||
msgstr "Version %d zurückgewiesen"
|
|
||||||
|
|
||||||
#: motion/models.py:139
|
#: motion/models.py:139
|
||||||
msgid "Searching for supporters."
|
msgid "Searching for supporters."
|
||||||
msgstr "Auf Unterstützersuche."
|
msgstr "Auf Unterstützersuche."
|
||||||
@ -1073,37 +1068,37 @@ msgstr "Unterstützer/innen gelöscht"
|
|||||||
msgid "Status reseted to: %s"
|
msgid "Status reseted to: %s"
|
||||||
msgstr "Status zurückgesetzt auf: %s"
|
msgstr "Status zurückgesetzt auf: %s"
|
||||||
|
|
||||||
#: motion/models.py:268
|
#: motion/models.py:265
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: +%s"
|
msgid "Supporter: +%s"
|
||||||
msgstr "Unterstützer/in: +%s"
|
msgstr "Unterstützer/in: +%s"
|
||||||
|
|
||||||
#: motion/models.py:282
|
#: motion/models.py:278
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: -%s"
|
msgid "Supporter: -%s"
|
||||||
msgstr "Unterstützer/in: -%s"
|
msgstr "Unterstützer/in: -%s"
|
||||||
|
|
||||||
#: motion/models.py:299
|
#: motion/models.py:295
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Number set: %s"
|
msgid "Number set: %s"
|
||||||
msgstr "Nummer gesetzt: %s"
|
msgstr "Nummer gesetzt: %s"
|
||||||
|
|
||||||
#: motion/models.py:312
|
#: motion/models.py:308
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s authorized"
|
msgid "Version %s authorized"
|
||||||
msgstr "Version %s zugelassen"
|
msgstr "Version %s zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:326
|
#: motion/models.py:322
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s not authorized"
|
msgid "Version %s not authorized"
|
||||||
msgstr "Version %s nicht zugelassen"
|
msgstr "Version %s nicht zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:342
|
#: motion/models.py:338
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The motion status is already '%s.'"
|
msgid "The motion status is already '%s.'"
|
||||||
msgstr "Der Antragsstatus ist bereits '%s'."
|
msgstr "Der Antragsstatus ist bereits '%s'."
|
||||||
|
|
||||||
#: motion/models.py:350
|
#: motion/models.py:346
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The motion status is: '%(currentstatus)s'. You can not set the status to "
|
"The motion status is: '%(currentstatus)s'. You can not set the status to "
|
||||||
@ -1112,75 +1107,75 @@ msgstr ""
|
|||||||
"Der Antragsstatus ist: '%(currentstatus)s'. Sie können den Status nicht auf "
|
"Der Antragsstatus ist: '%(currentstatus)s'. Sie können den Status nicht auf "
|
||||||
"'%(newstatus)s' setzen."
|
"'%(newstatus)s' setzen."
|
||||||
|
|
||||||
#: motion/models.py:358
|
#: motion/models.py:354
|
||||||
msgid "Status modified"
|
msgid "Status modified"
|
||||||
msgstr "Status geändert"
|
msgstr "Status geändert"
|
||||||
|
|
||||||
#: motion/models.py:450
|
#: motion/models.py:446
|
||||||
msgid "by"
|
msgid "by"
|
||||||
msgstr "von"
|
msgstr "von"
|
||||||
|
|
||||||
#: motion/models.py:458 motion/templates/motion/view.html:210
|
#: motion/models.py:454 motion/templates/motion/view.html:210
|
||||||
#: motion/templates/motion/widget.html:27
|
#: motion/templates/motion/widget.html:27
|
||||||
#: motion/templates/projector/Motion.html:65
|
#: motion/templates/projector/Motion.html:65
|
||||||
msgid "no number"
|
msgid "no number"
|
||||||
msgstr "ohne Nummer"
|
msgstr "ohne Nummer"
|
||||||
|
|
||||||
#: motion/models.py:459 motion/templates/motion/overview.html:32
|
#: motion/models.py:455 motion/templates/motion/overview.html:32
|
||||||
#: motion/templates/motion/widget.html:23
|
#: motion/templates/motion/widget.html:23
|
||||||
msgid "motion"
|
msgid "motion"
|
||||||
msgstr "Antrag"
|
msgstr "Antrag"
|
||||||
|
|
||||||
#: motion/models.py:484
|
#: motion/models.py:480
|
||||||
msgid "Poll created"
|
msgid "Poll created"
|
||||||
msgstr "Abstimmung erstellt"
|
msgstr "Abstimmung erstellt"
|
||||||
|
|
||||||
#: motion/models.py:535
|
#: motion/models.py:531
|
||||||
msgid "Can see motions"
|
msgid "Can see motions"
|
||||||
msgstr "Darf Anträge sehen"
|
msgstr "Darf Anträge sehen"
|
||||||
|
|
||||||
#: motion/models.py:536
|
#: motion/models.py:532
|
||||||
msgid "Can create motions"
|
msgid "Can create motions"
|
||||||
msgstr "Darf Anträge erstellen"
|
msgstr "Darf Anträge erstellen"
|
||||||
|
|
||||||
#: motion/models.py:537
|
#: motion/models.py:533
|
||||||
msgid "Can support motions"
|
msgid "Can support motions"
|
||||||
msgstr "Darf Anträge unterstützen"
|
msgstr "Darf Anträge unterstützen"
|
||||||
|
|
||||||
#: motion/models.py:538
|
#: motion/models.py:534
|
||||||
msgid "Can manage motions"
|
msgid "Can manage motions"
|
||||||
msgstr "Darf Anträge verwalten"
|
msgstr "Darf Anträge verwalten"
|
||||||
|
|
||||||
#: motion/models.py:605
|
#: motion/models.py:601
|
||||||
msgid "The assembly may decide,"
|
msgid "The assembly may decide,"
|
||||||
msgstr "Die Versammlung möge beschließen,"
|
msgstr "Die Versammlung möge beschließen,"
|
||||||
|
|
||||||
#: motion/models.py:608 motion/views.py:666 motion/views.py:891
|
#: motion/models.py:604 motion/views.py:692 motion/views.py:917
|
||||||
#: motion/templates/motion/base_motion.html:9
|
#: motion/templates/motion/base_motion.html:9
|
||||||
#: motion/templates/motion/overview.html:7
|
#: motion/templates/motion/overview.html:7
|
||||||
#: motion/templates/motion/overview.html:10
|
#: motion/templates/motion/overview.html:10
|
||||||
msgid "Motions"
|
msgid "Motions"
|
||||||
msgstr "Anträge"
|
msgstr "Anträge"
|
||||||
|
|
||||||
#: motion/views.py:179
|
#: motion/views.py:180
|
||||||
msgid "You have not the necessary rights to create or edit motions."
|
msgid "You have not the necessary rights to create or edit motions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu "
|
"Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu "
|
||||||
"bearbeiten."
|
"bearbeiten."
|
||||||
|
|
||||||
#: motion/views.py:184
|
#: motion/views.py:185
|
||||||
msgid "You can not edit this motion."
|
msgid "You can not edit this motion."
|
||||||
msgstr "Sie dürfen diesen Antrag nicht bearbeiten."
|
msgstr "Sie dürfen diesen Antrag nicht bearbeiten."
|
||||||
|
|
||||||
#: motion/views.py:247
|
#: motion/views.py:248
|
||||||
msgid "New motion was successfully created."
|
msgid "New motion was successfully created."
|
||||||
msgstr "Neuer Antrag wurde erfolgreich angelegt."
|
msgstr "Neuer Antrag wurde erfolgreich angelegt."
|
||||||
|
|
||||||
#: motion/views.py:249
|
#: motion/views.py:250
|
||||||
msgid "Motion was successfully modified."
|
msgid "Motion was successfully modified."
|
||||||
msgstr "Antrag wurde erfolgreich geändert."
|
msgstr "Antrag wurde erfolgreich geändert."
|
||||||
|
|
||||||
#: motion/views.py:263
|
#: motion/views.py:264
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Do you really want to edit this motion? The supporters will "
|
"Attention: Do you really want to edit this motion? The supporters will "
|
||||||
"<b>not</b> be removed automatically because you can manage motions. Please "
|
"<b>not</b> be removed automatically because you can manage motions. Please "
|
||||||
@ -1190,7 +1185,7 @@ msgstr ""
|
|||||||
"werden <b>nicht</b> automatisch entfernt, da Sie Anträge verwalten dürfen. "
|
"werden <b>nicht</b> automatisch entfernt, da Sie Anträge verwalten dürfen. "
|
||||||
"Prüfen Sie, ob die Unterstützungen noch gültig sind."
|
"Prüfen Sie, ob die Unterstützungen noch gültig sind."
|
||||||
|
|
||||||
#: motion/views.py:265
|
#: motion/views.py:266
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Do you really want to edit this motion? All <b>%s</b> supporters "
|
"Attention: Do you really want to edit this motion? All <b>%s</b> supporters "
|
||||||
@ -1199,132 +1194,148 @@ msgstr ""
|
|||||||
"Wollen Sie den Antrag wirklich ändern? Alle <b>%s</b> Unterstützer/innen "
|
"Wollen Sie den Antrag wirklich ändern? Alle <b>%s</b> Unterstützer/innen "
|
||||||
"werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen."
|
"werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen."
|
||||||
|
|
||||||
#: motion/views.py:297
|
#: motion/views.py:298
|
||||||
msgid "Motion number was successfully set."
|
msgid "Motion number was successfully set."
|
||||||
msgstr "Antragsnummer wurde erfolgreich gesetzt."
|
msgstr "Antragsnummer wurde erfolgreich gesetzt."
|
||||||
|
|
||||||
#: motion/views.py:313
|
#: motion/views.py:314
|
||||||
msgid "Motion was successfully authorized."
|
msgid "Motion was successfully authorized."
|
||||||
msgstr "Antrag wurde erfolgreich zugelassen."
|
msgstr "Antrag wurde erfolgreich zugelassen."
|
||||||
|
|
||||||
#: motion/views.py:328
|
#: motion/views.py:329
|
||||||
msgid "Motion was successfully rejected."
|
msgid "Motion was successfully rejected."
|
||||||
msgstr "Antrag wurde erfolgreich verworfen."
|
msgstr "Antrag wurde erfolgreich verworfen."
|
||||||
|
|
||||||
#: motion/views.py:344
|
#: motion/views.py:345
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Motion status was set to: <b>%s</b>."
|
msgid "Motion status was set to: <b>%s</b>."
|
||||||
msgstr "Antragsstatus wurde gesetzt auf: <b>%s</b>."
|
msgstr "Antragsstatus wurde gesetzt auf: <b>%s</b>."
|
||||||
|
|
||||||
#: motion/views.py:360
|
#: motion/views.py:361
|
||||||
msgid "Motion status was reset."
|
msgid "Motion status was reset."
|
||||||
msgstr "Antragsstatus wurde zurückgesetzt."
|
msgstr "Antragsstatus wurde zurückgesetzt."
|
||||||
|
|
||||||
#: motion/views.py:374
|
|
||||||
msgid "You have support the motion successfully."
|
|
||||||
msgstr "Sie haben den Antrag erfolgreich unterstützt."
|
|
||||||
|
|
||||||
#: motion/views.py:388
|
#: motion/views.py:388
|
||||||
msgid "You have unsupport the motion successfully."
|
msgid "You can not support this motion."
|
||||||
msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen."
|
msgstr "Sie dürfen diesen Antrag nicht unterstützen."
|
||||||
|
|
||||||
|
#: motion/views.py:391
|
||||||
|
msgid "You can not unsupport this motion."
|
||||||
|
msgstr "Sie dürfen Ihre Unterstützung für diesen Antrag nicht entziehen."
|
||||||
|
|
||||||
#: motion/views.py:402
|
#: motion/views.py:402
|
||||||
|
msgid "Do you really want to support this motion?"
|
||||||
|
msgstr "Wollen Sie wirklich diesen Antrag unterstützen?"
|
||||||
|
|
||||||
|
#: motion/views.py:404
|
||||||
|
msgid "Do you really want to unsupport this motion?"
|
||||||
|
msgstr "Wollen Sie wirklich Ihre Unterstützung für diesen Antrag entziehen?"
|
||||||
|
|
||||||
|
#: motion/views.py:415
|
||||||
|
msgid "You have supported this motion successfully."
|
||||||
|
msgstr "Sie haben den Antrag erfolgreich unterstützt."
|
||||||
|
|
||||||
|
#: motion/views.py:417
|
||||||
|
msgid "You have unsupported this motion successfully."
|
||||||
|
msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen."
|
||||||
|
|
||||||
|
#: motion/views.py:431
|
||||||
msgid "New vote was successfully created."
|
msgid "New vote was successfully created."
|
||||||
msgstr "Neue Abstimmung erfolgreich angelegt."
|
msgstr "Neue Abstimmung erfolgreich angelegt."
|
||||||
|
|
||||||
#: motion/views.py:418
|
#: motion/views.py:447
|
||||||
msgid "Poll deleted"
|
msgid "Poll deleted"
|
||||||
msgstr "Abstimmung gelöscht"
|
msgstr "Abstimmung gelöscht"
|
||||||
|
|
||||||
#: motion/views.py:419
|
#: motion/views.py:448
|
||||||
msgid "Poll was successfully deleted."
|
msgid "Poll was successfully deleted."
|
||||||
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: motion/views.py:421
|
#: motion/views.py:450
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "the %s. poll"
|
msgid "the %s. poll"
|
||||||
msgstr "die %s. Abstimmung"
|
msgstr "die %s. Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:462 motion/views.py:471
|
#: motion/views.py:491 motion/views.py:500
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You can not delete motion <b>%s</b>."
|
msgid "You can not delete motion <b>%s</b>."
|
||||||
msgstr "Sie können Antrag <b>%s</b> nicht löschen."
|
msgstr "Sie können Antrag <b>%s</b> nicht löschen."
|
||||||
|
|
||||||
#: motion/views.py:467 motion/views.py:475
|
#: motion/views.py:496 motion/views.py:504
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Motion <b>%s</b> was successfully deleted."
|
msgid "Motion <b>%s</b> was successfully deleted."
|
||||||
msgstr "Antrag <b>%s</b> wurde erfolgreich gelöscht."
|
msgstr "Antrag <b>%s</b> wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: motion/views.py:477
|
#: motion/views.py:506
|
||||||
msgid "Invalid request"
|
msgid "Invalid request"
|
||||||
msgstr "Ungültige Anfrage"
|
msgstr "Ungültige Anfrage"
|
||||||
|
|
||||||
#: motion/views.py:501
|
#: motion/views.py:530
|
||||||
msgid "Poll was updated"
|
msgid "Poll was updated"
|
||||||
msgstr "Abstimmung wurde aktualisiert"
|
msgstr "Abstimmung wurde aktualisiert"
|
||||||
|
|
||||||
#: motion/views.py:518
|
#: motion/views.py:547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version <b>%s</b> accepted."
|
msgid "Version <b>%s</b> accepted."
|
||||||
msgstr "Version <b>%s</b> akzeptiert."
|
msgstr "Version <b>%s</b> akzeptiert."
|
||||||
|
|
||||||
#: motion/views.py:520
|
#: motion/views.py:549
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to authorize version <b>%s</b>?"
|
msgid "Do you really want to authorize version <b>%s</b>?"
|
||||||
msgstr "Soll Version <b>%s</b> wirklich zugelassen werden?"
|
msgstr "Soll Version <b>%s</b> wirklich zugelassen werden?"
|
||||||
|
|
||||||
#: motion/views.py:530
|
#: motion/views.py:559
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version <b>%s</b> rejected."
|
msgid "Version <b>%s</b> rejected."
|
||||||
msgstr "Version <b>%s</b> zurückgewiesen."
|
msgstr "Version <b>%s</b> zurückgewiesen."
|
||||||
|
|
||||||
#: motion/views.py:532
|
#: motion/views.py:561
|
||||||
msgid "ERROR by rejecting the version."
|
msgid "ERROR by rejecting the version."
|
||||||
msgstr "FEHLER beim Zurückweisen der Version."
|
msgstr "FEHLER beim Zurückweisen der Version."
|
||||||
|
|
||||||
#: motion/views.py:534
|
#: motion/views.py:563
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to reject version <b>%s</b>?"
|
msgid "Do you really want to reject version <b>%s</b>?"
|
||||||
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
|
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
|
||||||
|
|
||||||
#: motion/views.py:564 motion/views.py:568 motion/views.py:574
|
#: motion/views.py:593 motion/views.py:597 motion/views.py:603
|
||||||
#: motion/views.py:577 participant/api.py:76
|
#: motion/views.py:606 participant/api.py:76
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ignoring malformed line %d in import file."
|
msgid "Ignoring malformed line %d in import file."
|
||||||
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
|
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
|
||||||
|
|
||||||
#: motion/views.py:623
|
#: motion/views.py:649
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d motion was successfully imported."
|
msgid "%d motion was successfully imported."
|
||||||
msgid_plural "%d motions were successfully imported."
|
msgid_plural "%d motions were successfully imported."
|
||||||
msgstr[0] "%d Antrag wurde erfolgreich importiert."
|
msgstr[0] "%d Antrag wurde erfolgreich importiert."
|
||||||
msgstr[1] "%d Anträge wurden erfolgreich importiert."
|
msgstr[1] "%d Anträge wurden erfolgreich importiert."
|
||||||
|
|
||||||
#: motion/views.py:626
|
#: motion/views.py:652
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d motion was successfully modified."
|
msgid "%d motion was successfully modified."
|
||||||
msgid_plural "%d motions were successfully modified."
|
msgid_plural "%d motions were successfully modified."
|
||||||
msgstr[0] "%d Antrag wurde erfolgreich geändert."
|
msgstr[0] "%d Antrag wurde erfolgreich geändert."
|
||||||
msgstr[1] "%d Anträge wurden erfolgreich geändert."
|
msgstr[1] "%d Anträge wurden erfolgreich geändert."
|
||||||
|
|
||||||
#: motion/views.py:629
|
#: motion/views.py:655
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d new user was added."
|
msgid "%d new user was added."
|
||||||
msgid_plural "%d new users were added."
|
msgid_plural "%d new users were added."
|
||||||
msgstr[0] "%d neuer Nutzer wurde erstellt."
|
msgstr[0] "%d neuer Nutzer wurde erstellt."
|
||||||
msgstr[1] "%d neue Nutzer wurden erstellt."
|
msgstr[1] "%d neue Nutzer wurden erstellt."
|
||||||
|
|
||||||
#: motion/views.py:633 participant/api.py:92
|
#: motion/views.py:659 participant/api.py:92
|
||||||
msgid "Import aborted because of severe errors in the input file."
|
msgid "Import aborted because of severe errors in the input file."
|
||||||
msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen."
|
msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen."
|
||||||
|
|
||||||
#: motion/views.py:635 participant/api.py:94
|
#: motion/views.py:661 participant/api.py:94
|
||||||
msgid "Import file has wrong character encoding, only UTF-8 is supported!"
|
msgid "Import file has wrong character encoding, only UTF-8 is supported!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 "
|
"Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 "
|
||||||
"wird unterstützt!"
|
"wird unterstützt!"
|
||||||
|
|
||||||
#: motion/views.py:639
|
#: motion/views.py:665
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Existing motions will be modified if you import new motions with "
|
"Attention: Existing motions will be modified if you import new motions with "
|
||||||
"the same number."
|
"the same number."
|
||||||
@ -1332,7 +1343,7 @@ msgstr ""
|
|||||||
"Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit "
|
"Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit "
|
||||||
"identischer Nummer importieren."
|
"identischer Nummer importieren."
|
||||||
|
|
||||||
#: motion/views.py:640
|
#: motion/views.py:666
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Importing an motions without a number multiple times will create "
|
"Attention: Importing an motions without a number multiple times will create "
|
||||||
"duplicates."
|
"duplicates."
|
||||||
@ -1340,7 +1351,7 @@ msgstr ""
|
|||||||
"Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate "
|
"Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate "
|
||||||
"entstehen."
|
"entstehen."
|
||||||
|
|
||||||
#: motion/views.py:673 motion/views.py:811
|
#: motion/views.py:699 motion/views.py:837
|
||||||
#: motion/templates/motion/poll_view.html:7
|
#: motion/templates/motion/poll_view.html:7
|
||||||
#: motion/templates/motion/poll_view.html:12
|
#: motion/templates/motion/poll_view.html:12
|
||||||
#: motion/templates/motion/view.html:7 motion/templates/motion/view.html:206
|
#: motion/templates/motion/view.html:7 motion/templates/motion/view.html:206
|
||||||
@ -1350,21 +1361,21 @@ msgstr ""
|
|||||||
msgid "Motion"
|
msgid "Motion"
|
||||||
msgstr "Antrag"
|
msgstr "Antrag"
|
||||||
|
|
||||||
#: motion/views.py:687 motion/templates/motion/overview.html:84
|
#: motion/views.py:713 motion/templates/motion/overview.html:84
|
||||||
msgid "No motions available."
|
msgid "No motions available."
|
||||||
msgstr "Keine Anträge vorhanden."
|
msgstr "Keine Anträge vorhanden."
|
||||||
|
|
||||||
#: motion/views.py:692 motion/views.py:694 motion/views.py:709
|
#: motion/views.py:718 motion/views.py:720 motion/views.py:735
|
||||||
#: motion/views.py:711 motion/templates/motion/base_motion.html:24
|
#: motion/views.py:737 motion/templates/motion/base_motion.html:24
|
||||||
#: motion/templates/projector/Motion.html:63
|
#: motion/templates/projector/Motion.html:63
|
||||||
msgid "Motion No."
|
msgid "Motion No."
|
||||||
msgstr "Antrag Nr."
|
msgstr "Antrag Nr."
|
||||||
|
|
||||||
#: motion/views.py:726
|
#: motion/views.py:752
|
||||||
msgid "Signature"
|
msgid "Signature"
|
||||||
msgstr "Unterschrift"
|
msgstr "Unterschrift"
|
||||||
|
|
||||||
#: motion/views.py:777 motion/templates/motion/base_motion.html:55
|
#: motion/views.py:803 motion/templates/motion/base_motion.html:55
|
||||||
#: motion/templates/motion/poll_view.html:8
|
#: motion/templates/motion/poll_view.html:8
|
||||||
#: motion/templates/motion/poll_view.html:13
|
#: motion/templates/motion/poll_view.html:13
|
||||||
#: motion/templates/motion/view.html:66 motion/templates/motion/view.html:74
|
#: motion/templates/motion/view.html:66 motion/templates/motion/view.html:74
|
||||||
@ -1372,20 +1383,21 @@ msgstr "Unterschrift"
|
|||||||
msgid "Vote"
|
msgid "Vote"
|
||||||
msgstr "Abstimmung"
|
msgstr "Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:811
|
#: motion/views.py:837
|
||||||
msgid "Poll"
|
msgid "Poll"
|
||||||
msgstr "Abstimmung"
|
msgstr "Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:825
|
#: motion/views.py:851
|
||||||
|
#, python-format
|
||||||
msgid "Motion No. %s"
|
msgid "Motion No. %s"
|
||||||
msgstr "Antrag Nr. %s"
|
msgstr "Antrag Nr. %s"
|
||||||
|
|
||||||
#: motion/views.py:827
|
#: motion/views.py:853
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d. Vote"
|
msgid "%d. Vote"
|
||||||
msgstr "%d. Abstimmung"
|
msgstr "%d. Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:884
|
#: motion/views.py:910
|
||||||
msgid "Motion settings successfully saved."
|
msgid "Motion settings successfully saved."
|
||||||
msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert."
|
msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
@ -1429,7 +1441,7 @@ msgstr "Antrag als PDF"
|
|||||||
|
|
||||||
#: motion/templates/motion/base_motion.html:49
|
#: motion/templates/motion/base_motion.html:49
|
||||||
msgid "Show Motion"
|
msgid "Show Motion"
|
||||||
msgstr "Zeige Antrag"
|
msgstr "Antrag projizieren"
|
||||||
|
|
||||||
#: motion/templates/motion/config.html:5 motion/templates/motion/config.html:8
|
#: motion/templates/motion/config.html:5 motion/templates/motion/config.html:8
|
||||||
msgid "Motion settings"
|
msgid "Motion settings"
|
||||||
@ -1653,12 +1665,16 @@ msgid "User groups"
|
|||||||
msgstr "Benutzerrollen"
|
msgstr "Benutzerrollen"
|
||||||
|
|
||||||
#: participant/forms.py:44
|
#: participant/forms.py:44
|
||||||
msgid "Persmissions"
|
msgid "Permissions"
|
||||||
msgstr "Rechte"
|
msgstr "Rechte"
|
||||||
|
|
||||||
#: participant/forms.py:47
|
#: participant/forms.py:47 participant/views.py:495
|
||||||
msgid "Users"
|
#: participant/templates/participant/base_participant.html:12
|
||||||
msgstr "Benutzer"
|
#: participant/templates/participant/overview.html:7
|
||||||
|
#: participant/templates/participant/overview.html:18
|
||||||
|
#: participant/templates/participant/overview.html:62
|
||||||
|
msgid "Participants"
|
||||||
|
msgstr "Teilnehmer/innen"
|
||||||
|
|
||||||
#: participant/forms.py:83
|
#: participant/forms.py:83
|
||||||
msgid "You can not edit the name for the anonymous user"
|
msgid "You can not edit the name for the anonymous user"
|
||||||
@ -1678,8 +1694,12 @@ msgid "Printed in PDF of first time passwords only."
|
|||||||
msgstr "Erscheint nur im PDF der Erst-Passwörter"
|
msgstr "Erscheint nur im PDF der Erst-Passwörter"
|
||||||
|
|
||||||
#: participant/forms.py:118
|
#: participant/forms.py:118
|
||||||
msgid "Sort users by first name"
|
msgid "Sort participants by first name"
|
||||||
msgstr "Sortiere Teilnehmer beim Vornamen"
|
msgstr "Teilnehmer/innen nach Vornamen sortieren"
|
||||||
|
|
||||||
|
#: participant/forms.py:119
|
||||||
|
msgid "Disable for sorting by last name"
|
||||||
|
msgstr "Deaktivieren für Sortierung nach Nachnamen"
|
||||||
|
|
||||||
#: participant/models.py:29 participant/templates/participant/overview.html:25
|
#: participant/models.py:29 participant/templates/participant/overview.html:25
|
||||||
msgid "Male"
|
msgid "Male"
|
||||||
@ -1711,7 +1731,7 @@ msgid "Detail"
|
|||||||
msgstr "Detail"
|
msgstr "Detail"
|
||||||
|
|
||||||
#: participant/models.py:42
|
#: participant/models.py:42
|
||||||
msgid "Will be shown behind the name."
|
msgid "Will be shown after the name."
|
||||||
msgstr "Wird nach dem Namen angezeigt."
|
msgstr "Wird nach dem Namen angezeigt."
|
||||||
|
|
||||||
#: participant/models.py:45 participant/templates/participant/overview.html:24
|
#: participant/models.py:45 participant/templates/participant/overview.html:24
|
||||||
@ -1719,8 +1739,8 @@ msgid "Gender"
|
|||||||
msgstr "Geschlecht"
|
msgstr "Geschlecht"
|
||||||
|
|
||||||
#: participant/models.py:45 participant/models.py:48 participant/models.py:51
|
#: participant/models.py:45 participant/models.py:48 participant/models.py:51
|
||||||
msgid "Only for filter the userlist."
|
msgid "Only for filtering the participant list."
|
||||||
msgstr "Nur zum Filtern der Benutzerliste."
|
msgstr "Nur zum Filtern der Teilnehmerliste."
|
||||||
|
|
||||||
#: participant/models.py:48
|
#: participant/models.py:48
|
||||||
msgid "Typ"
|
msgid "Typ"
|
||||||
@ -1748,6 +1768,18 @@ msgstr "Darf die Teilnehmer/inen sehen"
|
|||||||
msgid "Can manage participant"
|
msgid "Can manage participant"
|
||||||
msgstr "Darf die Teilnehmer/inen verwalten"
|
msgstr "Darf die Teilnehmer/inen verwalten"
|
||||||
|
|
||||||
|
#: participant/models.py:113
|
||||||
|
msgid "Use this user group as participant"
|
||||||
|
msgstr "Verwende diese Benutzerrolle als Teilnehmer/in"
|
||||||
|
|
||||||
|
#: participant/models.py:113
|
||||||
|
msgid "For example as submitter of a motion."
|
||||||
|
msgstr "Zum Beispiel als Antragsteller."
|
||||||
|
|
||||||
|
#: participant/models.py:192
|
||||||
|
msgid "Welcome to OpenSlides!"
|
||||||
|
msgstr "Willkommen bei OpenSlides!"
|
||||||
|
|
||||||
#: participant/views.py:212
|
#: participant/views.py:212
|
||||||
msgid "Participant-list"
|
msgid "Participant-list"
|
||||||
msgstr "Teilnehmerliste"
|
msgstr "Teilnehmerliste"
|
||||||
@ -1810,16 +1842,16 @@ msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert."
|
|||||||
msgid "Do you really want to reset the password?"
|
msgid "Do you really want to reset the password?"
|
||||||
msgstr "Soll das Passwort wirklich zurückgesetzt werden?"
|
msgstr "Soll das Passwort wirklich zurückgesetzt werden?"
|
||||||
|
|
||||||
#: participant/views.py:346
|
#: participant/views.py:343
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The Password for %s was successfully reset."
|
msgid "The Password for %s was successfully reset."
|
||||||
msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt."
|
msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt."
|
||||||
|
|
||||||
#: participant/views.py:428
|
#: participant/views.py:422
|
||||||
msgid "Participants settings successfully saved."
|
msgid "Participants settings successfully saved."
|
||||||
msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert."
|
msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
#: participant/views.py:438
|
#: participant/views.py:432
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Installation was successfully! Use %(user)s (password: %(password)s) for "
|
"Installation was successfully! Use %(user)s (password: %(password)s) for "
|
||||||
@ -1832,21 +1864,13 @@ msgstr ""
|
|||||||
"Sie das Passwort nach der ersten Anmeldung! Anderenfalls erscheint diese "
|
"Sie das Passwort nach der ersten Anmeldung! Anderenfalls erscheint diese "
|
||||||
"Meldung weiterhin für alle und ist ein Sicherheitsrisiko."
|
"Meldung weiterhin für alle und ist ein Sicherheitsrisiko."
|
||||||
|
|
||||||
#: participant/views.py:461
|
#: participant/views.py:455
|
||||||
msgid "User settings successfully saved."
|
msgid "User settings successfully saved."
|
||||||
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
|
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
#: participant/views.py:483
|
#: participant/views.py:477
|
||||||
msgid "Password successfully changed."
|
msgid "Password successfully changed."
|
||||||
msgstr "Password wurde erfolgreich geändert."
|
msgstr "Passwort wurde erfolgreich geändert."
|
||||||
|
|
||||||
#: participant/views.py:501
|
|
||||||
#: participant/templates/participant/base_participant.html:12
|
|
||||||
#: participant/templates/participant/overview.html:7
|
|
||||||
#: participant/templates/participant/overview.html:18
|
|
||||||
#: participant/templates/participant/overview.html:62
|
|
||||||
msgid "Participants"
|
|
||||||
msgstr "Teilnehmer/innen"
|
|
||||||
|
|
||||||
#: participant/templates/participant/base_participant.html:15
|
#: participant/templates/participant/base_participant.html:15
|
||||||
msgid "All participants"
|
msgid "All participants"
|
||||||
@ -2034,23 +2058,23 @@ msgstr "Darf den Projektor sehen"
|
|||||||
msgid "Can see the dashboard"
|
msgid "Can see the dashboard"
|
||||||
msgstr "Darf das Dashboard sehen"
|
msgstr "Darf das Dashboard sehen"
|
||||||
|
|
||||||
#: projector/views.py:185
|
#: projector/views.py:202
|
||||||
msgid "Errors in the form"
|
msgid "Errors in the form"
|
||||||
msgstr "Fehler im Formular"
|
msgstr "Fehler im Formular"
|
||||||
|
|
||||||
#: projector/views.py:361 projector/templates/projector/dashboard.html:17
|
#: projector/views.py:378 projector/templates/projector/dashboard.html:17
|
||||||
msgid "Dashboard"
|
msgid "Dashboard"
|
||||||
msgstr "Dashboard"
|
msgstr "Dashboard"
|
||||||
|
|
||||||
#: projector/views.py:378
|
#: projector/views.py:406
|
||||||
msgid "Projector live view"
|
msgid "Projector live view"
|
||||||
msgstr "Projektor-Live-Ansicht"
|
msgstr "Projektor-Live-Ansicht"
|
||||||
|
|
||||||
#: projector/views.py:404
|
#: projector/views.py:432
|
||||||
msgid "Overlays"
|
msgid "Overlays"
|
||||||
msgstr "Einblendungen"
|
msgstr "Einblendungen"
|
||||||
|
|
||||||
#: projector/views.py:417
|
#: projector/views.py:445
|
||||||
msgid "Custom Slides"
|
msgid "Custom Slides"
|
||||||
msgstr "Benutzerdefinierte Folien"
|
msgstr "Benutzerdefinierte Folien"
|
||||||
|
|
||||||
@ -2075,7 +2099,6 @@ msgid "Projector view"
|
|||||||
msgstr "Projektor-Ansicht"
|
msgstr "Projektor-Ansicht"
|
||||||
|
|
||||||
#: projector/templates/projector/control_countdown.html:6
|
#: projector/templates/projector/control_countdown.html:6
|
||||||
msgctxt "seconds"
|
|
||||||
msgid "s"
|
msgid "s"
|
||||||
msgstr "s"
|
msgstr "s"
|
||||||
|
|
||||||
@ -2158,6 +2181,10 @@ msgstr "Startseite"
|
|||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Abmelden"
|
msgstr "Abmelden"
|
||||||
|
|
||||||
|
#: templates/base.html:30
|
||||||
|
msgid "Welcome"
|
||||||
|
msgstr "Willkommen"
|
||||||
|
|
||||||
#: templates/front_page.html:12
|
#: templates/front_page.html:12
|
||||||
msgid "You have access to the following pages:"
|
msgid "You have access to the following pages:"
|
||||||
msgstr "Sie haben Zugriff auf folgende Seiten:"
|
msgstr "Sie haben Zugriff auf folgende Seiten:"
|
||||||
@ -2176,7 +2203,7 @@ msgstr "Gedruckt am: %s"
|
|||||||
msgid "Page %s"
|
msgid "Page %s"
|
||||||
msgstr "Seite %s"
|
msgstr "Seite %s"
|
||||||
|
|
||||||
#: utils/utils.py:66 utils/views.py:271
|
#: utils/utils.py:66 utils/views.py:290
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to delete %s?"
|
msgid "Do you really want to delete %s?"
|
||||||
msgstr "Soll %s wirklich gelöscht werden?"
|
msgstr "Soll %s wirklich gelöscht werden?"
|
||||||
@ -2193,22 +2220,22 @@ msgstr "Sind Sie sicher?"
|
|||||||
msgid "Thank you for your answer"
|
msgid "Thank you for your answer"
|
||||||
msgstr "Danke für Ihre Antwort"
|
msgstr "Danke für Ihre Antwort"
|
||||||
|
|
||||||
#: utils/views.py:232
|
#: utils/views.py:247
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s was successfully modified."
|
msgid "%s was successfully modified."
|
||||||
msgstr "%s wurde erfolgreich bearbeitet."
|
msgstr "%s wurde erfolgreich bearbeitet."
|
||||||
|
|
||||||
#: utils/views.py:263
|
#: utils/views.py:278
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s was successfully created."
|
msgid "%s was successfully created."
|
||||||
msgstr "%s wurde erfolgreich angelegt."
|
msgstr "%s wurde erfolgreich angelegt."
|
||||||
|
|
||||||
#: utils/views.py:274
|
#: utils/views.py:296
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s was successfully deleted."
|
msgid "%s was successfully deleted."
|
||||||
msgstr "%s wurde erfolgreich gelöscht."
|
msgstr "%s wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: utils/views.py:305
|
#: utils/views.py:312
|
||||||
msgid "undefined-filename"
|
msgid "undefined-filename"
|
||||||
msgstr "undefinierter-dateiname"
|
msgstr "undefinierter-dateiname"
|
||||||
|
|
||||||
@ -2216,32 +2243,5 @@ msgstr "undefinierter-dateiname"
|
|||||||
msgid "Enter valid JSON"
|
msgid "Enter valid JSON"
|
||||||
msgstr "Gebe valides JSON ein"
|
msgstr "Gebe valides JSON ein"
|
||||||
|
|
||||||
#~ msgid "Applications"
|
#~ msgid "Users"
|
||||||
#~ msgstr "Anträge"
|
#~ msgstr "Benutzer"
|
||||||
|
|
||||||
#~ msgid "Application"
|
|
||||||
#~ msgstr "Antrag"
|
|
||||||
|
|
||||||
#~ msgid "Application No. %s"
|
|
||||||
#~ msgstr "Antrag Nr. %s"
|
|
||||||
|
|
||||||
#~ msgid "Application No."
|
|
||||||
#~ msgstr "Antrag Nr."
|
|
||||||
|
|
||||||
#~ msgid "Show Application"
|
|
||||||
#~ msgstr "Antrag projizieren"
|
|
||||||
|
|
||||||
#~ msgid "Application settings"
|
|
||||||
#~ msgstr "Antrags-Einstellungen"
|
|
||||||
|
|
||||||
#~ msgid "Category"
|
|
||||||
#~ msgstr "Kategorie"
|
|
||||||
|
|
||||||
#~ msgid "Do you really want to delete multiple motions?"
|
|
||||||
#~ msgstr "Wollen Sie wirklich mehrere Anträge löschen?"
|
|
||||||
|
|
||||||
#~ msgid "Do you really want to delete <b>%s</b>?"
|
|
||||||
#~ msgstr "Soll <b>%s</b> wirklich gelöscht werden?"
|
|
||||||
|
|
||||||
#~ msgid "You!"
|
|
||||||
#~ msgstr "Sie!"
|
|
||||||
|
@ -223,7 +223,7 @@ def create_or_reset_admin_user():
|
|||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
admin = User()
|
admin = User()
|
||||||
admin.username = 'admin'
|
admin.username = 'admin'
|
||||||
admin.last_name = 'Admin User'
|
admin.last_name = 'Administrator'
|
||||||
print("Created default admin user")
|
print("Created default admin user")
|
||||||
|
|
||||||
admin.is_superuser = True
|
admin.is_superuser = True
|
||||||
|
@ -615,16 +615,13 @@ def motion_import(request):
|
|||||||
user.last_name = last_name
|
user.last_name = last_name
|
||||||
user.first_name = first_name
|
user.first_name = first_name
|
||||||
user.username = gen_username(first_name, last_name)
|
user.username = gen_username(first_name, last_name)
|
||||||
|
user.detail = ''
|
||||||
|
user.committee = ''
|
||||||
|
user.gender = ''
|
||||||
|
user.type = ''
|
||||||
|
user.default_password = gen_password()
|
||||||
user.save()
|
user.save()
|
||||||
profile = Profile()
|
user.reset_password()
|
||||||
profile.user = user
|
|
||||||
profile.group = ''
|
|
||||||
profile.committee = ''
|
|
||||||
profile.gender = 'none'
|
|
||||||
profile.type = 'guest'
|
|
||||||
profile.firstpassword = gen_password()
|
|
||||||
profile.user.set_password(profile.firstpassword)
|
|
||||||
profile.save()
|
|
||||||
users_generated += 1
|
users_generated += 1
|
||||||
# create / modify the motion
|
# create / modify the motion
|
||||||
motion = None
|
motion = None
|
||||||
|
@ -71,7 +71,7 @@ def import_users(csv_file):
|
|||||||
dialect=dialect)):
|
dialect=dialect)):
|
||||||
if line_no:
|
if line_no:
|
||||||
try:
|
try:
|
||||||
(first_name, last_name, gender, category, type, committee, comment) = line[:7]
|
(first_name, last_name, gender, detail, type, committee, comment) = line[:7]
|
||||||
except ValueError:
|
except ValueError:
|
||||||
error_messages.append(_('Ignoring malformed line %d in import file.') % line_no + 1)
|
error_messages.append(_('Ignoring malformed line %d in import file.') % line_no + 1)
|
||||||
continue
|
continue
|
||||||
@ -80,11 +80,11 @@ def import_users(csv_file):
|
|||||||
user.first_name = first_name
|
user.first_name = first_name
|
||||||
user.username = gen_username(first_name, last_name)
|
user.username = gen_username(first_name, last_name)
|
||||||
user.gender = gender
|
user.gender = gender
|
||||||
user.category = category
|
user.detail = detail
|
||||||
user.type = type
|
user.type = type
|
||||||
user.committee = committee
|
user.committee = committee
|
||||||
user.comment = comment
|
user.comment = comment
|
||||||
user.firstpassword = gen_password()
|
user.default_password = gen_password()
|
||||||
user.save()
|
user.save()
|
||||||
user.reset_password()
|
user.reset_password()
|
||||||
count_success += 1
|
count_success += 1
|
||||||
|
@ -41,10 +41,10 @@ class UserUpdateForm(UserCreateForm):
|
|||||||
|
|
||||||
class GroupForm(forms.ModelForm, CssClassMixin):
|
class GroupForm(forms.ModelForm, CssClassMixin):
|
||||||
permissions = LocalizedModelMultipleChoiceField(
|
permissions = LocalizedModelMultipleChoiceField(
|
||||||
queryset=Permission.objects.all(), label=_("Persmissions"),
|
queryset=Permission.objects.all(), label=_("Permissions"),
|
||||||
required=False)
|
required=False)
|
||||||
users = forms.ModelMultipleChoiceField(
|
users = forms.ModelMultipleChoiceField(
|
||||||
queryset=User.objects.all(), label=_("Users"), required=False)
|
queryset=User.objects.all(), label=_("Participants"), required=False)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
# Initial users
|
# Initial users
|
||||||
@ -115,4 +115,5 @@ class ConfigForm(forms.Form, CssClassMixin):
|
|||||||
help_text=_("Printed in PDF of first time passwords only."))
|
help_text=_("Printed in PDF of first time passwords only."))
|
||||||
participant_sort_users_by_first_name = forms.BooleanField(
|
participant_sort_users_by_first_name = forms.BooleanField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_("Sort users by first name"))
|
label=_("Sort participants by first name"),
|
||||||
|
help_text=_("Disable for sorting by last name"))
|
||||||
|
@ -39,16 +39,16 @@ class User(DjangoUser, PersonMixin, Person):
|
|||||||
django_user = models.OneToOneField(DjangoUser, editable=False, parent_link=True)
|
django_user = models.OneToOneField(DjangoUser, editable=False, parent_link=True)
|
||||||
detail = models.CharField(
|
detail = models.CharField(
|
||||||
max_length=100, blank=True, default='', verbose_name=_("Detail"),
|
max_length=100, blank=True, default='', verbose_name=_("Detail"),
|
||||||
help_text=_('Will be shown behind the name.'))
|
help_text=_('Will be shown after the name.'))
|
||||||
gender = models.CharField(
|
gender = models.CharField(
|
||||||
max_length=50, choices=GENDER_CHOICES, blank=True,
|
max_length=50, choices=GENDER_CHOICES, blank=True,
|
||||||
verbose_name=_("Gender"), help_text=_('Only for filter the userlist.'))
|
verbose_name=_("Gender"), help_text=_('Only for filtering the participant list.'))
|
||||||
type = models.CharField(
|
type = models.CharField(
|
||||||
max_length=100, choices=TYPE_CHOICES, blank=True,
|
max_length=100, choices=TYPE_CHOICES, blank=True,
|
||||||
verbose_name=_("Typ"), help_text=_('Only for filter the userlist.'))
|
verbose_name=_("Typ"), help_text=_('Only for filtering the participant list.'))
|
||||||
committee = models.CharField(
|
committee = models.CharField(
|
||||||
max_length=100, blank=True, default='', verbose_name=_("Committee"),
|
max_length=100, blank=True, default='', verbose_name=_("Committee"),
|
||||||
help_text=_('Only for filter the userlist.'))
|
help_text=_('Only for filtering the participant list.'))
|
||||||
comment = models.TextField(
|
comment = models.TextField(
|
||||||
blank=True, default='', verbose_name=_('Comment'),
|
blank=True, default='', verbose_name=_('Comment'),
|
||||||
help_text=_('Only for notes.'))
|
help_text=_('Only for notes.'))
|
||||||
@ -110,8 +110,8 @@ class Group(DjangoGroup, PersonMixin, Person):
|
|||||||
person_prefix = 'group'
|
person_prefix = 'group'
|
||||||
|
|
||||||
django_group = models.OneToOneField(DjangoGroup, editable=False, parent_link=True)
|
django_group = models.OneToOneField(DjangoGroup, editable=False, parent_link=True)
|
||||||
group_as_person = models.BooleanField(default=False)
|
group_as_person = models.BooleanField(default=False, verbose_name=_("Use this user group as participant"), help_text=_('For example as submitter of a motion.'))
|
||||||
description = models.TextField(blank=True)
|
description = models.TextField(blank=True, verbose_name=_("Description"))
|
||||||
|
|
||||||
@models.permalink
|
@models.permalink
|
||||||
def get_absolute_url(self, link='edit'):
|
def get_absolute_url(self, link='edit'):
|
||||||
@ -145,7 +145,7 @@ class UsersAndGroupsToPersons(object):
|
|||||||
if config['participant_sort_users_by_first_name']:
|
if config['participant_sort_users_by_first_name']:
|
||||||
self.users = User.objects.all().order_by('first_name')
|
self.users = User.objects.all().order_by('first_name')
|
||||||
else:
|
else:
|
||||||
self.users = User.objects.all()
|
self.users = User.objects.all().order_by('last_name')
|
||||||
self.groups = Group.objects.filter(group_as_person=True)
|
self.groups = Group.objects.filter(group_as_person=True)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
|
@ -98,6 +98,8 @@ class Overview(ListView):
|
|||||||
else:
|
else:
|
||||||
if config['participant_sort_users_by_first_name']:
|
if config['participant_sort_users_by_first_name']:
|
||||||
query = query.order_by('first_name')
|
query = query.order_by('first_name')
|
||||||
|
else:
|
||||||
|
query = query.order_by('last_name')
|
||||||
|
|
||||||
if 'reverse' in sortfilter:
|
if 'reverse' in sortfilter:
|
||||||
query = query.reverse()
|
query = query.reverse()
|
||||||
@ -215,6 +217,9 @@ class ParticipantsListPDF(PDFView):
|
|||||||
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'),
|
||||||
_('Committee')]]
|
_('Committee')]]
|
||||||
|
if config['participant_sort_users_by_first_name']:
|
||||||
|
sort = 'first_name'
|
||||||
|
else:
|
||||||
sort = 'last_name'
|
sort = 'last_name'
|
||||||
counter = 0
|
counter = 0
|
||||||
for user in User.objects.all().order_by(sort):
|
for user in User.objects.all().order_by(sort):
|
||||||
@ -257,7 +262,11 @@ class ParticipantsPasswordsPDF(PDFView):
|
|||||||
data = []
|
data = []
|
||||||
participant_pdf_system_url = config["participant_pdf_system_url"]
|
participant_pdf_system_url = config["participant_pdf_system_url"]
|
||||||
participant_pdf_welcometext = config["participant_pdf_welcometext"]
|
participant_pdf_welcometext = config["participant_pdf_welcometext"]
|
||||||
for user in User.objects.all().order_by('last_name'):
|
if config['participant_sort_users_by_first_name']:
|
||||||
|
sort = 'first_name'
|
||||||
|
else:
|
||||||
|
sort = 'last_name'
|
||||||
|
for user in User.objects.all().order_by(sort):
|
||||||
cell = []
|
cell = []
|
||||||
cell.append(Spacer(0, 0.8 * cm))
|
cell.append(Spacer(0, 0.8 * cm))
|
||||||
cell.append(Paragraph(_("Account for OpenSlides"),
|
cell.append(Paragraph(_("Account for OpenSlides"),
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
{% load i18n %}
|
||||||
|
{% load tags %}
|
||||||
|
|
||||||
|
{% if welcometext %}
|
||||||
|
<p>{{ welcometext|safe|linebreaks }}</p>
|
||||||
|
{% endif %}
|
@ -34,7 +34,7 @@ from openslides.config.models import config
|
|||||||
|
|
||||||
from openslides.projector.api import (get_active_slide, set_active_slide,
|
from openslides.projector.api import (get_active_slide, set_active_slide,
|
||||||
projector_message_set, projector_message_delete, get_slide_from_sid,
|
projector_message_set, projector_message_delete, get_slide_from_sid,
|
||||||
get_all_widgets)
|
get_all_widgets, clear_projector_cache)
|
||||||
from openslides.projector.forms import SelectWidgetsForm
|
from openslides.projector.forms import SelectWidgetsForm
|
||||||
from openslides.projector.models import ProjectorOverlay, ProjectorSlide
|
from openslides.projector.models import ProjectorOverlay, ProjectorSlide
|
||||||
from openslides.projector.projector import SLIDE, Widget
|
from openslides.projector.projector import SLIDE, Widget
|
||||||
@ -128,7 +128,9 @@ class Projector(TemplateView, AjaxMixin):
|
|||||||
if not data:
|
if not data:
|
||||||
data = self.data
|
data = self.data
|
||||||
cache.set('projector_data', data)
|
cache.set('projector_data', data)
|
||||||
|
# clear cache if countdown is enabled
|
||||||
|
if config['countdown_state'] == 'active':
|
||||||
|
clear_projector_cache()
|
||||||
context = super(Projector, self).get_ajax_context(**kwargs)
|
context = super(Projector, self).get_ajax_context(**kwargs)
|
||||||
content_hash = hash(content)
|
content_hash = hash(content)
|
||||||
context.update({
|
context.update({
|
||||||
@ -277,6 +279,7 @@ class CountdownEdit(RedirectView):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def get_ajax_context(self, **kwargs):
|
def get_ajax_context(self, **kwargs):
|
||||||
|
clear_projector_cache()
|
||||||
return {
|
return {
|
||||||
'state': config['countdown_state'],
|
'state': config['countdown_state'],
|
||||||
'countdown_time': config['countdown_time'],
|
'countdown_time': config['countdown_time'],
|
||||||
@ -299,6 +302,7 @@ class OverlayMessageView(RedirectView):
|
|||||||
|
|
||||||
|
|
||||||
def get_ajax_context(self, **kwargs):
|
def get_ajax_context(self, **kwargs):
|
||||||
|
clear_projector_cache()
|
||||||
return {
|
return {
|
||||||
'overlay_message': config['projector_message'],
|
'overlay_message': config['projector_message'],
|
||||||
}
|
}
|
||||||
@ -330,6 +334,7 @@ class ActivateOverlay(RedirectView):
|
|||||||
self.overlay.save()
|
self.overlay.save()
|
||||||
|
|
||||||
def get_ajax_context(self, **kwargs):
|
def get_ajax_context(self, **kwargs):
|
||||||
|
clear_projector_cache()
|
||||||
return {
|
return {
|
||||||
'active': self.overlay.active,
|
'active': self.overlay.active,
|
||||||
'def_name': self.overlay.def_name,
|
'def_name': self.overlay.def_name,
|
||||||
@ -389,6 +394,17 @@ def get_widgets(request):
|
|||||||
"""
|
"""
|
||||||
widgets = []
|
widgets = []
|
||||||
|
|
||||||
|
# welcome widget
|
||||||
|
context = {
|
||||||
|
'welcometext': config['frontpage_welcometext']}
|
||||||
|
widgets.append(Widget(
|
||||||
|
name='welcome',
|
||||||
|
display_name=config['frontpage_title'],
|
||||||
|
template='projector/welcome_widget.html',
|
||||||
|
context=context,
|
||||||
|
permission_required='projector.can_see_dashboard',
|
||||||
|
default_column=1))
|
||||||
|
|
||||||
# Projector live view widget
|
# Projector live view widget
|
||||||
widgets.append(Widget(
|
widgets.append(Widget(
|
||||||
name='live_view',
|
name='live_view',
|
||||||
|
Loading…
Reference in New Issue
Block a user