Implement #419: Add group column for motion csv import
The motion import now features an additional column to indicate that the import should be created by an existing group. If the column is missing it is considered as 'off' and first / last name are used as always. If the column exists and contains 'y','yes','j','ja','true', '1' or 1 first name will be ignored and last name will be interpreted as a group name. If the group exists and can act as a person the motion will be imported and assigned to this group. Signed-off-by: René Köcher <shirk@bitspin.org>
This commit is contained in:
parent
2acfd02144
commit
36f83808fd
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: OpenSlides 1.x\n"
|
"Project-Id-Version: OpenSlides 1.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-11-20 12:34+0100\n"
|
"POT-Creation-Date: 2012-11-21 23:23+0100\n"
|
||||||
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
||||||
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
|
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
|
||||||
"Language-Team: support@openslides.de\n"
|
"Language-Team: support@openslides.de\n"
|
||||||
@ -34,12 +34,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:540 motion/templates/motion/view.html:246
|
#: motion/models.py:545 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:541
|
#: agenda/models.py:43 motion/forms.py:23 motion/models.py:546
|
||||||
#: 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"
|
||||||
@ -226,22 +226,22 @@ msgstr "Zusammenfassung für diesen Eintrag projizieren"
|
|||||||
msgid "Do you want to save the changed order of agenda items?"
|
msgid "Do you want to save the changed order of agenda items?"
|
||||||
msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
|
msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
|
||||||
|
|
||||||
#: agenda/templates/agenda/overview.html:46 assignment/models.py:302
|
#: agenda/templates/agenda/overview.html:46 assignment/models.py:301
|
||||||
#: assignment/views.py:577 assignment/templates/assignment/view.html:168
|
#: assignment/views.py:579 assignment/templates/assignment/view.html:168
|
||||||
#: assignment/templates/assignment/view.html:172
|
#: assignment/templates/assignment/view.html:172
|
||||||
#: assignment/templates/projector/Assignment.html:78
|
#: assignment/templates/projector/Assignment.html:78
|
||||||
#: assignment/templates/projector/Assignment.html:82 motion/models.py:574
|
#: assignment/templates/projector/Assignment.html:82 motion/models.py:579
|
||||||
#: motion/views.py:804 motion/views.py:855
|
#: motion/views.py:833 motion/views.py:884
|
||||||
#: 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
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
|
|
||||||
#: agenda/templates/agenda/overview.html:47 assignment/models.py:302
|
#: agenda/templates/agenda/overview.html:47 assignment/models.py:301
|
||||||
#: assignment/views.py:578 assignment/templates/assignment/view.html:169
|
#: assignment/views.py:580 assignment/templates/assignment/view.html:169
|
||||||
#: assignment/templates/projector/Assignment.html:79 motion/models.py:574
|
#: assignment/templates/projector/Assignment.html:79 motion/models.py:579
|
||||||
#: motion/views.py:804 motion/views.py:856
|
#: motion/views.py:833 motion/views.py:885
|
||||||
#: 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
|
||||||
@ -318,7 +318,7 @@ msgstr "Löschen"
|
|||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Bearbeiten"
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
#: assignment/forms.py:24 assignment/models.py:57 assignment/views.py:383
|
#: assignment/forms.py:24 assignment/models.py:57 assignment/views.py:385
|
||||||
#: assignment/templates/assignment/view.html:13
|
#: assignment/templates/assignment/view.html:13
|
||||||
#: assignment/templates/projector/Assignment.html:21
|
#: assignment/templates/projector/Assignment.html:21
|
||||||
msgid "Number of available posts"
|
msgid "Number of available posts"
|
||||||
@ -396,7 +396,7 @@ msgstr "Abgeschlossen"
|
|||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: assignment/models.py:55 participant/models.py:133
|
#: assignment/models.py:55 participant/models.py:134
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschreibung"
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
@ -404,7 +404,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:335
|
#: assignment/models.py:69 motion/models.py:337
|
||||||
#, 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."
|
||||||
@ -419,7 +419,7 @@ msgstr "Der Wahlstatus ist bereits %s."
|
|||||||
msgid "<b>%s</b> is already a candidate."
|
msgid "<b>%s</b> is already a candidate."
|
||||||
msgstr "<b>%s</b> ist bereits ein/e Kandidat/in."
|
msgstr "<b>%s</b> ist bereits ein/e Kandidat/in."
|
||||||
|
|
||||||
#: assignment/models.py:87 assignment/views.py:200
|
#: assignment/models.py:87 assignment/views.py:202
|
||||||
msgid "The candidate list is already closed."
|
msgid "The candidate list is already closed."
|
||||||
msgstr "Die Kandidatenliste ist bereits geschlossen."
|
msgstr "Die Kandidatenliste ist bereits geschlossen."
|
||||||
|
|
||||||
@ -428,42 +428,42 @@ msgstr "Die Kandidatenliste ist bereits geschlossen."
|
|||||||
msgid "%s does not want to be a candidate."
|
msgid "%s does not want to be a candidate."
|
||||||
msgstr "%s möchte nicht kandidieren."
|
msgstr "%s möchte nicht kandidieren."
|
||||||
|
|
||||||
#: assignment/models.py:109
|
#: assignment/models.py:108
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s is no candidate"
|
msgid "%s is no candidate"
|
||||||
msgstr "%s ist kein/e Kandidat/in"
|
msgstr "%s ist kein/e Kandidat/in"
|
||||||
|
|
||||||
#: assignment/models.py:255
|
#: assignment/models.py:254
|
||||||
msgid "Can see assignment"
|
msgid "Can see assignment"
|
||||||
msgstr "Darf Wahlen sehen"
|
msgstr "Darf Wahlen sehen"
|
||||||
|
|
||||||
#: assignment/models.py:257
|
#: assignment/models.py:256
|
||||||
msgid "Can nominate another person"
|
msgid "Can nominate another person"
|
||||||
msgstr "Darf andere Personen für Wahlen vorschlagen"
|
msgstr "Darf andere Personen für Wahlen vorschlagen"
|
||||||
|
|
||||||
#: assignment/models.py:258
|
#: assignment/models.py:257
|
||||||
msgid "Can nominate themselves"
|
msgid "Can nominate themselves"
|
||||||
msgstr "Darf selbst für Wahlen kandidieren"
|
msgstr "Darf selbst für Wahlen kandidieren"
|
||||||
|
|
||||||
#: assignment/models.py:259
|
#: assignment/models.py:258
|
||||||
msgid "Can manage assignment"
|
msgid "Can manage assignment"
|
||||||
msgstr "Darf Wahlen verwalten"
|
msgstr "Darf Wahlen verwalten"
|
||||||
|
|
||||||
#: assignment/models.py:303 motion/models.py:575
|
#: assignment/models.py:302 motion/models.py:580
|
||||||
msgid "Abstain"
|
msgid "Abstain"
|
||||||
msgstr "Enthaltung"
|
msgstr "Enthaltung"
|
||||||
|
|
||||||
#: assignment/models.py:305 motion/templates/motion/poll_view.html:22
|
#: assignment/models.py:304 motion/templates/motion/poll_view.html:22
|
||||||
msgid "Votes"
|
msgid "Votes"
|
||||||
msgstr "Stimmen"
|
msgstr "Stimmen"
|
||||||
|
|
||||||
#: assignment/models.py:322
|
#: assignment/models.py:321
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ballot %d"
|
msgid "Ballot %d"
|
||||||
msgstr "Wahlgang %d"
|
msgstr "Wahlgang %d"
|
||||||
|
|
||||||
#: assignment/models.py:331 assignment/views.py:340 assignment/views.py:664
|
#: assignment/models.py:330 assignment/views.py:342 assignment/views.py:666
|
||||||
#: assignment/views.py:678
|
#: assignment/views.py:680
|
||||||
#: assignment/templates/assignment/base_assignment.html:14
|
#: assignment/templates/assignment/base_assignment.html:14
|
||||||
#: assignment/templates/assignment/overview.html:6
|
#: assignment/templates/assignment/overview.html:6
|
||||||
#: assignment/templates/assignment/overview.html:9
|
#: assignment/templates/assignment/overview.html:9
|
||||||
@ -483,7 +483,7 @@ 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:257 motion/views.py:663
|
#: assignment/views.py:138 motion/views.py:257 motion/views.py:692
|
||||||
#: participant/views.py:506 participant/views.py:529 utils/views.py:225
|
#: participant/views.py:506 participant/views.py:529 utils/views.py:225
|
||||||
#: utils/views.py:243 utils/views.py:267
|
#: utils/views.py:243 utils/views.py:267
|
||||||
msgid "Please check the form for errors."
|
msgid "Please check the form for errors."
|
||||||
@ -499,11 +499,11 @@ msgstr "Wahl <b>%s</b> wurde erfolgreich gelöscht."
|
|||||||
msgid "Election status was set to: <b>%s</b>."
|
msgid "Election status was set to: <b>%s</b>."
|
||||||
msgstr "Wahlstatus wurde gesetzt auf: <b>%s</b>."
|
msgstr "Wahlstatus wurde gesetzt auf: <b>%s</b>."
|
||||||
|
|
||||||
#: assignment/views.py:181
|
#: assignment/views.py:183
|
||||||
msgid "You have set your candidature successfully."
|
msgid "You have set your candidature successfully."
|
||||||
msgstr "Sie haben Ihre Kandidatur erfolgreich gesetzt."
|
msgstr "Sie haben Ihre Kandidatur erfolgreich gesetzt."
|
||||||
|
|
||||||
#: assignment/views.py:197
|
#: assignment/views.py:199
|
||||||
msgid ""
|
msgid ""
|
||||||
"You have withdrawn your candidature successfully. You can not be nominated "
|
"You have withdrawn your candidature successfully. You can not be nominated "
|
||||||
"by other participants anymore."
|
"by other participants anymore."
|
||||||
@ -511,71 +511,71 @@ msgstr ""
|
|||||||
"Sie haben Ihre Kandidatur erfolgreich zurückgezogen. Sie können nun von "
|
"Sie haben Ihre Kandidatur erfolgreich zurückgezogen. Sie können nun von "
|
||||||
"anderen Teilnehmer/innen nicht mehr vorgeschlagen werden."
|
"anderen Teilnehmer/innen nicht mehr vorgeschlagen werden."
|
||||||
|
|
||||||
#: assignment/views.py:218
|
#: assignment/views.py:220
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Candidate <b>%s</b> was withdrawn successfully."
|
msgid "Candidate <b>%s</b> was withdrawn successfully."
|
||||||
msgstr "Die Kandidatur von <b>%s</b> wurde erfolgreich zurückgezogen."
|
msgstr "Die Kandidatur von <b>%s</b> wurde erfolgreich zurückgezogen."
|
||||||
|
|
||||||
#: assignment/views.py:220
|
#: assignment/views.py:222
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "<b>%s</b> was unblocked successfully."
|
msgid "<b>%s</b> was unblocked successfully."
|
||||||
msgstr "<b>%s</b> wurde erfolgreich freigegeben."
|
msgstr "<b>%s</b> wurde erfolgreich freigegeben."
|
||||||
|
|
||||||
#: assignment/views.py:224
|
#: assignment/views.py:226
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to withdraw <b>%s</b> from the election?"
|
msgid "Do you really want to withdraw <b>%s</b> from the election?"
|
||||||
msgstr "Soll <b>%s</b> wirklich von der Wahl zurückgezogen werden?"
|
msgstr "Soll <b>%s</b> wirklich von der Wahl zurückgezogen werden?"
|
||||||
|
|
||||||
#: assignment/views.py:226
|
#: assignment/views.py:228
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to unblock <b>%s</b> for the election?"
|
msgid "Do you really want to unblock <b>%s</b> for the election?"
|
||||||
msgstr "Soll <b>%s</b> wirklich für die Wahl freigegeben werden?"
|
msgstr "Soll <b>%s</b> wirklich für die Wahl freigegeben werden?"
|
||||||
|
|
||||||
#: assignment/views.py:241
|
#: assignment/views.py:243
|
||||||
msgid "New ballot was successfully created."
|
msgid "New ballot was successfully created."
|
||||||
msgstr "Neuer Wahlgang erfolgreich angelegt."
|
msgstr "Neuer Wahlgang erfolgreich angelegt."
|
||||||
|
|
||||||
#: assignment/views.py:273
|
#: assignment/views.py:275
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ballot ID %d does not exist."
|
msgid "Ballot ID %d does not exist."
|
||||||
msgstr "Wahlgang-ID %d existiert nicht."
|
msgstr "Wahlgang-ID %d existiert nicht."
|
||||||
|
|
||||||
#: assignment/views.py:280
|
#: assignment/views.py:282
|
||||||
msgid "Ballot successfully published."
|
msgid "Ballot successfully published."
|
||||||
msgstr "Wahlgang wurde erfolgreich veröffentlicht."
|
msgstr "Wahlgang wurde erfolgreich veröffentlicht."
|
||||||
|
|
||||||
#: assignment/views.py:282
|
#: assignment/views.py:284
|
||||||
msgid "Ballot successfully unpublished."
|
msgid "Ballot successfully unpublished."
|
||||||
msgstr "Wahlgang wurde erfolgreich unveröffentlicht."
|
msgstr "Wahlgang wurde erfolgreich unveröffentlicht."
|
||||||
|
|
||||||
#: assignment/views.py:295
|
#: assignment/views.py:297
|
||||||
msgid "not elected"
|
msgid "not elected"
|
||||||
msgstr "nicht gewählt"
|
msgstr "nicht gewählt"
|
||||||
|
|
||||||
#: assignment/views.py:298 assignment/views.py:481
|
#: assignment/views.py:300 assignment/views.py:483
|
||||||
#: assignment/templates/assignment/view.html:48
|
#: assignment/templates/assignment/view.html:48
|
||||||
msgid "elected"
|
msgid "elected"
|
||||||
msgstr "gewählt"
|
msgstr "gewählt"
|
||||||
|
|
||||||
#: assignment/views.py:326
|
#: assignment/views.py:328
|
||||||
msgid "Ballot was successfully deleted."
|
msgid "Ballot was successfully deleted."
|
||||||
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: assignment/views.py:337
|
#: assignment/views.py:339
|
||||||
msgid "Assignment"
|
msgid "Assignment"
|
||||||
msgstr "Wahl"
|
msgstr "Wahl"
|
||||||
|
|
||||||
#: assignment/views.py:358 assignment/templates/assignment/overview.html:59
|
#: assignment/views.py:360 assignment/templates/assignment/overview.html:59
|
||||||
#: assignment/templates/assignment/widget.html:23
|
#: assignment/templates/assignment/widget.html:23
|
||||||
msgid "No assignments available."
|
msgid "No assignments available."
|
||||||
msgstr "Keine Wahlen vorhanden."
|
msgstr "Keine Wahlen vorhanden."
|
||||||
|
|
||||||
#: assignment/views.py:377
|
#: assignment/views.py:379
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Election: %s"
|
msgid "Election: %s"
|
||||||
msgstr "Wahlen: %s"
|
msgstr "Wahlen: %s"
|
||||||
|
|
||||||
#: assignment/views.py:389 assignment/views.py:422
|
#: assignment/views.py:391 assignment/views.py:424
|
||||||
#: assignment/templates/assignment/overview.html:26
|
#: assignment/templates/assignment/overview.html:26
|
||||||
#: assignment/templates/assignment/poll_view.html:18
|
#: assignment/templates/assignment/poll_view.html:18
|
||||||
#: assignment/templates/assignment/view.html:37
|
#: assignment/templates/assignment/view.html:37
|
||||||
@ -585,12 +585,12 @@ msgstr "Wahlen: %s"
|
|||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr "Kandidaten/innen"
|
msgstr "Kandidaten/innen"
|
||||||
|
|
||||||
#: assignment/views.py:410 motion/views.py:797
|
#: assignment/views.py:412 motion/views.py:826
|
||||||
#: motion/templates/motion/view.html:44
|
#: motion/templates/motion/view.html:44
|
||||||
msgid "Vote results"
|
msgid "Vote results"
|
||||||
msgstr "Abstimmungsergebnis"
|
msgstr "Abstimmungsergebnis"
|
||||||
|
|
||||||
#: assignment/views.py:414
|
#: assignment/views.py:416
|
||||||
#: assignment/templates/assignment/base_assignment.html:71
|
#: assignment/templates/assignment/base_assignment.html:71
|
||||||
#: assignment/templates/assignment/poll_view.html:5
|
#: assignment/templates/assignment/poll_view.html:5
|
||||||
#: assignment/templates/assignment/poll_view.html:8
|
#: assignment/templates/assignment/poll_view.html:8
|
||||||
@ -599,11 +599,11 @@ msgstr "Abstimmungsergebnis"
|
|||||||
msgid "ballot"
|
msgid "ballot"
|
||||||
msgstr "Wahlgang"
|
msgstr "Wahlgang"
|
||||||
|
|
||||||
#: assignment/views.py:417
|
#: assignment/views.py:419
|
||||||
msgid "ballots"
|
msgid "ballots"
|
||||||
msgstr "Wahlgänge"
|
msgstr "Wahlgänge"
|
||||||
|
|
||||||
#: assignment/views.py:443
|
#: assignment/views.py:445
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Y: %(YES)s\n"
|
"Y: %(YES)s\n"
|
||||||
@ -614,25 +614,25 @@ msgstr ""
|
|||||||
"N: %(NO)s\n"
|
"N: %(NO)s\n"
|
||||||
"E: %(ABSTAIN)s"
|
"E: %(ABSTAIN)s"
|
||||||
|
|
||||||
#: assignment/views.py:454 assignment/templates/assignment/poll_view.html:35
|
#: assignment/views.py:456 assignment/templates/assignment/poll_view.html:35
|
||||||
#: assignment/templates/assignment/view.html:186
|
#: assignment/templates/assignment/view.html:186
|
||||||
#: assignment/templates/projector/Assignment.html:96
|
#: assignment/templates/projector/Assignment.html:96
|
||||||
#: motion/templates/motion/poll_view.html:31
|
#: motion/templates/motion/poll_view.html:31
|
||||||
msgid "Invalid votes"
|
msgid "Invalid votes"
|
||||||
msgstr "Ungültige Stimmen"
|
msgstr "Ungültige Stimmen"
|
||||||
|
|
||||||
#: assignment/views.py:461 assignment/templates/assignment/poll_view.html:45
|
#: assignment/views.py:463 assignment/templates/assignment/poll_view.html:45
|
||||||
#: 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:109
|
#: assignment/templates/projector/Assignment.html:109
|
||||||
#: assignment/templates/projector/Assignment.html:115 motion/views.py:804
|
#: assignment/templates/projector/Assignment.html:115 motion/views.py:833
|
||||||
#: 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
|
||||||
msgid "Votes cast"
|
msgid "Votes cast"
|
||||||
msgstr "Abgegebene Stimmen"
|
msgstr "Abgegebene Stimmen"
|
||||||
|
|
||||||
#: assignment/views.py:520 assignment/views.py:536
|
#: assignment/views.py:522 assignment/views.py:538
|
||||||
#: assignment/templates/assignment/overview.html:25
|
#: assignment/templates/assignment/overview.html:25
|
||||||
#: assignment/templates/assignment/poll_view.html:5
|
#: assignment/templates/assignment/poll_view.html:5
|
||||||
#: assignment/templates/assignment/view.html:6
|
#: assignment/templates/assignment/view.html:6
|
||||||
@ -640,33 +640,33 @@ msgstr "Abgegebene Stimmen"
|
|||||||
msgid "Election"
|
msgid "Election"
|
||||||
msgstr "Wahl"
|
msgstr "Wahl"
|
||||||
|
|
||||||
#: assignment/views.py:542
|
#: assignment/views.py:544
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d. ballot"
|
msgid "%d. ballot"
|
||||||
msgstr "%d. Wahlgang"
|
msgstr "%d. Wahlgang"
|
||||||
|
|
||||||
#: assignment/views.py:543
|
#: assignment/views.py:545
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d candidate"
|
msgid "%d candidate"
|
||||||
msgid_plural "%d candidates"
|
msgid_plural "%d candidates"
|
||||||
msgstr[0] "%d Kandidat/in"
|
msgstr[0] "%d Kandidat/in"
|
||||||
msgstr[1] "%d Kandidaten/innen"
|
msgstr[1] "%d Kandidaten/innen"
|
||||||
|
|
||||||
#: assignment/views.py:545
|
#: assignment/views.py:547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d available post"
|
msgid "%d available post"
|
||||||
msgid_plural "%d available posts"
|
msgid_plural "%d available posts"
|
||||||
msgstr[0] "%d verfügbare Posten"
|
msgstr[0] "%d verfügbare Posten"
|
||||||
msgstr[1] "%d verfügbare Posten"
|
msgstr[1] "%d verfügbare Posten"
|
||||||
|
|
||||||
#: assignment/views.py:578 assignment/templates/assignment/view.html:170
|
#: assignment/views.py:580 assignment/templates/assignment/view.html:170
|
||||||
#: assignment/templates/projector/Assignment.html:80 motion/views.py:804
|
#: assignment/templates/projector/Assignment.html:80 motion/views.py:833
|
||||||
#: motion/views.py:857 motion/templates/motion/view.html:81
|
#: motion/views.py:886 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"
|
||||||
|
|
||||||
#: assignment/views.py:657
|
#: assignment/views.py:659
|
||||||
msgid "Election settings successfully saved."
|
msgid "Election settings successfully saved."
|
||||||
msgstr "Wahl-Einstellungen wurden erfolgreich gespeichert."
|
msgstr "Wahl-Einstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
@ -722,7 +722,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:775
|
#: assignment/templates/projector/Assignment.html:18 motion/views.py:804
|
||||||
#: 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
|
||||||
@ -844,7 +844,7 @@ msgid "was not a <br> candidate"
|
|||||||
msgstr "war kein Kandidat"
|
msgstr "war kein Kandidat"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:191
|
#: assignment/templates/assignment/view.html:191
|
||||||
#: assignment/templates/projector/Assignment.html:100 motion/views.py:804
|
#: assignment/templates/projector/Assignment.html:100 motion/views.py:833
|
||||||
#: 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"
|
||||||
@ -904,7 +904,7 @@ msgstr "Allgemein"
|
|||||||
|
|
||||||
#: config/models.py:127 config/templates/config/version.html:5
|
#: config/models.py:127 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:789
|
#: config/templates/config/version.html:11 motion/views.py:818
|
||||||
#: 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"
|
||||||
@ -942,7 +942,7 @@ msgstr "Willkommens-Widget"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
#: motion/forms.py:25 motion/models.py:542 motion/views.py:823
|
#: motion/forms.py:25 motion/models.py:547 motion/views.py:852
|
||||||
#: 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"
|
||||||
@ -956,14 +956,14 @@ 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:35 motion/models.py:66 motion/views.py:742
|
#: motion/forms.py:35 motion/models.py:68 motion/views.py:771
|
||||||
#: 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
|
||||||
msgid "Submitter"
|
msgid "Submitter"
|
||||||
msgstr "Antragsteller/in"
|
msgstr "Antragsteller/in"
|
||||||
|
|
||||||
#: motion/forms.py:44 motion/views.py:762 motion/templates/motion/view.html:22
|
#: motion/forms.py:44 motion/views.py:791 motion/templates/motion/view.html:22
|
||||||
msgid "Supporters"
|
msgid "Supporters"
|
||||||
msgstr "Unterstützer/innen"
|
msgstr "Unterstützer/innen"
|
||||||
|
|
||||||
@ -1008,74 +1008,74 @@ msgid "Warning: Trivial changes undermine the motions autorisation system."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Warnung: Triviale Änderungen unterlaufen das Zulassungssystem von Anträgen."
|
"Warnung: Triviale Änderungen unterlaufen das Zulassungssystem von Anträgen."
|
||||||
|
|
||||||
#: motion/models.py:45
|
#: motion/models.py:47
|
||||||
msgid "Published"
|
msgid "Published"
|
||||||
msgstr "Veröffentlicht"
|
msgstr "Veröffentlicht"
|
||||||
|
|
||||||
#: motion/models.py:46
|
#: motion/models.py:48
|
||||||
msgid "Permitted"
|
msgid "Permitted"
|
||||||
msgstr "Zugelassen"
|
msgstr "Zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:47 motion/templates/motion/overview.html:24
|
#: motion/models.py:49 motion/templates/motion/overview.html:24
|
||||||
#: motion/templates/motion/view.html:167
|
#: motion/templates/motion/view.html:167
|
||||||
msgid "Accepted"
|
msgid "Accepted"
|
||||||
msgstr "Angenommen"
|
msgstr "Angenommen"
|
||||||
|
|
||||||
#: motion/models.py:48 motion/templates/motion/overview.html:25
|
#: motion/models.py:50 motion/templates/motion/overview.html:25
|
||||||
#: motion/templates/motion/view.html:172
|
#: motion/templates/motion/view.html:172
|
||||||
msgid "Rejected"
|
msgid "Rejected"
|
||||||
msgstr "Abgelehnt"
|
msgstr "Abgelehnt"
|
||||||
|
|
||||||
#: motion/models.py:49
|
#: motion/models.py:51
|
||||||
msgid "Withdrawed"
|
msgid "Withdrawed"
|
||||||
msgstr "Zurückgezogen"
|
msgstr "Zurückgezogen"
|
||||||
|
|
||||||
#: motion/models.py:50 motion/templates/motion/view.html:180
|
#: motion/models.py:52 motion/templates/motion/view.html:180
|
||||||
msgid "Adjourned"
|
msgid "Adjourned"
|
||||||
msgstr "Vertagt"
|
msgstr "Vertagt"
|
||||||
|
|
||||||
# please check!
|
# please check!
|
||||||
#: motion/models.py:51 motion/templates/motion/view.html:183
|
#: motion/models.py:53 motion/templates/motion/view.html:183
|
||||||
msgid "Not Concerned"
|
msgid "Not Concerned"
|
||||||
msgstr "Nicht befasst"
|
msgstr "Nicht befasst"
|
||||||
|
|
||||||
# please check!
|
# please check!
|
||||||
#: motion/models.py:52 motion/templates/motion/view.html:186
|
#: motion/models.py:54 motion/templates/motion/view.html:186
|
||||||
msgid "Commited a bill"
|
msgid "Commited a bill"
|
||||||
msgstr "Verwiesen (in Ausschuss)"
|
msgstr "Verwiesen (in Ausschuss)"
|
||||||
|
|
||||||
#: motion/models.py:53
|
#: motion/models.py:55
|
||||||
msgid "Rejected (not authorized)"
|
msgid "Rejected (not authorized)"
|
||||||
msgstr "Verworfen (nicht zulässig)"
|
msgstr "Verworfen (nicht zulässig)"
|
||||||
|
|
||||||
#: motion/models.py:54 motion/templates/motion/overview.html:27
|
#: motion/models.py:56 motion/templates/motion/overview.html:27
|
||||||
msgid "Needs Review"
|
msgid "Needs Review"
|
||||||
msgstr "Benötigt Review"
|
msgstr "Benötigt Review"
|
||||||
|
|
||||||
#: motion/models.py:103
|
#: motion/models.py:105
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %d authorized"
|
msgid "Version %d authorized"
|
||||||
msgstr "Version %d zugelassen"
|
msgstr "Version %d zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:110
|
#: motion/models.py:112
|
||||||
#, python-format
|
#, python-format
|
||||||
msgctxt "Rejected means not authorized"
|
msgctxt "Rejected means not authorized"
|
||||||
msgid "Version %d rejected"
|
msgid "Version %d rejected"
|
||||||
msgstr "Version verworfen"
|
msgstr "Version %d verworfen"
|
||||||
|
|
||||||
#: motion/models.py:139
|
#: motion/models.py:141
|
||||||
msgid "Searching for supporters."
|
msgid "Searching for supporters."
|
||||||
msgstr "Auf Unterstützersuche."
|
msgstr "Auf Unterstützersuche."
|
||||||
|
|
||||||
#: motion/models.py:141
|
#: motion/models.py:143
|
||||||
msgid "Not yet authorized."
|
msgid "Not yet authorized."
|
||||||
msgstr "Noch nicht zugelassen."
|
msgstr "Noch nicht zugelassen."
|
||||||
|
|
||||||
#: motion/models.py:143
|
#: motion/models.py:145
|
||||||
msgid "Not yet authorized changes."
|
msgid "Not yet authorized changes."
|
||||||
msgstr "Noch nicht zugelassene Änderungen."
|
msgstr "Noch nicht zugelassene Änderungen."
|
||||||
|
|
||||||
#: motion/models.py:223
|
#: motion/models.py:225
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Trivial changes to version %(version)d; changed fields: %(changed_fields)s"
|
"Trivial changes to version %(version)d; changed fields: %(changed_fields)s"
|
||||||
@ -1083,51 +1083,51 @@ msgstr ""
|
|||||||
"Triviale Änderung an Version %(version)d; Geänderte Felder: "
|
"Triviale Änderung an Version %(version)d; Geänderte Felder: "
|
||||||
"%(changed_fields)s"
|
"%(changed_fields)s"
|
||||||
|
|
||||||
#: motion/models.py:234
|
#: motion/models.py:236
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s created"
|
msgid "Version %s created"
|
||||||
msgstr "Version %s erstellt"
|
msgstr "Version %s erstellt"
|
||||||
|
|
||||||
#: motion/models.py:244
|
#: motion/models.py:246
|
||||||
msgid "Supporters removed"
|
msgid "Supporters removed"
|
||||||
msgstr "Unterstützer/innen gelöscht"
|
msgstr "Unterstützer/innen gelöscht"
|
||||||
|
|
||||||
#: motion/models.py:253
|
#: motion/models.py:255
|
||||||
#, python-format
|
#, python-format
|
||||||
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:265
|
#: motion/models.py:267
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: +%s"
|
msgid "Supporter: +%s"
|
||||||
msgstr "Unterstützer/in: +%s"
|
msgstr "Unterstützer/in: +%s"
|
||||||
|
|
||||||
#: motion/models.py:278
|
#: motion/models.py:280
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: -%s"
|
msgid "Supporter: -%s"
|
||||||
msgstr "Unterstützer/in: -%s"
|
msgstr "Unterstützer/in: -%s"
|
||||||
|
|
||||||
#: motion/models.py:295
|
#: motion/models.py:297
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Number set: %s"
|
msgid "Number set: %s"
|
||||||
msgstr "Nummer gesetzt: %s"
|
msgstr "Nummer gesetzt: %s"
|
||||||
|
|
||||||
#: motion/models.py:308
|
#: motion/models.py:310
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s authorized"
|
msgid "Version %s authorized"
|
||||||
msgstr "Version %s zugelassen"
|
msgstr "Version %s zugelassen"
|
||||||
|
|
||||||
#: motion/models.py:322
|
#: motion/models.py:324
|
||||||
#, 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:338
|
#: motion/models.py:340
|
||||||
#, 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:346
|
#: motion/models.py:348
|
||||||
#, 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 "
|
||||||
@ -1136,15 +1136,15 @@ 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:354
|
#: motion/models.py:356
|
||||||
msgid "Status modified"
|
msgid "Status modified"
|
||||||
msgstr "Status geändert"
|
msgstr "Status geändert"
|
||||||
|
|
||||||
#: motion/models.py:446
|
#: motion/models.py:449 motion/models.py:451
|
||||||
msgid "by"
|
msgid "by"
|
||||||
msgstr "von"
|
msgstr "von"
|
||||||
|
|
||||||
#: motion/models.py:454 motion/templates/motion/view.html:210
|
#: motion/models.py:459 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
|
||||||
#: participant/templates/participant/personal_info_widget.html:13
|
#: participant/templates/participant/personal_info_widget.html:13
|
||||||
@ -1152,38 +1152,38 @@ msgstr "von"
|
|||||||
msgid "no number"
|
msgid "no number"
|
||||||
msgstr "ohne Nummer"
|
msgstr "ohne Nummer"
|
||||||
|
|
||||||
#: motion/models.py:455 motion/templates/motion/widget.html:23
|
#: motion/models.py:460 motion/templates/motion/widget.html:23
|
||||||
#: participant/templates/participant/personal_info_widget.html:9
|
#: participant/templates/participant/personal_info_widget.html:9
|
||||||
#: participant/templates/participant/personal_info_widget.html:28
|
#: participant/templates/participant/personal_info_widget.html:28
|
||||||
msgid "motion"
|
msgid "motion"
|
||||||
msgstr "Antrag"
|
msgstr "Antrag"
|
||||||
|
|
||||||
#: motion/models.py:480
|
#: motion/models.py:485
|
||||||
msgid "Poll created"
|
msgid "Poll created"
|
||||||
msgstr "Abstimmung erstellt"
|
msgstr "Abstimmung erstellt"
|
||||||
|
|
||||||
#: motion/models.py:531
|
#: motion/models.py:536
|
||||||
msgid "Can see motions"
|
msgid "Can see motions"
|
||||||
msgstr "Darf Anträge sehen"
|
msgstr "Darf Anträge sehen"
|
||||||
|
|
||||||
#: motion/models.py:532
|
#: motion/models.py:537
|
||||||
msgid "Can create motions"
|
msgid "Can create motions"
|
||||||
msgstr "Darf Anträge erstellen"
|
msgstr "Darf Anträge erstellen"
|
||||||
|
|
||||||
#: motion/models.py:533
|
#: motion/models.py:538
|
||||||
msgid "Can support motions"
|
msgid "Can support motions"
|
||||||
msgstr "Darf Anträge unterstützen"
|
msgstr "Darf Anträge unterstützen"
|
||||||
|
|
||||||
#: motion/models.py:534
|
#: motion/models.py:539
|
||||||
msgid "Can manage motions"
|
msgid "Can manage motions"
|
||||||
msgstr "Darf Anträge verwalten"
|
msgstr "Darf Anträge verwalten"
|
||||||
|
|
||||||
#: motion/models.py:601
|
#: motion/models.py:606
|
||||||
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:604 motion/views.py:692 motion/views.py:917
|
#: motion/models.py:609 motion/views.py:721 motion/views.py:946
|
||||||
#: motion/views.py:928 motion/templates/motion/base_motion.html:9
|
#: motion/views.py:957 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"
|
||||||
@ -1330,44 +1330,73 @@ msgstr "FEHLER beim Zurückweisen der Version."
|
|||||||
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:593 motion/views.py:597 motion/views.py:603
|
#: motion/views.py:600 motion/views.py:604 motion/views.py:610
|
||||||
#: motion/views.py:606 participant/api.py:76
|
#: motion/views.py:613 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:649
|
#: motion/views.py:621
|
||||||
|
#, python-format
|
||||||
|
msgid "Ignoring line %d because the assigned group may not act as a person."
|
||||||
|
msgstr ""
|
||||||
|
"Fehlerhafte Zeile %d der Quelldatei wurde ignoriert da die verwendete "
|
||||||
|
"Gruppe nicht als Person auftreten darf."
|
||||||
|
|
||||||
|
#: motion/views.py:628
|
||||||
|
#, python-format
|
||||||
|
msgid "Ignoring line %d because the assigned group does not exist."
|
||||||
|
msgstr ""
|
||||||
|
"Fehlerhafte Zeile %d der Quelldatei wurde ignoriert da die verwendete "
|
||||||
|
"Gruppe nicht existiert."
|
||||||
|
|
||||||
|
#: motion/views.py:638
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Ignoring line %d because it contains an incomplete first / last name pair."
|
||||||
|
msgstr ""
|
||||||
|
"Fehlerhafte Zeile %d der Quelldatei wurde ignoriert, da Vor- bzw. Nachname"
|
||||||
|
" Leerstrings enthalten."
|
||||||
|
|
||||||
|
#: motion/views.py:676
|
||||||
#, 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:652
|
#: motion/views.py:679
|
||||||
#, 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:655
|
#: motion/views.py:682
|
||||||
#, 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:659 participant/api.py:92
|
#: motion/views.py:684
|
||||||
|
#, python-format
|
||||||
|
msgid "%d group assigned to motions."
|
||||||
|
msgid_plural "%d groups assigned to motions."
|
||||||
|
msgstr[0] "%d Gruppe wurde zugewiesen."
|
||||||
|
msgstr[1] "%d Gruppen wurden zugewiesen."
|
||||||
|
|
||||||
|
#: motion/views.py:688 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:661 participant/api.py:94
|
#: motion/views.py:690 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:665
|
#: motion/views.py:694
|
||||||
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."
|
||||||
@ -1375,7 +1404,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:666
|
#: motion/views.py:695
|
||||||
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."
|
||||||
@ -1383,7 +1412,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:699 motion/views.py:837
|
#: motion/views.py:728 motion/views.py:866
|
||||||
#: 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
|
||||||
@ -1393,21 +1422,21 @@ msgstr ""
|
|||||||
msgid "Motion"
|
msgid "Motion"
|
||||||
msgstr "Antrag"
|
msgstr "Antrag"
|
||||||
|
|
||||||
#: motion/views.py:713 motion/templates/motion/overview.html:84
|
#: motion/views.py:742 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:718 motion/views.py:720 motion/views.py:735
|
#: motion/views.py:747 motion/views.py:749 motion/views.py:764
|
||||||
#: motion/views.py:737 motion/templates/motion/base_motion.html:24
|
#: motion/views.py:766 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:752
|
#: motion/views.py:781
|
||||||
msgid "Signature"
|
msgid "Signature"
|
||||||
msgstr "Unterschrift"
|
msgstr "Unterschrift"
|
||||||
|
|
||||||
#: motion/views.py:803 motion/templates/motion/base_motion.html:55
|
#: motion/views.py:832 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
|
||||||
@ -1415,21 +1444,21 @@ msgstr "Unterschrift"
|
|||||||
msgid "Vote"
|
msgid "Vote"
|
||||||
msgstr "Abstimmung"
|
msgstr "Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:837
|
#: motion/views.py:866
|
||||||
msgid "Poll"
|
msgid "Poll"
|
||||||
msgstr "Abstimmung"
|
msgstr "Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:851
|
#: motion/views.py:880
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Motion No. %s"
|
msgid "Motion No. %s"
|
||||||
msgstr "Antrag Nr. %s"
|
msgstr "Antrag Nr. %s"
|
||||||
|
|
||||||
#: motion/views.py:853
|
#: motion/views.py:882
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d. Vote"
|
msgid "%d. Vote"
|
||||||
msgstr "%d. Abstimmung"
|
msgstr "%d. Abstimmung"
|
||||||
|
|
||||||
#: motion/views.py:910
|
#: motion/views.py:939
|
||||||
msgid "Motion settings successfully saved."
|
msgid "Motion settings successfully saved."
|
||||||
msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert."
|
msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
@ -1486,12 +1515,12 @@ msgstr "Wählen Sie eine CSV-Datei zum Importieren von Anträgen aus!"
|
|||||||
#: motion/templates/motion/import.html:11
|
#: motion/templates/motion/import.html:11
|
||||||
msgid ""
|
msgid ""
|
||||||
"Required comma separated values: <code>{number, title, text, reason, "
|
"Required comma separated values: <code>{number, title, text, reason, "
|
||||||
"first_name, last_name}</code> (<code>number</code> and <code>reason</code> "
|
"first_name, last_name, is_group}</code> (<code>number</code>, <code>reason</"
|
||||||
"are optional and may be empty)"
|
"code> and <code>is_group</code> are optional and may be empty)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Erforderliche kommaseparierte Werte: <code>{Nummer, Titel, Text, Begründung, "
|
"Erforderliche kommaseparierte Werte: <code>{Nummer, Titel, Text, Begründung, "
|
||||||
"Vorname, Nachname}</code> (<code>Nummer</code> und <code>Begründung</code> "
|
"Vorname, Nachname, Gruppenantrag}</code> (<code>Nummer</code>, <code>Begründung</code> "
|
||||||
"sind optional und können auch leer sein)"
|
" und <code>Gruppenantrag</code> sind optional und können auch leer sein)"
|
||||||
|
|
||||||
#: motion/templates/motion/import.html:13
|
#: motion/templates/motion/import.html:13
|
||||||
#: participant/templates/participant/import.html:13
|
#: participant/templates/participant/import.html:13
|
||||||
@ -1701,7 +1730,6 @@ msgstr "Teilnehmer"
|
|||||||
#: participant/templates/participant/group_overview.html:7
|
#: participant/templates/participant/group_overview.html:7
|
||||||
#: participant/templates/participant/group_overview.html:10
|
#: participant/templates/participant/group_overview.html:10
|
||||||
#: participant/templates/participant/user_detail.html:14
|
#: participant/templates/participant/user_detail.html:14
|
||||||
#: participant/templates/projector/UserSlide.html:12
|
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "Gruppen"
|
msgstr "Gruppen"
|
||||||
|
|
||||||
@ -1777,7 +1805,6 @@ msgstr "Wird nach dem Namen angezeigt."
|
|||||||
|
|
||||||
#: participant/models.py:48 participant/templates/participant/overview.html:24
|
#: participant/models.py:48 participant/templates/participant/overview.html:24
|
||||||
#: participant/templates/participant/user_detail.html:24
|
#: participant/templates/participant/user_detail.html:24
|
||||||
#: participant/templates/projector/UserSlide.html:20
|
|
||||||
msgid "Gender"
|
msgid "Gender"
|
||||||
msgstr "Geschlecht"
|
msgstr "Geschlecht"
|
||||||
|
|
||||||
@ -1793,7 +1820,6 @@ msgstr "Typ"
|
|||||||
#: participant/templates/participant/overview.html:45
|
#: participant/templates/participant/overview.html:45
|
||||||
#: participant/templates/participant/overview.html:70
|
#: participant/templates/participant/overview.html:70
|
||||||
#: participant/templates/participant/user_detail.html:34
|
#: participant/templates/participant/user_detail.html:34
|
||||||
#: participant/templates/projector/UserSlide.html:28
|
|
||||||
msgid "Committee"
|
msgid "Committee"
|
||||||
msgstr "Amt"
|
msgstr "Amt"
|
||||||
|
|
||||||
@ -1822,15 +1848,15 @@ 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:132
|
#: participant/models.py:133
|
||||||
msgid "Use this group as participant"
|
msgid "Use this group as participant"
|
||||||
msgstr "Verwende diese Gruppe als Teilnehmer/in"
|
msgstr "Verwende diese Gruppe als Teilnehmer/in"
|
||||||
|
|
||||||
#: participant/models.py:132
|
#: participant/models.py:133
|
||||||
msgid "For example as submitter of a motion."
|
msgid "For example as submitter of a motion."
|
||||||
msgstr "Zum Beispiel als Antragsteller."
|
msgstr "Zum Beispiel als Antragsteller."
|
||||||
|
|
||||||
#: participant/models.py:214
|
#: participant/models.py:225
|
||||||
msgid "Welcome to OpenSlides!"
|
msgid "Welcome to OpenSlides!"
|
||||||
msgstr "Willkommen bei OpenSlides!"
|
msgstr "Willkommen bei OpenSlides!"
|
||||||
|
|
||||||
@ -1874,7 +1900,6 @@ msgstr "Gruppe"
|
|||||||
#: participant/views.py:258 participant/templates/participant/overview.html:37
|
#: participant/views.py:258 participant/templates/participant/overview.html:37
|
||||||
#: participant/templates/participant/overview.html:69
|
#: participant/templates/participant/overview.html:69
|
||||||
#: participant/templates/participant/user_detail.html:29
|
#: participant/templates/participant/user_detail.html:29
|
||||||
#: participant/templates/projector/UserSlide.html:24
|
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Typ"
|
msgstr "Typ"
|
||||||
|
|
||||||
@ -2025,10 +2050,12 @@ msgid "Reset to First Password"
|
|||||||
msgstr "Auf Erst-Passwort zurücksetzen"
|
msgstr "Auf Erst-Passwort zurücksetzen"
|
||||||
|
|
||||||
#: participant/templates/participant/group_detail.html:14
|
#: participant/templates/participant/group_detail.html:14
|
||||||
|
#: participant/templates/projector/GroupSlide.html:13
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Mitglieder"
|
msgstr "Mitglieder"
|
||||||
|
|
||||||
#: participant/templates/participant/group_detail.html:19
|
#: participant/templates/participant/group_detail.html:19
|
||||||
|
#: participant/templates/projector/GroupSlide.html:22
|
||||||
msgid "No members available."
|
msgid "No members available."
|
||||||
msgstr "Keine Mitglieder vorhanden."
|
msgstr "Keine Mitglieder vorhanden."
|
||||||
|
|
||||||
@ -2150,7 +2177,6 @@ msgid "I am candidate for the following elections:"
|
|||||||
msgstr "Ich bin Kandidat/in bei folgenden Wahlen:"
|
msgstr "Ich bin Kandidat/in bei folgenden Wahlen:"
|
||||||
|
|
||||||
#: participant/templates/participant/user_detail.html:19
|
#: participant/templates/participant/user_detail.html:19
|
||||||
#: participant/templates/projector/UserSlide.html:16
|
|
||||||
msgid "The participant is not member of any group."
|
msgid "The participant is not member of any group."
|
||||||
msgstr "Teilnehmer/in ist kein Mitglied einer Gruppe."
|
msgstr "Teilnehmer/in ist kein Mitglied einer Gruppe."
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ from openslides.config.signals import default_config_value
|
|||||||
from openslides.poll.models import (BaseOption, BasePoll, CountVotesCast,
|
from openslides.poll.models import (BaseOption, BasePoll, CountVotesCast,
|
||||||
CountInvalid, BaseVote)
|
CountInvalid, BaseVote)
|
||||||
|
|
||||||
|
from openslides.participant.models import User, Group
|
||||||
|
|
||||||
from openslides.projector.api import register_slidemodel
|
from openslides.projector.api import register_slidemodel
|
||||||
from openslides.projector.models import SlideMixin
|
from openslides.projector.models import SlideMixin
|
||||||
|
|
||||||
@ -443,7 +445,10 @@ class Motion(models.Model, SlideMixin):
|
|||||||
self.log = ""
|
self.log = ""
|
||||||
self.log += u"%s | %s" % (datetime.now().strftime("%d.%m.%Y %H:%M:%S"), _propper_unicode(text))
|
self.log += u"%s | %s" % (datetime.now().strftime("%d.%m.%Y %H:%M:%S"), _propper_unicode(text))
|
||||||
if user is not None:
|
if user is not None:
|
||||||
self.log += u" (%s %s)" % (_("by"), _propper_unicode(user.username))
|
if isinstance(user, User):
|
||||||
|
self.log += u" (%s %s)" % (_("by"), _propper_unicode(user.username))
|
||||||
|
else:
|
||||||
|
self.log += u" (%s %s)" % (_("by"), _propper_unicode(str(user)))
|
||||||
self.log += "\n"
|
self.log += "\n"
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<h1>{% trans "Import motions" %}</h1>
|
<h1>{% trans "Import motions" %}</h1>
|
||||||
<p>{% trans 'Select a CSV file to import motions!' %}</p>
|
<p>{% trans 'Select a CSV file to import motions!' %}</p>
|
||||||
|
|
||||||
<p>{% trans 'Required comma separated values: <code>{number, title, text, reason, first_name, last_name}</code> (<code>number</code> and <code>reason</code> are optional and may be empty)' %}
|
<p>{% trans 'Required comma separated values: <code>{number, title, text, reason, first_name, last_name, is_group}</code> (<code>number</code>, <code>reason</code> and <code>is_group</code> are optional and may be empty)' %}
|
||||||
<br>
|
<br>
|
||||||
{% trans 'Required CSV file encoding: UTF-8 (Unicode).' %}
|
{% trans 'Required CSV file encoding: UTF-8 (Unicode).' %}
|
||||||
</p>
|
</p>
|
||||||
|
@ -52,7 +52,7 @@ from openslides.projector.projector import Widget
|
|||||||
from openslides.poll.views import PollFormView
|
from openslides.poll.views import PollFormView
|
||||||
|
|
||||||
from openslides.participant.api import gen_username, gen_password
|
from openslides.participant.api import gen_username, gen_password
|
||||||
from openslides.participant.models import User
|
from openslides.participant.models import User, Group
|
||||||
|
|
||||||
from openslides.agenda.models import Item
|
from openslides.agenda.models import Item
|
||||||
|
|
||||||
@ -579,6 +579,7 @@ def motion_import(request):
|
|||||||
users_generated = 0
|
users_generated = 0
|
||||||
motions_generated = 0
|
motions_generated = 0
|
||||||
motions_modified = 0
|
motions_modified = 0
|
||||||
|
groups_assigned = 0
|
||||||
with transaction.commit_on_success():
|
with transaction.commit_on_success():
|
||||||
dialect = csv.Sniffer().sniff(request.FILES['csvfile'].readline())
|
dialect = csv.Sniffer().sniff(request.FILES['csvfile'].readline())
|
||||||
dialect = csv_ext.patchup(dialect)
|
dialect = csv_ext.patchup(dialect)
|
||||||
@ -588,8 +589,14 @@ def motion_import(request):
|
|||||||
if lno < 1:
|
if lno < 1:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
(number, title, text, reason, first_name, last_name) = line[:6]
|
(number, title, text, reason, first_name, last_name, is_group) = line[:7]
|
||||||
|
if is_group.strip().lower() in ['y', 'j', 't', 'yes', 'ja', 'true', '1', 1]:
|
||||||
|
is_group = True
|
||||||
|
else:
|
||||||
|
is_group = False
|
||||||
|
print 'works for %d' % (lno + 1)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
print 'doesn\'t work for %d' % (lno + 1)
|
||||||
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
continue
|
continue
|
||||||
form = MotionForm({'title': title, 'text': text, 'reason': reason})
|
form = MotionForm({'title': title, 'text': text, 'reason': reason})
|
||||||
@ -605,24 +612,44 @@ def motion_import(request):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
continue
|
continue
|
||||||
# fetch existing users or create new users as needed
|
|
||||||
try:
|
if is_group:
|
||||||
user = User.objects.get(first_name=first_name, last_name=last_name)
|
# fetch existing groups or issue an error message
|
||||||
except User.DoesNotExist:
|
try:
|
||||||
user = None
|
user = Group.objects.get(name=last_name)
|
||||||
if user is None:
|
if user.group_as_person == False:
|
||||||
user = User()
|
messages.error(request, _('Ignoring line %d because the assigned group may not act as a person.') % (lno + 1))
|
||||||
user.last_name = last_name
|
continue
|
||||||
user.first_name = first_name
|
else:
|
||||||
user.username = gen_username(first_name, last_name)
|
user = get_person(user.person_id)
|
||||||
user.structure_level = ''
|
|
||||||
user.committee = ''
|
groups_assigned += 1
|
||||||
user.gender = ''
|
except Group.DoesNotExist:
|
||||||
user.type = ''
|
messages.error(request, _('Ignoring line %d because the assigned group does not exist.') % (lno + 1))
|
||||||
user.default_password = gen_password()
|
continue
|
||||||
user.save()
|
else:
|
||||||
user.reset_password()
|
# fetch existing users or create new users as needed
|
||||||
users_generated += 1
|
try:
|
||||||
|
user = User.objects.get(first_name=first_name, last_name=last_name)
|
||||||
|
except User.DoesNotExist:
|
||||||
|
user = None
|
||||||
|
if user is None:
|
||||||
|
if not first_name or not last_name:
|
||||||
|
messages.error(request, _('Ignoring line %d because it contains an incomplete first / last name pair.') % (lno + 1))
|
||||||
|
continue
|
||||||
|
|
||||||
|
user = User()
|
||||||
|
user.last_name = last_name
|
||||||
|
user.first_name = first_name
|
||||||
|
user.username = gen_username(first_name, last_name)
|
||||||
|
user.structure_level = ''
|
||||||
|
user.committee = ''
|
||||||
|
user.gender = ''
|
||||||
|
user.type = ''
|
||||||
|
user.default_password = gen_password()
|
||||||
|
user.save()
|
||||||
|
user.reset_password()
|
||||||
|
users_generated += 1
|
||||||
# create / modify the motion
|
# create / modify the motion
|
||||||
motion = None
|
motion = None
|
||||||
if number:
|
if number:
|
||||||
@ -653,6 +680,8 @@ def motion_import(request):
|
|||||||
'%d motions were successfully modified.', motions_modified) % motions_modified)
|
'%d motions were successfully modified.', motions_modified) % motions_modified)
|
||||||
if users_generated:
|
if users_generated:
|
||||||
messages.success(request, ungettext('%d new user was added.', '%d new users were added.', users_generated) % users_generated)
|
messages.success(request, ungettext('%d new user was added.', '%d new users were added.', users_generated) % users_generated)
|
||||||
|
if groups_assigned:
|
||||||
|
messages.success(request, ungettext('%d group assigned to motions.', '%d groups assigned to motions.', groups_assigned) % groups_assigned)
|
||||||
return redirect(reverse('motion_overview'))
|
return redirect(reverse('motion_overview'))
|
||||||
|
|
||||||
except csv.Error:
|
except csv.Error:
|
||||||
|
Loading…
Reference in New Issue
Block a user