commit
48b0966a8f
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenSlides 1.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-21 21:43+0100\n"
|
||||
"POT-Creation-Date: 2012-11-22 10:22+0100\n"
|
||||
"PO-Revision-Date: 2012-07-28 11:07+0200\n"
|
||||
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
|
||||
"Language-Team: support@openslides.de\n"
|
||||
@ -34,12 +34,12 @@ msgid "Parent item"
|
||||
msgstr "Elternelement"
|
||||
|
||||
#: 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
|
||||
msgid "Title"
|
||||
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
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
@ -230,8 +230,8 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
|
||||
#: assignment/views.py:579 assignment/templates/assignment/view.html:168
|
||||
#: assignment/templates/assignment/view.html:172
|
||||
#: assignment/templates/projector/Assignment.html:78
|
||||
#: assignment/templates/projector/Assignment.html:82 motion/models.py:574
|
||||
#: motion/views.py:804 motion/views.py:855
|
||||
#: assignment/templates/projector/Assignment.html:82 motion/models.py:579
|
||||
#: motion/views.py:842 motion/views.py:893
|
||||
#: motion/templates/motion/view.html:79
|
||||
#: motion/templates/projector/Motion.html:37 utils/utils.py:53
|
||||
#: utils/views.py:111
|
||||
@ -240,8 +240,8 @@ msgstr "Ja"
|
||||
|
||||
#: agenda/templates/agenda/overview.html:47 assignment/models.py:301
|
||||
#: assignment/views.py:580 assignment/templates/assignment/view.html:169
|
||||
#: assignment/templates/projector/Assignment.html:79 motion/models.py:574
|
||||
#: motion/views.py:804 motion/views.py:856
|
||||
#: assignment/templates/projector/Assignment.html:79 motion/models.py:579
|
||||
#: motion/views.py:842 motion/views.py:894
|
||||
#: motion/templates/motion/view.html:80
|
||||
#: motion/templates/projector/Motion.html:38 utils/utils.py:53
|
||||
#: utils/views.py:111
|
||||
@ -404,7 +404,7 @@ msgstr "Beschreibung"
|
||||
msgid "Comment on the ballot paper"
|
||||
msgstr "Kommentar für den Stimmzettel"
|
||||
|
||||
#: assignment/models.py:69 motion/models.py:335
|
||||
#: assignment/models.py:69 motion/models.py:337
|
||||
#, python-format
|
||||
msgid "%s is not a valid status."
|
||||
msgstr "%s ist kein gültiger Status."
|
||||
@ -449,7 +449,7 @@ msgstr "Darf selbst für Wahlen kandidieren"
|
||||
msgid "Can manage assignment"
|
||||
msgstr "Darf Wahlen verwalten"
|
||||
|
||||
#: assignment/models.py:302 motion/models.py:575
|
||||
#: assignment/models.py:302 motion/models.py:580
|
||||
msgid "Abstain"
|
||||
msgstr "Enthaltung"
|
||||
|
||||
@ -483,7 +483,7 @@ msgstr "Neue Wahl wurde erfolgreich angelegt."
|
||||
msgid "Election was successfully modified."
|
||||
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:701
|
||||
#: participant/views.py:506 participant/views.py:529 utils/views.py:225
|
||||
#: utils/views.py:243 utils/views.py:267
|
||||
msgid "Please check the form for errors."
|
||||
@ -585,7 +585,7 @@ msgstr "Wahlen: %s"
|
||||
msgid "Candidates"
|
||||
msgstr "Kandidaten/innen"
|
||||
|
||||
#: assignment/views.py:412 motion/views.py:797
|
||||
#: assignment/views.py:412 motion/views.py:835
|
||||
#: motion/templates/motion/view.html:44
|
||||
msgid "Vote results"
|
||||
msgstr "Abstimmungsergebnis"
|
||||
@ -625,7 +625,7 @@ msgstr "Ungültige Stimmen"
|
||||
#: assignment/templates/assignment/view.html:202
|
||||
#: assignment/templates/assignment/view.html:207
|
||||
#: 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:842
|
||||
#: motion/templates/motion/poll_view.html:35
|
||||
#: motion/templates/motion/view.html:84
|
||||
#: motion/templates/projector/Motion.html:42 poll/models.py:76
|
||||
@ -660,8 +660,8 @@ msgstr[0] "%d verfügbare Posten"
|
||||
msgstr[1] "%d verfügbare Posten"
|
||||
|
||||
#: assignment/views.py:580 assignment/templates/assignment/view.html:170
|
||||
#: assignment/templates/projector/Assignment.html:80 motion/views.py:804
|
||||
#: motion/views.py:857 motion/templates/motion/view.html:81
|
||||
#: assignment/templates/projector/Assignment.html:80 motion/views.py:842
|
||||
#: motion/views.py:895 motion/templates/motion/view.html:81
|
||||
#: motion/templates/projector/Motion.html:39
|
||||
msgid "Abstention"
|
||||
msgstr "Enthaltung"
|
||||
@ -722,7 +722,7 @@ msgstr "Wahl-Einstellungen"
|
||||
#: assignment/templates/assignment/overview.html:14
|
||||
#: assignment/templates/assignment/overview.html:27
|
||||
#: 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:813
|
||||
#: motion/templates/motion/overview.html:20
|
||||
#: motion/templates/motion/overview.html:40
|
||||
#: motion/templates/motion/view.html:34
|
||||
@ -844,7 +844,7 @@ msgid "was not a <br> candidate"
|
||||
msgstr "war kein Kandidat"
|
||||
|
||||
#: 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:842
|
||||
#: motion/templates/motion/view.html:82
|
||||
#: motion/templates/projector/Motion.html:40
|
||||
msgid "Invalid"
|
||||
@ -904,7 +904,7 @@ msgstr "Allgemein"
|
||||
|
||||
#: config/models.py:127 config/templates/config/version.html:5
|
||||
#: 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:827
|
||||
#: motion/templates/motion/view.html:214 motion/templates/motion/view.html:244
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
@ -942,7 +942,7 @@ msgstr "Willkommens-Widget"
|
||||
msgid "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:861
|
||||
#: motion/templates/motion/view.html:229 motion/templates/motion/view.html:249
|
||||
#: motion/templates/projector/Motion.html:77
|
||||
msgid "Reason"
|
||||
@ -956,14 +956,14 @@ msgstr "Triviale Änderung"
|
||||
msgid "Trivial changes don't create a new 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:780
|
||||
#: motion/templates/motion/overview.html:41
|
||||
#: motion/templates/motion/view.html:18
|
||||
#: motion/templates/projector/Motion.html:55
|
||||
msgid "Submitter"
|
||||
msgstr "Antragsteller/in"
|
||||
|
||||
#: motion/forms.py:44 motion/views.py:762 motion/templates/motion/view.html:22
|
||||
#: motion/forms.py:44 motion/views.py:800 motion/templates/motion/view.html:22
|
||||
msgid "Supporters"
|
||||
msgstr "Unterstützer/innen"
|
||||
|
||||
@ -1008,74 +1008,74 @@ msgid "Warning: Trivial changes undermine the motions autorisation system."
|
||||
msgstr ""
|
||||
"Warnung: Triviale Änderungen unterlaufen das Zulassungssystem von Anträgen."
|
||||
|
||||
#: motion/models.py:45
|
||||
#: motion/models.py:47
|
||||
msgid "Published"
|
||||
msgstr "Veröffentlicht"
|
||||
|
||||
#: motion/models.py:46
|
||||
#: motion/models.py:48
|
||||
msgid "Permitted"
|
||||
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
|
||||
msgid "Accepted"
|
||||
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
|
||||
msgid "Rejected"
|
||||
msgstr "Abgelehnt"
|
||||
|
||||
#: motion/models.py:49
|
||||
#: motion/models.py:51
|
||||
msgid "Withdrawed"
|
||||
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"
|
||||
msgstr "Vertagt"
|
||||
|
||||
# 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"
|
||||
msgstr "Nicht befasst"
|
||||
|
||||
# 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"
|
||||
msgstr "Verwiesen (in Ausschuss)"
|
||||
|
||||
#: motion/models.py:53
|
||||
#: motion/models.py:55
|
||||
msgid "Rejected (not authorized)"
|
||||
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"
|
||||
msgstr "Benötigt Review"
|
||||
|
||||
#: motion/models.py:103
|
||||
#: motion/models.py:105
|
||||
#, python-format
|
||||
msgid "Version %d authorized"
|
||||
msgstr "Version %d zugelassen"
|
||||
|
||||
#: motion/models.py:110
|
||||
#: motion/models.py:112
|
||||
#, python-format
|
||||
msgctxt "Rejected means not authorized"
|
||||
msgid "Version %d rejected"
|
||||
msgstr "Version verworfen"
|
||||
msgstr "Version %d verworfen"
|
||||
|
||||
#: motion/models.py:139
|
||||
#: motion/models.py:141
|
||||
msgid "Searching for supporters."
|
||||
msgstr "Auf Unterstützersuche."
|
||||
|
||||
#: motion/models.py:141
|
||||
#: motion/models.py:143
|
||||
msgid "Not yet authorized."
|
||||
msgstr "Noch nicht zugelassen."
|
||||
|
||||
#: motion/models.py:143
|
||||
#: motion/models.py:145
|
||||
msgid "Not yet authorized changes."
|
||||
msgstr "Noch nicht zugelassene Änderungen."
|
||||
|
||||
#: motion/models.py:223
|
||||
#: motion/models.py:225
|
||||
#, python-format
|
||||
msgid ""
|
||||
"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: "
|
||||
"%(changed_fields)s"
|
||||
|
||||
#: motion/models.py:234
|
||||
#: motion/models.py:236
|
||||
#, python-format
|
||||
msgid "Version %s created"
|
||||
msgstr "Version %s erstellt"
|
||||
|
||||
#: motion/models.py:244
|
||||
#: motion/models.py:246
|
||||
msgid "Supporters removed"
|
||||
msgstr "Unterstützer/innen gelöscht"
|
||||
|
||||
#: motion/models.py:253
|
||||
#: motion/models.py:255
|
||||
#, python-format
|
||||
msgid "Status reseted to: %s"
|
||||
msgstr "Status zurückgesetzt auf: %s"
|
||||
|
||||
#: motion/models.py:265
|
||||
#: motion/models.py:267
|
||||
#, python-format
|
||||
msgid "Supporter: +%s"
|
||||
msgstr "Unterstützer/in: +%s"
|
||||
|
||||
#: motion/models.py:278
|
||||
#: motion/models.py:280
|
||||
#, python-format
|
||||
msgid "Supporter: -%s"
|
||||
msgstr "Unterstützer/in: -%s"
|
||||
|
||||
#: motion/models.py:295
|
||||
#: motion/models.py:297
|
||||
#, python-format
|
||||
msgid "Number set: %s"
|
||||
msgstr "Nummer gesetzt: %s"
|
||||
|
||||
#: motion/models.py:308
|
||||
#: motion/models.py:310
|
||||
#, python-format
|
||||
msgid "Version %s authorized"
|
||||
msgstr "Version %s zugelassen"
|
||||
|
||||
#: motion/models.py:322
|
||||
#: motion/models.py:324
|
||||
#, python-format
|
||||
msgid "Version %s not authorized"
|
||||
msgstr "Version %s nicht zugelassen"
|
||||
|
||||
#: motion/models.py:338
|
||||
#: motion/models.py:340
|
||||
#, python-format
|
||||
msgid "The motion status is already '%s.'"
|
||||
msgstr "Der Antragsstatus ist bereits '%s'."
|
||||
|
||||
#: motion/models.py:346
|
||||
#: motion/models.py:348
|
||||
#, python-format
|
||||
msgid ""
|
||||
"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 "
|
||||
"'%(newstatus)s' setzen."
|
||||
|
||||
#: motion/models.py:354
|
||||
#: motion/models.py:356
|
||||
msgid "Status modified"
|
||||
msgstr "Status geändert"
|
||||
|
||||
#: motion/models.py:446
|
||||
#: motion/models.py:449 motion/models.py:451
|
||||
msgid "by"
|
||||
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/projector/Motion.html:65
|
||||
#: participant/templates/participant/personal_info_widget.html:13
|
||||
@ -1152,38 +1152,38 @@ msgstr "von"
|
||||
msgid "no number"
|
||||
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:28
|
||||
msgid "motion"
|
||||
msgstr "Antrag"
|
||||
|
||||
#: motion/models.py:480
|
||||
#: motion/models.py:485
|
||||
msgid "Poll created"
|
||||
msgstr "Abstimmung erstellt"
|
||||
|
||||
#: motion/models.py:531
|
||||
#: motion/models.py:536
|
||||
msgid "Can see motions"
|
||||
msgstr "Darf Anträge sehen"
|
||||
|
||||
#: motion/models.py:532
|
||||
#: motion/models.py:537
|
||||
msgid "Can create motions"
|
||||
msgstr "Darf Anträge erstellen"
|
||||
|
||||
#: motion/models.py:533
|
||||
#: motion/models.py:538
|
||||
msgid "Can support motions"
|
||||
msgstr "Darf Anträge unterstützen"
|
||||
|
||||
#: motion/models.py:534
|
||||
#: motion/models.py:539
|
||||
msgid "Can manage motions"
|
||||
msgstr "Darf Anträge verwalten"
|
||||
|
||||
#: motion/models.py:601
|
||||
#: motion/models.py:606
|
||||
msgid "The assembly may decide,"
|
||||
msgstr "Die Versammlung möge beschließen,"
|
||||
|
||||
#: motion/models.py:604 motion/views.py:692 motion/views.py:917
|
||||
#: motion/views.py:928 motion/templates/motion/base_motion.html:9
|
||||
#: motion/models.py:609 motion/views.py:730 motion/views.py:955
|
||||
#: motion/views.py:966 motion/templates/motion/base_motion.html:9
|
||||
#: motion/templates/motion/overview.html:7
|
||||
#: motion/templates/motion/overview.html:10
|
||||
msgid "Motions"
|
||||
@ -1330,44 +1330,77 @@ msgstr "FEHLER beim Zurückweisen der Version."
|
||||
msgid "Do you really want to reject version <b>%s</b>?"
|
||||
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:606 participant/api.py:76
|
||||
#: motion/views.py:599 motion/views.py:603 motion/views.py:609
|
||||
#: motion/views.py:612 participant/api.py:76
|
||||
#, python-format
|
||||
msgid "Ignoring malformed line %d in import file."
|
||||
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
|
||||
|
||||
#: motion/views.py:649
|
||||
#: motion/views.py:620
|
||||
#, 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:629
|
||||
msgid "Created by motion import."
|
||||
msgstr "Erstellt durch Antragsimport."
|
||||
|
||||
#: motion/views.py:643
|
||||
#, 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:681
|
||||
#, python-format
|
||||
msgid "%d motion was successfully imported."
|
||||
msgid_plural "%d motions were successfully imported."
|
||||
msgstr[0] "%d Antrag wurde erfolgreich importiert."
|
||||
msgstr[1] "%d Anträge wurden erfolgreich importiert."
|
||||
|
||||
#: motion/views.py:652
|
||||
#: motion/views.py:684
|
||||
#, python-format
|
||||
msgid "%d motion was successfully modified."
|
||||
msgid_plural "%d motions were successfully modified."
|
||||
msgstr[0] "%d Antrag wurde erfolgreich geändert."
|
||||
msgstr[1] "%d Anträge wurden erfolgreich geändert."
|
||||
|
||||
#: motion/views.py:655
|
||||
#: motion/views.py:687
|
||||
#, 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."
|
||||
|
||||
#: motion/views.py:659 participant/api.py:92
|
||||
#: motion/views.py:690
|
||||
#, python-format
|
||||
msgid "%d new group was added."
|
||||
msgid_plural "%d new groups were added."
|
||||
msgstr[0] "%d neue Gruppe wurde erstellt."
|
||||
msgstr[1] "%d neue Gruppen wurden erstellt."
|
||||
|
||||
#: motion/views.py:693
|
||||
#, 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:697 participant/api.py:92
|
||||
msgid "Import aborted because of severe errors in the input file."
|
||||
msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen."
|
||||
|
||||
#: motion/views.py:661 participant/api.py:94
|
||||
#: motion/views.py:699 participant/api.py:94
|
||||
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!"
|
||||
|
||||
#: motion/views.py:665
|
||||
#: motion/views.py:703
|
||||
msgid ""
|
||||
"Attention: Existing motions will be modified if you import new motions with "
|
||||
"the same number."
|
||||
@ -1375,7 +1408,7 @@ msgstr ""
|
||||
"Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit "
|
||||
"identischer Nummer importieren."
|
||||
|
||||
#: motion/views.py:666
|
||||
#: motion/views.py:704
|
||||
msgid ""
|
||||
"Attention: Importing an motions without a number multiple times will create "
|
||||
"duplicates."
|
||||
@ -1383,7 +1416,7 @@ msgstr ""
|
||||
"Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate "
|
||||
"entstehen."
|
||||
|
||||
#: motion/views.py:699 motion/views.py:837
|
||||
#: motion/views.py:737 motion/views.py:875
|
||||
#: motion/templates/motion/poll_view.html:7
|
||||
#: motion/templates/motion/poll_view.html:12
|
||||
#: motion/templates/motion/view.html:7 motion/templates/motion/view.html:206
|
||||
@ -1393,21 +1426,21 @@ msgstr ""
|
||||
msgid "Motion"
|
||||
msgstr "Antrag"
|
||||
|
||||
#: motion/views.py:713 motion/templates/motion/overview.html:84
|
||||
#: motion/views.py:751 motion/templates/motion/overview.html:84
|
||||
msgid "No motions available."
|
||||
msgstr "Keine Anträge vorhanden."
|
||||
|
||||
#: motion/views.py:718 motion/views.py:720 motion/views.py:735
|
||||
#: motion/views.py:737 motion/templates/motion/base_motion.html:24
|
||||
#: motion/views.py:756 motion/views.py:758 motion/views.py:773
|
||||
#: motion/views.py:775 motion/templates/motion/base_motion.html:24
|
||||
#: motion/templates/projector/Motion.html:63
|
||||
msgid "Motion No."
|
||||
msgstr "Antrag Nr."
|
||||
|
||||
#: motion/views.py:752
|
||||
#: motion/views.py:790
|
||||
msgid "Signature"
|
||||
msgstr "Unterschrift"
|
||||
|
||||
#: motion/views.py:803 motion/templates/motion/base_motion.html:55
|
||||
#: motion/views.py:841 motion/templates/motion/base_motion.html:55
|
||||
#: motion/templates/motion/poll_view.html:8
|
||||
#: motion/templates/motion/poll_view.html:13
|
||||
#: motion/templates/motion/view.html:66 motion/templates/motion/view.html:74
|
||||
@ -1415,21 +1448,21 @@ msgstr "Unterschrift"
|
||||
msgid "Vote"
|
||||
msgstr "Abstimmung"
|
||||
|
||||
#: motion/views.py:837
|
||||
#: motion/views.py:875
|
||||
msgid "Poll"
|
||||
msgstr "Abstimmung"
|
||||
|
||||
#: motion/views.py:851
|
||||
#: motion/views.py:889
|
||||
#, python-format
|
||||
msgid "Motion No. %s"
|
||||
msgstr "Antrag Nr. %s"
|
||||
|
||||
#: motion/views.py:853
|
||||
#: motion/views.py:891
|
||||
#, python-format
|
||||
msgid "%d. Vote"
|
||||
msgstr "%d. Abstimmung"
|
||||
|
||||
#: motion/views.py:910
|
||||
#: motion/views.py:948
|
||||
msgid "Motion settings successfully saved."
|
||||
msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert."
|
||||
|
||||
@ -1486,12 +1519,13 @@ msgstr "Wählen Sie eine CSV-Datei zum Importieren von Anträgen aus!"
|
||||
#: motion/templates/motion/import.html:11
|
||||
msgid ""
|
||||
"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)"
|
||||
"first_name, last_name, is_group}</code> (<code>number</code>, <code>reason</"
|
||||
"code> and <code>is_group</code> are optional and may be empty)"
|
||||
msgstr ""
|
||||
"Erforderliche kommaseparierte Werte: <code>{Nummer, Titel, Text, Begründung, "
|
||||
"Vorname, Nachname}</code> (<code>Nummer</code> und <code>Begründung</code> "
|
||||
"sind optional und können auch leer sein)"
|
||||
"Vorname, Nachname, Gruppenantrag}</code> (<code>Nummer</code>, "
|
||||
"<code>Begründung</code> und <code>Gruppenantrag</code> sind optional und "
|
||||
"können auch leer sein)"
|
||||
|
||||
#: motion/templates/motion/import.html:13
|
||||
#: participant/templates/participant/import.html:13
|
||||
@ -2021,10 +2055,12 @@ msgid "Reset to First Password"
|
||||
msgstr "Auf Erst-Passwort zurücksetzen"
|
||||
|
||||
#: participant/templates/participant/group_detail.html:14
|
||||
#: participant/templates/projector/GroupSlide.html:13
|
||||
msgid "Members"
|
||||
msgstr "Mitglieder"
|
||||
|
||||
#: participant/templates/participant/group_detail.html:19
|
||||
#: participant/templates/projector/GroupSlide.html:22
|
||||
msgid "No members available."
|
||||
msgstr "Keine Mitglieder vorhanden."
|
||||
|
||||
@ -2354,6 +2390,11 @@ msgstr "undefinierter-dateiname"
|
||||
msgid "Enter valid JSON"
|
||||
msgstr "Gebe valides JSON ein"
|
||||
|
||||
#~ 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."
|
||||
|
||||
#~ msgid "posts"
|
||||
#~ msgstr "Posten"
|
||||
|
||||
|
@ -28,6 +28,8 @@ from openslides.config.signals import default_config_value
|
||||
from openslides.poll.models import (BaseOption, BasePoll, CountVotesCast,
|
||||
CountInvalid, BaseVote)
|
||||
|
||||
from openslides.participant.models import User, Group
|
||||
|
||||
from openslides.projector.api import register_slidemodel
|
||||
from openslides.projector.models import SlideMixin
|
||||
|
||||
@ -443,7 +445,10 @@ class Motion(models.Model, SlideMixin):
|
||||
self.log = ""
|
||||
self.log += u"%s | %s" % (datetime.now().strftime("%d.%m.%Y %H:%M:%S"), _propper_unicode(text))
|
||||
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.save()
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
<h1>{% trans "Import motions" %}</h1>
|
||||
<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>
|
||||
{% trans 'Required CSV file encoding: UTF-8 (Unicode).' %}
|
||||
</p>
|
||||
|
@ -52,7 +52,7 @@ from openslides.projector.projector import Widget
|
||||
from openslides.poll.views import PollFormView
|
||||
|
||||
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
|
||||
|
||||
@ -579,6 +579,8 @@ def motion_import(request):
|
||||
users_generated = 0
|
||||
motions_generated = 0
|
||||
motions_modified = 0
|
||||
groups_assigned = 0
|
||||
groups_generated = 0
|
||||
with transaction.commit_on_success():
|
||||
dialect = csv.Sniffer().sniff(request.FILES['csvfile'].readline())
|
||||
dialect = csv_ext.patchup(dialect)
|
||||
@ -588,7 +590,11 @@ def motion_import(request):
|
||||
if lno < 1:
|
||||
continue
|
||||
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
|
||||
except ValueError:
|
||||
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||
continue
|
||||
@ -605,24 +611,50 @@ def motion_import(request):
|
||||
except ValueError:
|
||||
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||
continue
|
||||
# fetch existing users or create new users as needed
|
||||
try:
|
||||
user = User.objects.get(first_name=first_name, last_name=last_name)
|
||||
except User.DoesNotExist:
|
||||
user = None
|
||||
if user is None:
|
||||
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
|
||||
|
||||
if is_group:
|
||||
# fetch existing groups or issue an error message
|
||||
try:
|
||||
user = Group.objects.get(name=last_name)
|
||||
if user.group_as_person == False:
|
||||
messages.error(request, _('Ignoring line %d because the assigned group may not act as a person.') % (lno + 1))
|
||||
continue
|
||||
else:
|
||||
user = get_person(user.person_id)
|
||||
|
||||
groups_assigned += 1
|
||||
except Group.DoesNotExist:
|
||||
group = Group()
|
||||
group.group_as_person = True
|
||||
group.description = _('Created by motion import.')
|
||||
group.name = last_name
|
||||
group.save()
|
||||
groups_generated += 1
|
||||
|
||||
user = get_person(group.person_id)
|
||||
else:
|
||||
# fetch existing users or create new users as needed
|
||||
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
|
||||
motion = None
|
||||
if number:
|
||||
@ -653,6 +685,12 @@ def motion_import(request):
|
||||
'%d motions were successfully modified.', motions_modified) % motions_modified)
|
||||
if users_generated:
|
||||
messages.success(request, ungettext('%d new user was added.', '%d new users were added.', users_generated) % users_generated)
|
||||
|
||||
if groups_generated:
|
||||
messages.success(request, ungettext('%d new group was added.', '%d new groups were added.', groups_generated) % groups_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'))
|
||||
|
||||
except csv.Error:
|
||||
|
Loading…
Reference in New Issue
Block a user