From 189cfa1309b1f7944cee5db34caff9146f0c4e4b Mon Sep 17 00:00:00 2001 From: Oskar Hahn Date: Tue, 17 Apr 2012 17:35:50 +0200 Subject: [PATCH] translate poll values --- openslides/application/forms.py | 2 +- openslides/application/models.py | 4 +- .../templates/application/view.html | 6 +- openslides/locale/de/LC_MESSAGES/django.mo | Bin 30104 -> 30184 bytes openslides/locale/de/LC_MESSAGES/django.po | 558 +++++++++--------- openslides/poll/forms.py | 15 +- openslides/poll/models.py | 51 +- 7 files changed, 342 insertions(+), 294 deletions(-) diff --git a/openslides/application/forms.py b/openslides/application/forms.py index 8488ffe19..1a08a368b 100644 --- a/openslides/application/forms.py +++ b/openslides/application/forms.py @@ -18,7 +18,6 @@ from utils.forms import CssClassMixin from application.models import Application - class UserModelChoiceField(ModelChoiceField): """ Extend ModelChoiceField for users so that the choices are @@ -58,6 +57,7 @@ class ApplicationImportForm(Form, CssClassMixin): csvfile = FileField(widget=FileInput(attrs={'size':'50'}), label=_("CSV File")) import_permitted = BooleanField(required=False, label=_("Import applications with status \"permitted\""), help_text=_("Set the initial status for each application to \"permitted\"")) + class ConfigForm(Form, CssClassMixin): application_min_supporters = IntegerField( widget=TextInput(attrs={'class':'small-input'}), diff --git a/openslides/application/models.py b/openslides/application/models.py index 594c54f2b..c350bd9ba 100644 --- a/openslides/application/models.py +++ b/openslides/application/models.py @@ -504,7 +504,7 @@ register_slidemodel(Application) class ApplicationOption(BaseOption): def __getattr__(self, name): - if name in ['yes', 'no', 'contained']: + if name in ['Yes', 'No', 'Abstain']: try: return self.get_votes().get(value=name) except Vote.DoesNotExist: @@ -514,7 +514,7 @@ class ApplicationOption(BaseOption): class ApplicationPoll(BasePoll, CountInvalid, CountVotesCast): option_class = ApplicationOption - vote_values = ['yes', 'no', 'contained'] #todo: Translate the names without changing the db-key + vote_values = [_('Yes', fixstr=True), _('No', fixstr=True), _('Abstain', fixstr=True)] application = models.ForeignKey(Application) diff --git a/openslides/application/templates/application/view.html b/openslides/application/templates/application/view.html index f242a2699..975c21df7 100644 --- a/openslides/application/templates/application/view.html +++ b/openslides/application/templates/application/view.html @@ -88,9 +88,9 @@
{% if poll.has_votes %} {% with poll.get_options.0 as option %} - {{ option.yes }}
- {{ option.no }}
- {{ option.contained }}
+ {{ option.Yes }}
+ {{ option.No }}
+ {{ option.Abstain }}
{{ poll.print_votesinvalid }}
{{ poll.print_votescast }} diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index 6e46ccaa3483a879d0c8f397e1defae638ca3202..94b7e3d96b85d23fc1dc74643c2aa91cbed5b898 100644 GIT binary patch delta 8844 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 Q@{D#^%{d=e=DfTA2Pymu-v9sr delta 8909 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 Ks@-cA%={nDXDcoM diff --git a/openslides/locale/de/LC_MESSAGES/django.po b/openslides/locale/de/LC_MESSAGES/django.po index 4dc1120a0..f8c6665af 100644 --- a/openslides/locale/de/LC_MESSAGES/django.po +++ b/openslides/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-15 12:24+0200\n" +"POT-Creation-Date: 2012-04-17 17:16+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,107 +33,110 @@ msgstr "Elternelement" msgid "Countdown (in seconds)" msgstr "Countdown (in Sekunden)" -#: agenda/models.py:39 application/forms.py:41 -#: application/templates/application/view.html:250 projector/models.py:13 +#: agenda/models.py:38 application/forms.py:41 +#: application/templates/application/view.html:256 config/forms.py:27 +#: projector/models.py:16 msgid "Title" msgstr "Titel" -#: agenda/models.py:40 application/forms.py:42 -#: application/templates/application/view.html:251 projector/models.py:14 +#: agenda/models.py:39 application/forms.py:42 +#: application/templates/application/view.html:257 projector/models.py:17 msgid "Text" msgstr "Text" -#: agenda/models.py:41 participant/models.py:37 -#: participant/templates/participant/overview.html:69 +#: agenda/models.py:40 agenda/templates/agenda/view.html:12 +#: participant/models.py:37 participant/templates/participant/overview.html:69 msgid "Comment" msgstr "Kommentar" -#: agenda/models.py:42 +#: agenda/models.py:41 msgid "Closed" msgstr "Abgeschlossen" -#: agenda/models.py:43 agenda/templates/agenda/overview.html:60 -#: projector/models.py:15 +#: agenda/models.py:42 agenda/templates/agenda/overview.html:60 +#: projector/models.py:18 msgid "Weight" msgstr "Gewichtung" -#: agenda/models.py:127 +#: agenda/models.py:112 msgid "Can see agenda" msgstr "Darf die Tagesordnung sehen" -#: agenda/models.py:128 +#: agenda/models.py:113 msgid "Can manage agenda" msgstr "Darf die Tagesordung verwalten" -#: agenda/models.py:135 -msgid "Agenda Item" -msgstr "Tagesordnungseintrag" - -#: agenda/models.py:142 agenda/slides.py:7 agenda/views.py:185 -#: agenda/views.py:186 agenda/views.py:215 -#: agenda/templates/agenda/base_agenda.html:9 +#: agenda/models.py:127 agenda/slides.py:7 agenda/views.py:154 +#: agenda/views.py:155 agenda/views.py:184 +#: agenda/templates/agenda/base_agenda.html:10 #: agenda/templates/agenda/overview.html:8 #: agenda/templates/agenda/overview.html:42 #: agenda/templates/agenda/overview.html:66 -#: agenda/templates/projector/AgendaSummary.html:6 -#: agenda/templates/projector/AgendaSummary.html:13 +#: agenda/templates/projector/AgendaSummary.html:7 +#: agenda/templates/projector/AgendaSummary.html:11 msgid "Agenda" msgstr "Tagesordnung" -#: agenda/views.py:160 +#: agenda/views.py:129 #, python-format msgid "Item %s and his children were successfully deleted." msgstr "Eintrag %s und seine Kindelemente wurde erfolgreich gelöscht." -#: agenda/views.py:166 utils/views.py:191 +#: agenda/views.py:135 utils/views.py:195 #, python-format msgid "Item %s was successfully deleted." msgstr "Eintrag %s wurde erfolgreich gelöscht." -#: agenda/views.py:170 agenda/views.py:172 -#: agenda/templates/agenda/overview.html:48 application/views.py:706 -#: application/views.py:750 application/templates/application/view.html:80 -#: application/templates/projector/Application.html:34 +#: agenda/views.py:139 agenda/views.py:141 +#: agenda/templates/agenda/overview.html:48 application/models.py:517 +#: application/views.py:695 application/views.py:739 +#: application/templates/application/view.html:91 +#: application/templates/projector/Application.html:33 #: assignment/templates/assignment/view.html:186 #: assignment/templates/assignment/view.html:190 #: assignment/templates/projector/Assignment.html:72 #: assignment/templates/projector/Assignment.html:76 utils/pdf.py:332 -#: utils/utils.py:39 utils/views.py:203 +#: utils/utils.py:39 utils/views.py:207 msgid "Yes" msgstr "Ja" -#: agenda/views.py:170 agenda/views.py:172 -#: agenda/templates/agenda/overview.html:49 application/views.py:706 -#: application/views.py:751 application/templates/application/view.html:81 -#: application/templates/projector/Application.html:35 +#: agenda/views.py:139 agenda/views.py:141 +#: agenda/templates/agenda/overview.html:49 application/models.py:517 +#: application/views.py:695 application/views.py:740 +#: application/templates/application/view.html:92 +#: application/templates/projector/Application.html:34 #: assignment/templates/assignment/view.html:187 #: assignment/templates/projector/Assignment.html:73 utils/pdf.py:332 -#: utils/utils.py:39 utils/views.py:203 +#: utils/utils.py:39 utils/views.py:207 msgid "No" msgstr "Nein" -#: agenda/views.py:172 +#: agenda/views.py:141 msgid "Yes, with all child items." msgstr "Ja, mit allen Kindelementen." -#: agenda/views.py:178 agenda/views.py:180 participant/views.py:188 -#: participant/views.py:282 utils/utils.py:47 utils/views.py:200 +#: agenda/views.py:147 agenda/views.py:149 participant/views.py:188 +#: participant/views.py:282 utils/utils.py:47 utils/views.py:204 #, python-format msgid "Do you really want to delete %s?" msgstr "Soll %s wirklich gelöscht werden?" -#: agenda/views.py:208 +#: agenda/views.py:177 msgid "Agenda settings successfully saved." msgstr "Tagesordnungs-Einstellungen erfolgreich gespeichert." -#: agenda/templates/agenda/base_agenda.html:11 +#: agenda/templates/agenda/base_agenda.html:12 msgid "All items" msgstr "Alle Einträge" -#: agenda/templates/agenda/base_agenda.html:13 +#: agenda/templates/agenda/base_agenda.html:14 msgid "New item" msgstr "Neuer Eintrag" +#: agenda/templates/agenda/base_agenda.html:16 +msgid "Agenda as PDF" +msgstr "Tagesordnung als PDF" + #: agenda/templates/agenda/config.html:5 agenda/templates/agenda/config.html:8 msgid "Agenda settings" msgstr "Tagesordnungs-Einstellungen" @@ -141,11 +144,11 @@ msgstr "Tagesordnungs-Einstellungen" #: agenda/templates/agenda/config.html:13 agenda/templates/agenda/edit.html:12 #: application/templates/application/config.html:13 #: application/templates/application/edit.html:21 -#: application/templates/application/poll_view.html:49 +#: application/templates/application/poll_view.html:50 #: assignment/templates/assignment/config.html:13 #: assignment/templates/assignment/edit.html:17 #: assignment/templates/assignment/poll_view.html:53 -#: config/templates/config/general.html:41 +#: config/templates/config/general.html:56 #: participant/templates/participant/config.html:13 #: participant/templates/participant/edit.html:21 #: participant/templates/participant/group_edit.html:17 @@ -158,11 +161,11 @@ msgstr "Speichern" #: application/templates/application/config.html:17 #: application/templates/application/edit.html:28 #: application/templates/application/import.html:26 -#: application/templates/application/poll_view.html:56 +#: application/templates/application/poll_view.html:57 #: assignment/templates/assignment/config.html:17 #: assignment/templates/assignment/edit.html:24 #: assignment/templates/assignment/poll_view.html:60 -#: config/templates/config/general.html:45 +#: config/templates/config/general.html:60 #: participant/templates/participant/config.html:17 #: participant/templates/participant/edit.html:28 #: participant/templates/participant/group_edit.html:24 @@ -178,27 +181,28 @@ msgid "Item" msgstr "Eintrag" #: agenda/templates/agenda/edit.html:8 -#: agenda/templates/agenda/item_row.html:23 +#: agenda/templates/agenda/item_row.html:30 msgid "Edit item" msgstr "Eintrag bearbeiten" #: agenda/templates/agenda/edit.html:15 #: application/templates/application/edit.html:24 -#: application/templates/application/poll_view.html:52 +#: application/templates/application/poll_view.html:53 #: assignment/templates/assignment/edit.html:20 #: assignment/templates/assignment/poll_view.html:56 #: assignment/templates/assignment/view.html:110 #: participant/templates/participant/edit.html:24 #: participant/templates/participant/group_edit.html:20 +#: projector/templates/projector/control.html:136 #: projector/templates/projector/new.html:16 msgid "Apply" msgstr "Übernehmen" -#: agenda/templates/agenda/item_row.html:8 +#: agenda/templates/agenda/item_row.html:12 msgid "Item closed" msgstr "Eintrag erledigt" -#: agenda/templates/agenda/item_row.html:24 +#: agenda/templates/agenda/item_row.html:31 msgid "Delete item" msgstr "Eintrag löschen" @@ -221,18 +225,14 @@ msgstr "Aktionen" msgid "items" msgstr "Einträge" -#: agenda/templates/agenda/overview.html:72 -msgid "Print agenda" -msgstr "Tagesordnung drucken" - -#: agenda/templates/agenda/overview.html:84 +#: agenda/templates/agenda/overview.html:81 msgid "No items available." msgstr "Keine Einträge vorhanden." -#: application/forms.py:43 application/views.py:724 -#: application/templates/application/view.html:233 -#: application/templates/application/view.html:253 -#: application/templates/projector/Application.html:60 +#: application/forms.py:43 application/views.py:713 +#: application/templates/application/view.html:239 +#: application/templates/application/view.html:259 +#: application/templates/projector/Application.html:59 msgid "Reason" msgstr "Begründung" @@ -244,15 +244,15 @@ msgstr "Triviale Änderung" msgid "Trivial changes don't create a new version." msgstr "Triviale Änderungen erzeugen keine neue Version." -#: application/forms.py:49 application/models.py:54 application/views.py:653 +#: application/forms.py:49 application/models.py:54 application/views.py:641 #: application/templates/application/overview.html:39 -#: application/templates/application/view.html:14 -#: application/templates/projector/Application.html:23 +#: application/templates/application/view.html:30 +#: application/templates/projector/Application.html:22 msgid "Submitter" msgstr "Antragsteller/in" -#: application/forms.py:50 application/models.py:56 application/views.py:666 -#: application/templates/application/view.html:28 +#: application/forms.py:50 application/models.py:56 application/views.py:654 +#: application/templates/application/view.html:37 msgid "Supporters" msgstr "Unterstützer/innen" @@ -313,12 +313,12 @@ msgid "Permitted" msgstr "Zugelassen" #: application/models.py:35 application/templates/application/overview.html:23 -#: application/templates/application/view.html:175 +#: application/templates/application/view.html:181 msgid "Accepted" msgstr "Angenommen" #: application/models.py:36 application/templates/application/overview.html:24 -#: application/templates/application/view.html:180 +#: application/templates/application/view.html:186 msgid "Rejected" msgstr "Abgelehnt" @@ -326,17 +326,17 @@ msgstr "Abgelehnt" msgid "Withdrawed" msgstr "Zurückgezogen" -#: application/models.py:38 application/templates/application/view.html:188 +#: application/models.py:38 application/templates/application/view.html:194 msgid "Adjourned" msgstr "Vertagt" # please check! -#: application/models.py:39 application/templates/application/view.html:191 +#: application/models.py:39 application/templates/application/view.html:197 msgid "Not Concerned" msgstr "Nicht befasst" # please check! -#: application/models.py:40 application/templates/application/view.html:194 +#: application/models.py:40 application/templates/application/view.html:200 msgid "Commited a bill" msgstr "Verwiesen (in Ausschuss)" @@ -379,12 +379,12 @@ msgstr "Unterstützer/innen gelöscht" msgid "Status reseted to: %s" msgstr "Status zurückgesetzt auf: %s" -#: application/models.py:229 application/views.py:176 +#: application/models.py:229 application/views.py:177 #, python-format msgid "Supporter: +%s" msgstr "Unterstützer/in: +%s" -#: application/models.py:239 application/views.py:187 +#: application/models.py:239 application/views.py:188 #, python-format msgid "Supporter: -%s" msgstr "Unterstützer/in: -%s" @@ -408,27 +408,31 @@ msgstr "Version %s nicht zugelassen" msgid "Status modified" msgstr "Status geändert" -#: application/models.py:424 +#: application/models.py:426 msgid "Poll created" msgstr "Abstimmung erstellt" -#: application/models.py:469 +#: application/models.py:474 msgid "Can see application" msgstr "Darf Anträge sehen" -#: application/models.py:470 +#: application/models.py:475 msgid "Can create application" msgstr "Darf Anträge erstellen" -#: application/models.py:471 +#: application/models.py:476 msgid "Can support application" msgstr "Darf Anträge unterstützen" -#: application/models.py:472 +#: application/models.py:477 msgid "Can manage application" msgstr "Darf Anträge verwalten" -#: application/models.py:545 application/views.py:609 application/views.py:807 +#: application/models.py:517 +msgid "Abstain" +msgstr "Enthaltung" + +#: application/models.py:549 application/views.py:596 application/views.py:796 #: application/templates/application/base_application.html:9 #: application/templates/application/overview.html:6 #: application/templates/application/overview.html:9 @@ -436,31 +440,31 @@ msgstr "Darf Anträge verwalten" msgid "Applications" msgstr "Anträge" -#: application/views.py:129 +#: application/views.py:130 msgid "You have not the necessary rights to create or edit applications." msgstr "" "Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu " "bearbeiten." -#: application/views.py:134 +#: application/views.py:135 msgid "You can not edit this application. You are not the submitter." msgstr "Sie dürfen keine Anträge von anderen bearbeiten." -#: application/views.py:189 +#: application/views.py:190 msgid "New application was successfully created." msgstr "Neuer Antrag wurde erfolgreich angelegt." -#: application/views.py:191 +#: application/views.py:192 msgid "Application was successfully modified." msgstr "Antrag wurde erfolgreich geändert." -#: application/views.py:198 application/views.py:597 assignment/views.py:129 +#: application/views.py:199 application/views.py:584 assignment/views.py:128 #: participant/views.py:165 participant/views.py:267 participant/views.py:296 -#: participant/views.py:454 utils/views.py:153 +#: participant/views.py:454 utils/views.py:157 msgid "Please check the form for errors." msgstr "Bitte kontrollieren Sie das Formular nach Fehlern." -#: application/views.py:205 +#: application/views.py:206 msgid "" "Attention: Do you really want to edit this application? The supporters will " "not be removed automatically because you can manage applications. " @@ -470,7 +474,7 @@ msgstr "" "werden nicht automatisch entfernt, da Sie Anträge verwalten dürfen. " "Prüfen Sie, ob die Unterstützungen noch gültig sind." -#: application/views.py:207 +#: application/views.py:208 #, python-format msgid "" "Attention: Do you really want to edit this application? All %s " @@ -479,131 +483,131 @@ msgstr "" "Wollen Sie den Antrag wirklich ändern? Alle %s Unterstützer/innen " "werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen." -#: application/views.py:237 +#: application/views.py:238 #, python-format msgid "You can not delete application %s." msgstr "Sie können Antrag %s nicht löschen." -#: application/views.py:243 +#: application/views.py:244 #, python-format msgid "Application %s was successfully deleted." msgstr "Antrag %s wurde erfolgreich gelöscht." -#: application/views.py:259 +#: application/views.py:260 msgid "Application number was successfully set." msgstr "Antragsnummer wurde erfolgreich gesetzt." -#: application/views.py:275 +#: application/views.py:276 msgid "Application was successfully permitted." msgstr "Antrag wurde erfolgreich zugelassen." -#: application/views.py:288 +#: application/views.py:289 msgid "Application was successfully rejected." msgstr "Antrag wurde erfolgreich verworfen." -#: application/views.py:302 +#: application/views.py:303 #, python-format msgid "Application status was set to: %s." msgstr "Antragsstatus wurde gesetzt auf: %s" -#: application/views.py:316 +#: application/views.py:317 msgid "Application status was reset." msgstr "Antragsstatus wurde zurückgesetzt." -#: application/views.py:330 +#: application/views.py:331 msgid "You have support the application successfully." msgstr "Sie haben den Antrag erfolgreich unterstützt." -#: application/views.py:344 +#: application/views.py:345 msgid "You have unsupport the application successfully." msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen." -#: application/views.py:365 +#: application/views.py:366 msgid "New vote was successfully created." msgstr "Neue Abstimmung erfolgreich angelegt." -#: application/views.py:381 +#: application/views.py:382 msgid "Poll was successfully deleted." msgstr "Abstimmung wurde erfolgreich gelöscht." -#: application/views.py:383 +#: application/views.py:384 #, python-format msgid "the %s. poll" msgstr "die %s. Abstimmung" -#: application/views.py:413 +#: application/views.py:414 msgid "Votes are successfully saved." msgstr "Stimmen erfolgreich gespeichert." -#: application/views.py:468 +#: application/views.py:455 #, python-format msgid "Version %s accepted." msgstr "Version %s akzeptiert." -#: application/views.py:470 +#: application/views.py:457 #, python-format msgid "Do you really want to permit version %s?" msgstr "Soll Version %s wirklich zugelassen werden?" -#: application/views.py:480 +#: application/views.py:467 #, python-format msgid "Version %s rejected." msgstr "Version %s zurückgewiesen." -#: application/views.py:482 +#: application/views.py:469 msgid "ERROR by rejecting the version." msgstr "FEHLER beim Zurückweisen der Version." -#: application/views.py:484 +#: application/views.py:471 #, python-format msgid "Do you really want to reject version %s?" msgstr "Soll Version %s wirklich zurückgewiesen werden?" -#: application/views.py:493 participant/views.py:312 +#: application/views.py:480 participant/views.py:312 msgid "" "The import function is available for the superuser (without user profile) " "only." msgstr "" "Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar." -#: application/views.py:524 application/views.py:528 application/views.py:534 -#: application/views.py:537 participant/views.py:381 +#: application/views.py:511 application/views.py:515 application/views.py:521 +#: application/views.py:524 participant/views.py:381 #, python-format msgid "Ignoring malformed line %d in import file." msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert." -#: application/views.py:583 +#: application/views.py:570 #, python-format msgid "%d application was successfully imported." msgid_plural "%d applications were successfully imported." msgstr[0] "%d Antrag wurde erfolgreich importiert." msgstr[1] "%d Anträge wurden erfolgreich importiert." -#: application/views.py:586 +#: application/views.py:573 #, python-format msgid "%d application was successfully modified." msgid_plural "%d applications were successfully modified." msgstr[0] "%d Antrag wurde erfolgreich geändert." msgstr[1] "%d Anträge wurden erfolgreich geändert." -#: application/views.py:589 +#: application/views.py:576 #, python-format msgid "%d new user was added." msgid_plural "%d new users were added." msgstr[0] "%d neuer Nutzer wurde erstellt." msgstr[1] "%d neue Nutzer wurden erstellt." -#: application/views.py:593 participant/views.py:450 +#: application/views.py:580 participant/views.py:450 msgid "Import aborted because of severe errors in the input file." msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen." -#: application/views.py:595 participant/views.py:452 +#: application/views.py:582 participant/views.py:452 msgid "Import file has wrong character encoding, only UTF-8 is supported!" msgstr "" "Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 " "wird unterstützt!" -#: application/views.py:599 +#: application/views.py:586 msgid "" "Attention: Existing applications will be modified if you import new " "applications with the same number." @@ -611,7 +615,7 @@ msgstr "" "Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit " "identischer Nummer importieren." -#: application/views.py:600 +#: application/views.py:587 msgid "" "Attention: Importing an application without a number multiple times will " "create duplicates." @@ -619,26 +623,28 @@ msgstr "" "Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate " "entstehen." -#: application/views.py:627 application/views.py:629 application/views.py:646 -#: application/views.py:648 application/views.py:746 +#: application/views.py:615 application/views.py:617 application/views.py:634 +#: application/views.py:636 application/views.py:735 #: application/templates/application/poll_view.html:12 #: application/templates/application/poll_view.html:20 -#: application/templates/application/view.html:215 -#: application/templates/projector/Application.html:54 +#: application/templates/application/view.html:13 +#: application/templates/application/view.html:221 +#: application/templates/projector/Application.html:53 msgid "Application No." msgstr "Antrag Nr." -#: application/views.py:640 application/views.py:738 +#: application/views.py:628 application/views.py:727 #: application/templates/application/edit.html:6 #: application/templates/application/view.html:7 -#: application/templates/application/view.html:217 +#: application/templates/application/view.html:15 +#: application/templates/application/view.html:223 msgid "Application" msgstr "Antrag" -#: application/views.py:680 application/templates/application/overview.html:19 +#: application/views.py:668 application/templates/application/overview.html:19 #: application/templates/application/overview.html:38 -#: application/templates/application/view.html:40 -#: application/templates/projector/Application.html:12 +#: application/templates/application/view.html:49 +#: application/templates/projector/Application.html:11 #: assignment/templates/assignment/overview.html:14 #: assignment/templates/assignment/overview.html:27 #: assignment/templates/assignment/view.html:12 @@ -647,51 +653,52 @@ msgstr "Antrag" msgid "Status" msgstr "Status" -#: application/views.py:699 application/templates/application/view.html:50 -#: assignment/views.py:338 +#: application/views.py:688 application/templates/application/view.html:59 +#: assignment/views.py:337 msgid "Vote results" msgstr "Abstimmungsergebnis" -#: application/views.py:705 +#: application/views.py:694 #: application/templates/application/poll_view.html:20 #: application/templates/application/poll_view.html:23 -#: application/templates/application/view.html:71 -#: application/templates/projector/Application.html:31 +#: application/templates/application/view.html:80 +#: application/templates/application/view.html:86 +#: application/templates/projector/Application.html:30 msgid "Vote" msgstr "Abstimmung" -#: application/views.py:706 application/views.py:752 -#: application/templates/application/view.html:82 -#: application/templates/projector/Application.html:36 +#: application/views.py:695 application/views.py:741 +#: application/templates/application/view.html:93 +#: application/templates/projector/Application.html:35 #: assignment/templates/assignment/view.html:188 #: assignment/templates/projector/Assignment.html:74 utils/pdf.py:332 msgid "Abstention" msgstr "Enthaltung" -#: application/views.py:706 application/templates/application/view.html:83 -#: application/templates/projector/Application.html:37 +#: application/views.py:695 application/templates/application/view.html:94 +#: application/templates/projector/Application.html:36 #: assignment/templates/assignment/view.html:207 #: assignment/templates/projector/Assignment.html:93 msgid "Invalid" msgstr "Ungültig" -#: application/views.py:706 -#: application/templates/application/poll_view.html:43 -#: application/templates/application/view.html:85 -#: application/templates/projector/Application.html:39 assignment/views.py:385 +#: application/views.py:695 +#: application/templates/application/poll_view.html:44 +#: application/templates/application/view.html:96 +#: application/templates/projector/Application.html:38 assignment/views.py:384 #: assignment/templates/assignment/poll_view.html:38 #: assignment/templates/assignment/view.html:215 #: assignment/templates/assignment/view.html:218 #: assignment/templates/projector/Assignment.html:98 -#: assignment/templates/projector/Assignment.html:101 poll/models.py:44 +#: assignment/templates/projector/Assignment.html:101 poll/models.py:50 msgid "Votes cast" msgstr "Abgegebene Stimmen" -#: application/views.py:738 assignment/templates/assignment/poll_view.html:5 +#: application/views.py:727 assignment/templates/assignment/poll_view.html:5 msgid "Poll" msgstr "Abstimmung" -#: application/views.py:800 +#: application/views.py:789 msgid "Application settings successfully saved." msgstr "Antrags-Einstellungen erfolgreich gespeichert." @@ -711,8 +718,8 @@ msgid "Import applications" msgstr "Anträge importieren" #: application/templates/application/base_application.html:18 -msgid "Print all applications" -msgstr "Alle Anträge drucken" +msgid "All applications as PDF" +msgstr "Alle Anträge als PDF" #: application/templates/application/config.html:5 #: application/templates/application/config.html:8 @@ -791,7 +798,7 @@ msgid "Number of supporters" msgstr "Anzahl der Unterstützer/innen" #: application/templates/application/overview.html:40 -#: application/templates/application/view.html:108 +#: application/templates/application/view.html:119 msgid "Creation Time" msgstr "Erstellungszeit" @@ -808,24 +815,24 @@ msgid "Results of" msgstr "Ergebnis der" #: application/templates/application/poll_view.html:24 -#: assignment/templates/assignment/poll_view.html:13 poll/models.py:153 +#: assignment/templates/assignment/poll_view.html:13 poll/models.py:192 msgid "majority" msgstr "Mehrheit" #: application/templates/application/poll_view.html:24 -#: assignment/templates/assignment/poll_view.html:13 poll/models.py:155 +#: assignment/templates/assignment/poll_view.html:13 poll/models.py:194 msgid "undocumented" msgstr "nicht erfasst" -#: application/templates/application/poll_view.html:29 +#: application/templates/application/poll_view.html:30 msgid "Option" msgstr "Wahlmöglichkeit" -#: application/templates/application/poll_view.html:30 +#: application/templates/application/poll_view.html:31 msgid "Votes" msgstr "Stimmen" -#: application/templates/application/poll_view.html:39 assignment/views.py:377 +#: application/templates/application/poll_view.html:40 assignment/views.py:376 #: assignment/templates/assignment/poll_view.html:34 #: assignment/templates/assignment/view.html:204 #: assignment/templates/projector/Assignment.html:90 @@ -833,157 +840,152 @@ msgid "Invalid votes" msgstr "Ungültige Stimmen" #: application/templates/application/view.html:17 +msgid "Edit Application" +msgstr "Antrag bearbeiten" + +#: application/templates/application/view.html:20 msgid "Delete Application" msgstr "Antrag löschen" -#: application/templates/application/view.html:19 -msgid "Print Application" -msgstr "Antrag drucken" +#: application/templates/application/view.html:22 +msgid "Application as PDF" +msgstr "Antrag als PDF" -#: application/templates/application/view.html:24 +#: application/templates/application/view.html:33 msgid "You!" msgstr "Sie!" -#: application/templates/application/view.html:56 -#: application/templates/application/view.html:92 +#: application/templates/application/view.html:65 +#: application/templates/application/view.html:103 msgid "New vote" msgstr "Neue Abstimmung" -#: application/templates/application/view.html:74 +#: application/templates/application/view.html:83 msgid "Delete Vote" msgstr "Abstimmung löschen" -#: application/templates/application/view.html:76 -msgid "project" -msgstr "projizieren" - -#: application/templates/application/view.html:99 +#: application/templates/application/view.html:110 msgid "Enter vote results!" msgstr "Abstimmungsergebnisse eingeben!" -#: application/templates/application/view.html:114 -#: assignment/templates/assignment/view.html:39 -msgid "Edit" -msgstr "Bearbeiten" - -#: application/templates/application/view.html:120 +#: application/templates/application/view.html:126 msgid "Withdraw" msgstr "Zurückziehen" -#: application/templates/application/view.html:128 +#: application/templates/application/view.html:134 msgid "Unsupport" msgstr "Nicht unterstützen" -#: application/templates/application/view.html:134 +#: application/templates/application/view.html:140 msgid "Support" msgstr "Unterstützen" -#: application/templates/application/view.html:140 +#: application/templates/application/view.html:146 msgid "minimum required supporters" msgstr "minimal erforderliche Unterstützer/innen" -#: application/templates/application/view.html:147 +#: application/templates/application/view.html:153 msgid "Manage application" msgstr "Antrag verwalten" -#: application/templates/application/view.html:150 +#: application/templates/application/view.html:156 msgid "Formal validation" msgstr "Formale Gültigkeitsprüfung" -#: application/templates/application/view.html:152 +#: application/templates/application/view.html:158 msgid "Publish" msgstr "Veröffentlen" -#: application/templates/application/view.html:155 +#: application/templates/application/view.html:161 msgid "Permit" msgstr "Zulassen" -#: application/templates/application/view.html:158 +#: application/templates/application/view.html:164 msgid "Not permit (reject)" msgstr "Nicht zulassen (verwerfen)" -#: application/templates/application/view.html:161 +#: application/templates/application/view.html:167 msgid "Set Number" msgstr "Setze Nummer" -#: application/templates/application/view.html:168 +#: application/templates/application/view.html:174 msgid "Beam Application" msgstr "Antrag projizieren" -#: application/templates/application/view.html:172 +#: application/templates/application/view.html:178 msgid "Result after vote" msgstr "Ergebnis nach der Abstimmung" -#: application/templates/application/view.html:186 +#: application/templates/application/view.html:192 msgid "Result after debate" msgstr "Ergebnis nach der Debatte" -#: application/templates/application/view.html:197 +#: application/templates/application/view.html:203 msgid "Withdrawed by Submitter" msgstr "Zurückgezogen durch Antragsteller/in" -#: application/templates/application/view.html:203 +#: application/templates/application/view.html:209 msgid "For Administration only:" msgstr "Nur zur Administration:" -#: application/templates/application/view.html:205 +#: application/templates/application/view.html:211 msgid "Reset" msgstr "Zurücksetzen" -#: application/templates/application/view.html:220 -#: application/templates/application/view.html:248 config/models.py:120 +#: application/templates/application/view.html:226 +#: application/templates/application/view.html:254 config/models.py:126 #: config/templates/config/version.html:5 #: config/templates/config/version.html:8 msgid "Version" msgstr "Version" -#: application/templates/application/view.html:223 +#: application/templates/application/view.html:229 msgid "Show newest Version" msgstr "Neuste Version anzeigen" -#: application/templates/application/view.html:225 +#: application/templates/application/view.html:231 msgid "Show permitted Version" msgstr "Zugelassene Version anzeigen" -#: application/templates/application/view.html:243 +#: application/templates/application/view.html:249 msgid "Version History" msgstr "Versionshistorie" -#: application/templates/application/view.html:249 +#: application/templates/application/view.html:255 msgid "Time" msgstr "Zeit" -#: application/templates/application/view.html:260 +#: application/templates/application/view.html:266 msgid "Version accepted" msgstr "Version akzeptiert" -#: application/templates/application/view.html:263 +#: application/templates/application/view.html:269 msgid "Accept Version" msgstr "Zugelassene Version" -#: application/templates/application/view.html:266 +#: application/templates/application/view.html:272 msgid "Reject Version" msgstr "Version zurückweisen" -#: application/templates/application/view.html:270 +#: application/templates/application/view.html:276 msgid "Version rejected" msgstr "Version zurückgewiesen" -#: application/templates/application/view.html:280 -#: application/templates/application/view.html:287 -#: application/templates/application/view.html:294 +#: application/templates/application/view.html:286 +#: application/templates/application/view.html:293 +#: application/templates/application/view.html:300 msgid "unchanged" msgstr "unverändert" -#: application/templates/application/view.html:303 +#: application/templates/application/view.html:309 msgid "Log" msgstr "Log" -#: application/templates/projector/Application.html:27 +#: application/templates/projector/Application.html:26 msgid "Poll result" msgstr "Abstimmungsergebnis" -#: application/templates/projector/Application.html:45 +#: application/templates/projector/Application.html:44 msgid "No poll results available." msgstr "Keine Abstimmungen vorhanden." @@ -1021,11 +1023,11 @@ msgstr "Abgeschlossen" msgid "Name" msgstr "Name" -#: assignment/models.py:31 poll/models.py:85 +#: assignment/models.py:31 poll/models.py:91 msgid "Description" msgstr "Beschreibung" -#: assignment/models.py:32 assignment/views.py:321 +#: assignment/models.py:32 assignment/views.py:320 #: assignment/templates/assignment/view.html:18 #: assignment/templates/projector/Assignment.html:21 msgid "Number of available posts" @@ -1071,7 +1073,7 @@ msgstr "Darf selbst für Wahlen kandidieren" msgid "Can manage assignment" msgstr "Darf Wahlen verwalten" -#: assignment/models.py:165 assignment/views.py:288 assignment/views.py:470 +#: assignment/models.py:165 assignment/views.py:287 assignment/views.py:469 #: assignment/templates/assignment/base_assignment.html:14 #: assignment/templates/assignment/overview.html:6 #: assignment/templates/assignment/overview.html:9 @@ -1083,84 +1085,84 @@ msgstr "Wahlen" msgid "Candidate %s was nominated successfully." msgstr "Kandidat/in %s wurde erfolgreich vorgeschlagen." -#: assignment/views.py:121 +#: assignment/views.py:120 msgid "New election was successfully created." msgstr "Neue Wahl wurde erfolgreich angelegt." -#: assignment/views.py:123 +#: assignment/views.py:122 msgid "Election was successfully modified." msgstr "Wahl wurde erfolgreich geändert." -#: assignment/views.py:143 +#: assignment/views.py:142 #, python-format msgid "Election %s was successfully deleted." msgstr "Wahl %s wurde erfolgreich gelöscht." -#: assignment/views.py:156 +#: assignment/views.py:155 #, python-format msgid "Election status was set to: %s." msgstr "Wahlstatus wurde gesetzt auf: %s." -#: assignment/views.py:167 +#: assignment/views.py:166 msgid "You have set your candidature successfully." msgstr "Sie haben Ihre Kandidatur erfolgreich gesetzt." -#: assignment/views.py:172 +#: assignment/views.py:171 msgid "You can't candidate. Your user account is only for administration." msgstr "" "Sie können nicht kandidieren. Ihr Nutzerkonto ist nur zur Administration." -#: assignment/views.py:180 +#: assignment/views.py:179 msgid "You have withdrawn your candidature successfully." msgstr "Sie haben Ihre Kandidatur erfolgreich zurückgezogen." -#: assignment/views.py:191 +#: assignment/views.py:190 #, python-format msgid "Candidate %s was withdrawn successfully." msgstr "Die Kandidatur von %s wurde erfolgreich zurückgezogen." -#: assignment/views.py:194 +#: assignment/views.py:193 #, python-format msgid "Do you really want to withdraw %s from the election?" msgstr "Soll %s wirklich von der Wahl zurückgezogen werden?" -#: assignment/views.py:209 +#: assignment/views.py:208 msgid "New ballot was successfully created." msgstr "Neuer Wahlgang erfolgreich angelegt." -#: assignment/views.py:235 +#: assignment/views.py:234 msgid "Poll successfully set to published." msgstr "Abstimmung wurde erfolgreich veröffentlicht." -#: assignment/views.py:237 +#: assignment/views.py:236 msgid "Poll successfully set to unpublished." msgstr "Abstimmung wurde erfolgreich unveröffentlicht." -#: assignment/views.py:239 +#: assignment/views.py:238 #, python-format msgid "Poll ID %d does not exist." msgstr "Abstimmungs-ID %d existiert nicht." -#: assignment/views.py:253 +#: assignment/views.py:252 msgid "not elected" msgstr "nicht gewählt" -#: assignment/views.py:256 assignment/views.py:406 +#: assignment/views.py:255 assignment/views.py:405 msgid "elected" msgstr "gewählt" -#: assignment/views.py:312 assignment/templates/assignment/view.html:6 +#: assignment/views.py:311 assignment/templates/assignment/view.html:6 msgid "Assignment" msgstr "Wahl" -#: assignment/views.py:317 assignment/templates/assignment/edit.html:5 +#: assignment/views.py:316 assignment/templates/assignment/edit.html:5 #: assignment/templates/assignment/overview.html:25 #: assignment/templates/projector/Assignment.html:13 utils/pdf.py:304 #: utils/pdf.py:313 msgid "Election" msgstr "Wahl" -#: assignment/views.py:326 assignment/views.py:346 +#: assignment/views.py:325 assignment/views.py:345 #: assignment/templates/assignment/overview.html:26 #: assignment/templates/assignment/view.html:61 #: assignment/templates/assignment/view.html:132 @@ -1169,23 +1171,23 @@ msgstr "Wahl" msgid "Candidates" msgstr "Kandidaten/innen" -#: assignment/views.py:341 +#: assignment/views.py:340 msgid "ballots" msgstr "Wahlgänge" -#: assignment/views.py:364 +#: assignment/views.py:363 msgid "Y" msgstr "J" -#: assignment/views.py:365 +#: assignment/views.py:364 msgid "N" msgstr "N" -#: assignment/views.py:366 +#: assignment/views.py:365 msgid "A" msgstr "E" -#: assignment/views.py:463 +#: assignment/views.py:462 msgid "Election settings successfully saved." msgstr "Wahl-Einstellungen wurden erfolgreich gespeichert." @@ -1266,6 +1268,10 @@ msgstr "Status ändern" msgid "Finish" msgstr "Abschließen" +#: assignment/templates/assignment/view.html:39 +msgid "Edit" +msgstr "Bearbeiten" + #: assignment/templates/assignment/view.html:47 msgid "Beam election" msgstr "Wahl projizieren" @@ -1347,15 +1353,19 @@ msgstr "Veranstalter" msgid "Allow access for anonymous guest users" msgstr "Erlaube Zugriff für anonyme Gast-Nutzer" +#: config/forms.py:28 participant/forms.py:95 +msgid "Welcome text" +msgstr "Willkommens text" + #: config/models.py:33 msgid "Can manage configuration" msgstr "Darf die Konfiguration verwalten" -#: config/models.py:103 +#: config/models.py:104 msgid "General" msgstr "Allgemein" -#: config/views.py:65 +#: config/views.py:74 msgid "" "Anonymous access enabled. Please modify the \"Anonymous\" group to fit your " "required permissions." @@ -1363,11 +1373,11 @@ msgstr "" "Anonymer Zugriff aktiviert. Bitte setzen Sie die Rechte der Benutzerrolle " "\"Anonymous\" passend zum gewünschten Zugriffslevel." -#: config/views.py:68 +#: config/views.py:78 msgid "General settings successfully saved." msgstr "Allgemeine Einstellungen erfolgreich gespeichert." -#: config/views.py:85 config/templates/config/base_config.html:7 +#: config/views.py:95 config/templates/config/base_config.html:7 msgid "Configuration" msgstr "Konfiguration" @@ -1380,9 +1390,13 @@ msgstr "Allgemeine Einstellungen" msgid "Event" msgstr "Veranstaltung" -#: config/templates/config/general.html:26 templates/base.html:28 -msgid "Welcome" -msgstr "Willkommen" +#: config/templates/config/general.html:26 +msgid "Frontpage" +msgstr "" + +#: config/templates/config/general.html:41 +msgid "System" +msgstr "System" #: config/templates/config/version.html:10 msgid "OpenSlides Version" @@ -1416,11 +1430,6 @@ msgstr "Bei existierenden Anträgen" msgid "System URL" msgstr "System URL" -#: participant/forms.py:95 -#, fuzzy -msgid "Welcome text" -msgstr "Willkommen" - #: participant/models.py:22 participant/templates/participant/overview.html:23 msgid "Male" msgstr "Männlich" @@ -1600,9 +1609,8 @@ msgid "Participants" msgstr "Teilnehmer/innen" #: participant/views.py:502 -#, fuzzy msgid "Participants settings successfully saved." -msgstr "Wahl-Einstellungen wurden erfolgreich gespeichert." +msgstr "Teilnehmer Einstellungen wurden erfolgreich gespeichert." #: participant/templates/participant/base_participant.html:15 msgid "All participants" @@ -1638,9 +1646,8 @@ msgstr "Erst-Passwörter drucken" #: participant/templates/participant/config.html:5 #: participant/templates/participant/config.html:8 -#, fuzzy msgid "Participant settings" -msgstr "Teilnehmer/innen" +msgstr "Teilnehmer/innen Einstellungen" #: participant/templates/participant/edit.html:5 msgid "Participant" @@ -1699,11 +1706,12 @@ msgstr "" #: participant/templates/participant/login.html:8 #: participant/templates/participant/login.html:16 -#: participant/templates/participant/login.html:45 templates/base.html:30 +#: participant/templates/participant/login.html:45 templates/base.html:31 msgid "Login" msgstr "Anmelden" #: participant/templates/participant/login.html:21 templates/base.html:56 +#: templates/base.html.py:63 msgid "Close this notification" msgstr "Meldung ausblenden" @@ -1726,7 +1734,7 @@ msgstr "Nicht angegeben" msgid "Type" msgstr "Typ" -#: participant/templates/participant/overview.html:51 projector/models.py:35 +#: participant/templates/participant/overview.html:51 projector/models.py:38 msgid "Active" msgstr "Aktiv" @@ -1763,33 +1771,29 @@ msgstr "Status ändern (aktiv/inaktiv)" msgid "Your Settings" msgstr "Ihre Einstellungen" -#: poll/models.py:57 +#: poll/models.py:63 msgid "Votes invalid" msgstr "Ungültige Stimmen" -#: poll/models.py:88 +#: poll/models.py:94 msgid "votes" msgstr "Stimmen" -#: projector/models.py:29 +#: projector/models.py:32 msgid "Can manage the projector" msgstr "Darf den Beamer steuern" -#: projector/models.py:30 +#: projector/models.py:33 msgid "Can see projector" msgstr "Darf den Beamer sehen" -#: projector/models.py:42 +#: projector/models.py:48 msgid "Projector Slide" msgstr "Beamer-Folie" -#: projector/projector.py:79 -msgid "Countdown" -msgstr "Countdown" - -#: projector/views.py:203 projector/templates/projector/base_projector.html:7 +#: projector/views.py:212 projector/templates/projector/base_projector.html:7 #: projector/templates/projector/base_projector.html:12 -#: projector/templates/projector/control.html:36 +#: projector/templates/projector/control.html:41 msgid "Projector" msgstr "Beamer" @@ -1807,63 +1811,55 @@ msgstr "Neue Folie" msgid "Projector view" msgstr "Beamer-Ansicht" -#: projector/templates/projector/control.html:39 +#: projector/templates/projector/control.html:44 msgid "Adjust projector view" msgstr "Beamer-Ansicht anpassen" -#: projector/templates/projector/control.html:40 +#: projector/templates/projector/control.html:45 msgid "Zoom in" msgstr "Vergrößern" -#: projector/templates/projector/control.html:43 +#: projector/templates/projector/control.html:48 msgid "Zoom out" msgstr "Verkleinern" -#: projector/templates/projector/control.html:46 +#: projector/templates/projector/control.html:51 msgid "Scroll text up" msgstr "Text nach oben scrollen" -#: projector/templates/projector/control.html:49 +#: projector/templates/projector/control.html:54 msgid "Scroll text down" msgstr "Text nach unten scrollen" -#: projector/templates/projector/control.html:52 +#: projector/templates/projector/control.html:57 msgid "Reset projector view" msgstr "Beamer-Ansicht zurücksetzen" -#: projector/templates/projector/control.html:83 +#: projector/templates/projector/control.html:88 msgid "Projector Live View" msgstr "Beamer-Live-Ansicht" -#: projector/templates/projector/control.html:86 +#: projector/templates/projector/control.html:91 msgid "Open Projector view" msgstr "Beamer-Ansicht öffnen" -#: projector/templates/projector/control.html:98 -msgid "Static Slides" -msgstr "Statische Folien" +#: projector/templates/projector/control.html:102 +msgid "Overlays" +msgstr "" -#: projector/templates/projector/control.html:110 -msgid "Select item overview" -msgstr "Wähle Eintragsübersicht" - -#: projector/templates/projector/control.html:131 -msgid "Messages" -msgstr "Nachrichten" - -#: projector/templates/projector/control.html:142 +#: projector/templates/projector/control.html:114 msgid "sec" msgstr "s" -#: projector/templates/projector/control.html:143 +#: projector/templates/projector/control.html:115 msgid "Reset countdown" msgstr "Countdown zurücksetzen" -#: projector/templates/projector/control.html:146 +#: projector/templates/projector/control.html:118 msgid "Start countdown" msgstr "Countdown starten" -#: projector/templates/projector/control.html:149 +#: projector/templates/projector/control.html:121 msgid "Stop countdown" msgstr "Countdown stoppen" @@ -1875,18 +1871,26 @@ msgstr "Seite nicht gefunden." msgid "Server Error" msgstr "Serverfehler" -#: templates/base.html:20 +#: templates/base.html:21 templates/front_page.html:5 msgid "Home" msgstr "Startseite" -#: templates/base.html:26 +#: templates/base.html:27 msgid "Logout" msgstr "Abmelden" -#: templates/base.html:27 +#: templates/base.html:28 msgid "User Settings" msgstr "Benutzereinstellungen" +#: templates/base.html:29 +msgid "Welcome" +msgstr "Willkommen" + +#: templates/front_page.html:11 +msgid "You have access to the following pages:" +msgstr "" + #: utils/pdf.py:189 msgid "%Y-%m-%d %H:%Mh" msgstr "%d.%m.%Y %H:%Mh" @@ -1943,10 +1947,6 @@ msgstr "verfügbare Posten" msgid "Sorry, you have no rights to see this page." msgstr "Bedaure, Sie haben keine Berechtigung diese Seite zu sehen." -#: utils/views.py:219 +#: utils/views.py:223 msgid "undefined-filename" msgstr "undefinierter-dateiname" - -#, fuzzy -#~ msgid "Access for guest users" -#~ msgstr "Zugriff für Gast-Nutzer aktivieren" diff --git a/openslides/poll/forms.py b/openslides/poll/forms.py index c0086811d..6fc5b20cf 100644 --- a/openslides/poll/forms.py +++ b/openslides/poll/forms.py @@ -2,6 +2,7 @@ from django import forms from django.utils.translation import ugettext as _ from utils.forms import CssClassMixin +from models import Vote class OptionForm(forms.Form, CssClassMixin): @@ -11,8 +12,16 @@ class OptionForm(forms.Form, CssClassMixin): kwargs['prefix'] = "option-%s" % formid super(OptionForm, self).__init__(*args, **kwargs) - for key, value in extra: + for vote in extra: + if type(vote) is Vote: + key = vote.value + value = vote.get_value() + weight = vote.get_weight() + else: + key = vote + value = _(vote) + weight = None self.fields[key] = forms.IntegerField( - label=_(key), - initial=value, + label=value, + initial=weight, ) diff --git a/openslides/poll/models.py b/openslides/poll/models.py index 7d86424d3..004d9ab79 100644 --- a/openslides/poll/models.py +++ b/openslides/poll/models.py @@ -36,9 +36,15 @@ class Vote(models.Model): weight = models.IntegerField(default=1) value = models.CharField(max_length=255, null=True) - def __unicode__(self): + def get_weight(self): return print_value(self.weight) + def get_value(self): + return _(self.value) + + def __unicode__(self): + return self.get_weight() + class CountVotesCast(models.Model): votescast = models.IntegerField(null=True, blank=True, verbose_name=_("Votes cast")) @@ -85,29 +91,50 @@ class BasePoll(models.Model, SlideMixin): description = models.TextField(null=True, blank=True, verbose_name=_("Description")) #TODO: Use this field or delete it. option_class = TextOption - vote_values = [_('votes')] + vote_values = [_('votes', fixstr=True)] def has_votes(self): + """ + Return True, the there are votes in the poll. + """ if self.get_options().filter(vote__isnull=False): return True return False def set_options(self, options_data=[]): + """ + Add new Option pbjects to the poll. + + option_data: A List of arguments for the Option. + """ for option_data in options_data: - option = self.option_class(**option_data) + option = self.get_option_class()(**option_data) option.poll = self option.save() def get_options(self): + """ + Return the option objects for the poll. + """ return self.get_option_class().objects.filter(poll=self) def get_option_class(self): + """ + Return the option class for the poll. Default is self.option_class. + """ return self.option_class def get_vote_values(self): + """ + Return the possible values for the poll as list. + """ return self.vote_values def set_form_values(self, option, data): + # TODO: recall this function. It has nothing to do with a form + """ + Create or update the vote objects for the poll. + """ for value in self.get_vote_values(): try: vote = Vote.objects.filter(option=option).get(value=value) @@ -117,21 +144,30 @@ class BasePoll(models.Model, SlideMixin): vote.save() def get_form_values(self, option_id): + # TODO: recall this function. It has nothing to do with a form + """ + Return a the values and the weight of the values as a list with two elements. + """ values = [] for value in self.get_vote_values(): try: vote = Vote.objects.filter(option=option_id).get(value=value) - weight = vote.weight + values.append(vote) except Vote.DoesNotExist: - weight = None - values.append((value, weight)) + values.append(value) return values def get_vote_form(self, **kwargs): + """ + Return the form for one option of the poll. + """ from poll.forms import OptionForm return OptionForm(extra=self.get_form_values(kwargs['formid']), **kwargs) def get_vote_forms(self, **kwargs): + """ + Return a list of forms for the poll + """ forms = [] for option in self.get_options(): form = self.get_vote_form(formid=option.id, **kwargs) @@ -140,6 +176,9 @@ class BasePoll(models.Model, SlideMixin): return forms def slide(self): + """ + show a Slide for the Poll. + """ data = super(BasePoll, self).slide() # data['template'] = 'projector/TODO.html' return data