From b5a5acbf2c33dc1280e6a00dbc521a4904b00dcf Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Wed, 15 May 2013 23:26:24 +0200 Subject: [PATCH] Some last (template) improvements for next release - Added dataTable function for group overview table. - Added default form help text for groups and an explanation for group overview table. - Updated translation. - Translate group name in form. - Username: FirstName instead of First_Name - Hide group 'registered' from UserForm - Linked persons/candidates/submitter etc. to UserView - Fixed permissions in template Translation --- .../assignment/templates/assignment/view.html | 31 +- openslides/locale/de/LC_MESSAGES/django.mo | Bin 37693 -> 38627 bytes openslides/locale/de/LC_MESSAGES/django.po | 679 +++++++++--------- openslides/locale/de/LC_MESSAGES/djangojs.mo | Bin 2613 -> 2578 bytes openslides/locale/de/LC_MESSAGES/djangojs.po | 24 +- .../templates/mediafile/mediafile_list.html | 2 +- .../templates/motion/motion_detail.html | 35 +- openslides/participant/api.py | 8 +- openslides/participant/forms.py | 32 +- .../templates/participant/group_detail.html | 23 +- .../templates/participant/group_overview.html | 27 +- .../templates/participant/group_widget.html | 2 +- .../templates/participant/import.html | 1 - .../templates/participant/overview.html | 55 +- .../templates/participant/user_detail.html | 24 +- openslides/participant/views.py | 15 +- .../static/javascript/dataTables.bootstrap.js | 2 +- openslides/utils/auth/AnonymousAuth.py | 6 +- 18 files changed, 483 insertions(+), 483 deletions(-) diff --git a/openslides/assignment/templates/assignment/view.html b/openslides/assignment/templates/assignment/view.html index 164310ada..f08405f96 100644 --- a/openslides/assignment/templates/assignment/view.html +++ b/openslides/assignment/templates/assignment/view.html @@ -2,6 +2,7 @@ {% load i18n %} {% load staticfiles %} +{% load tags %} {% block title %}{{ block.super }} – {% trans "Election" %} "{{ assignment }}"{% endblock %} @@ -18,36 +19,32 @@ {{ assignment }} {% trans "Back to overview" %} + PDF {% if perms.projector.can_manage_projector %} {% endif %} + {% if perms.assignment.can_manage_assignment or perms.agenda.can_manage_agenda %} + {% endif %} @@ -67,7 +64,7 @@
    {% for person in assignment.get_participants %}
  1. - {{ person }} + {{ person }} {% if perms.assignment.can_manage_assignment %} {% if assignment.status == "sea" or assignment.status == "vot" %} @@ -126,7 +123,7 @@
      {% for person in blocked_candidates %}
    • - {{ person }} + {{ person }} @@ -196,7 +193,7 @@ {% endif %} {% endif %} - {{ candidate }} + {{ candidate }} {% for vote in poll_list %} diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index b07af6af845ba997cf976e01d7332df28cd1186d..fc98a022e7d45c72b9c93eaa3347af8e356784db 100644 GIT binary patch delta 12648 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 delta 11670 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\n" "Language-Team: support@openslides.de\n" @@ -86,21 +86,21 @@ msgid "Organizational item" msgstr "Organisatorischer Eintrag" #: agenda/models.py:44 core/signals.py:76 mediafile/models.py:32 -#: mediafile/templates/mediafile/mediafile_list.html:18 motion/forms.py:33 -#: motion/models.py:548 participant/models.py:39 participant/views.py:182 -#: participant/templates/participant/overview.html:59 projector/models.py:27 +#: mediafile/templates/mediafile/mediafile_list.html:18 motion/forms.py:34 +#: motion/models.py:551 participant/models.py:39 participant/views.py:193 +#: participant/templates/participant/overview.html:48 projector/models.py:27 msgid "Title" msgstr "Titel" -#: agenda/models.py:49 motion/forms.py:38 motion/models.py:551 +#: agenda/models.py:49 motion/forms.py:39 motion/models.py:554 #: projector/models.py:28 msgid "Text" msgstr "Text" #: agenda/models.py:54 agenda/templates/agenda/overview.html:75 #: agenda/templates/agenda/view.html:51 participant/models.py:51 -#: participant/templates/participant/overview.html:66 -#: participant/templates/participant/user_detail.html:47 +#: participant/templates/participant/overview.html:55 +#: participant/templates/participant/user_detail.html:67 msgid "Comment" msgstr "Kommentar" @@ -247,17 +247,17 @@ msgstr "Neuer Eintrag" #: agenda/templates/agenda/edit.html:22 agenda/templates/agenda/view.html:24 #: assignment/templates/assignment/edit.html:22 -#: assignment/templates/assignment/view.html:20 +#: assignment/templates/assignment/view.html:21 #: mediafile/templates/mediafile/mediafile_form.html:22 #: motion/templates/motion/category_list.html:15 -#: motion/templates/motion/motion_detail.html:24 +#: motion/templates/motion/motion_detail.html:23 #: motion/templates/motion/motion_form.html:37 #: motion/templates/motion/motion_form_csv_import.html:11 #: participant/templates/participant/edit.html:22 #: participant/templates/participant/group_detail.html:12 #: participant/templates/participant/group_edit.html:22 #: participant/templates/participant/import.html:11 -#: participant/templates/participant/user_detail.html:12 +#: participant/templates/participant/user_detail.html:13 #: projector/templates/projector/new.html:11 #: projector/templates/projector/select_widgets.html:10 msgid "Back to overview" @@ -274,7 +274,7 @@ msgstr "Zurück zur Übersicht" #: motion/templates/motion/poll_form.html:73 #: participant/templates/participant/edit.html:36 #: participant/templates/participant/group_edit.html:31 -#: participant/templates/participant/import.html:39 +#: participant/templates/participant/import.html:38 msgid "Cancel" msgstr "Abbrechen" @@ -287,7 +287,7 @@ msgstr "Abbrechen" #: motion/templates/motion/motion_form_csv_import.html:44 #: participant/templates/participant/edit.html:39 #: participant/templates/participant/group_edit.html:34 -#: participant/templates/participant/import.html:42 +#: participant/templates/participant/import.html:41 #: projector/templates/projector/new.html:19 msgid "required" msgstr "erforderlich" @@ -304,15 +304,15 @@ msgstr "Rednerliste projizieren" #: agenda/templates/agenda/item_row.html:21 #: agenda/templates/agenda/widget.html:26 #: assignment/templates/assignment/overview.html:61 -#: assignment/templates/assignment/view.html:170 +#: assignment/templates/assignment/view.html:167 #: assignment/templates/assignment/widget.html:10 #: mediafile/templates/mediafile/mediafile_list.html:37 #: motion/templates/motion/category_list.html:30 #: motion/templates/motion/motion_list.html:82 #: motion/templates/motion/widget.html:10 -#: participant/templates/participant/group_overview.html:33 +#: participant/templates/participant/group_overview.html:52 #: participant/templates/participant/group_widget.html:11 -#: participant/templates/participant/overview.html:116 +#: participant/templates/participant/overview.html:105 #: participant/templates/participant/user_widget.html:10 #: projector/templates/projector/custom_slide_widget.html:26 msgid "Edit" @@ -321,13 +321,13 @@ msgstr "Bearbeiten" #: agenda/templates/agenda/item_row.html:24 #: agenda/templates/agenda/view.html:125 #: assignment/templates/assignment/overview.html:64 -#: assignment/templates/assignment/view.html:171 +#: assignment/templates/assignment/view.html:168 #: mediafile/templates/mediafile/mediafile_list.html:38 #: motion/templates/motion/category_list.html:33 -#: motion/templates/motion/motion_detail.html:133 +#: motion/templates/motion/motion_detail.html:132 #: motion/templates/motion/motion_list.html:85 -#: participant/templates/participant/group_overview.html:37 -#: participant/templates/participant/overview.html:120 +#: participant/templates/participant/group_overview.html:56 +#: participant/templates/participant/overview.html:109 #: projector/templates/projector/custom_slide_widget.html:23 msgid "Delete" msgstr "Löschen" @@ -362,12 +362,12 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" #: agenda/templates/agenda/overview.html:34 #: agenda/templates/agenda/view.html:82 assignment/models.py:288 -#: assignment/views.py:580 assignment/templates/assignment/view.html:204 -#: assignment/templates/assignment/view.html:208 +#: assignment/views.py:580 assignment/templates/assignment/view.html:201 +#: assignment/templates/assignment/view.html:205 #: assignment/templates/projector/Assignment.html:78 -#: assignment/templates/projector/Assignment.html:82 motion/models.py:708 +#: assignment/templates/projector/Assignment.html:82 motion/models.py:711 #: motion/pdf.py:147 motion/pdf.py:269 -#: motion/templates/motion/motion_detail.html:208 +#: motion/templates/motion/motion_detail.html:207 #: motion/templates/projector/Motion.html:27 utils/utils.py:46 #: utils/views.py:169 msgid "Yes" @@ -375,10 +375,10 @@ msgstr "Ja" #: agenda/templates/agenda/overview.html:35 #: agenda/templates/agenda/view.html:83 assignment/models.py:288 -#: assignment/views.py:581 assignment/templates/assignment/view.html:205 -#: assignment/templates/projector/Assignment.html:79 motion/models.py:708 +#: assignment/views.py:581 assignment/templates/assignment/view.html:202 +#: assignment/templates/projector/Assignment.html:79 motion/models.py:711 #: motion/pdf.py:147 motion/pdf.py:270 -#: motion/templates/motion/motion_detail.html:209 +#: motion/templates/motion/motion_detail.html:208 #: motion/templates/projector/Motion.html:28 utils/utils.py:46 #: utils/views.py:169 msgid "No" @@ -389,7 +389,7 @@ msgstr "Nein" #: mediafile/templates/mediafile/mediafile_list.html:12 #: motion/templates/motion/category_list.html:13 #: motion/templates/motion/motion_list.html:24 -#: participant/templates/participant/group_overview.html:11 +#: participant/templates/participant/group_overview.html:22 #: participant/templates/participant/overview.html:23 #: projector/templates/projector/custom_slide_widget.html:39 msgid "New" @@ -429,10 +429,10 @@ msgstr "Dauer" #: assignment/templates/assignment/overview.html:35 #: mediafile/templates/mediafile/mediafile_list.html:24 #: motion/templates/motion/category_list.html:23 -#: motion/templates/motion/motion_detail.html:103 +#: motion/templates/motion/motion_detail.html:102 #: motion/templates/motion/motion_list.html:47 -#: participant/templates/participant/group_overview.html:19 -#: participant/templates/participant/overview.html:68 +#: participant/templates/participant/group_overview.html:32 +#: participant/templates/participant/overview.html:57 msgid "Actions" msgstr "Aktionen" @@ -459,8 +459,10 @@ msgid "Next speaker" msgstr "Nächster Redner" #: agenda/templates/agenda/view.html:28 -#: assignment/templates/assignment/view.html:29 +#: assignment/templates/assignment/view.html:32 #: motion/templates/motion/motion_detail.html:34 +#: participant/templates/participant/group_detail.html:22 +#: participant/templates/participant/user_detail.html:23 msgid "More actions" msgstr "Mehr Aktionen" @@ -472,12 +474,12 @@ msgstr "Eintrag löschen" #: agenda/templates/agenda/widget.html:23 #: assignment/templates/assignment/overview.html:56 #: assignment/templates/assignment/widget.html:7 -#: motion/templates/motion/motion_detail.html:129 +#: motion/templates/motion/motion_detail.html:128 #: motion/templates/motion/motion_list.html:77 #: motion/templates/motion/widget.html:7 -#: participant/templates/participant/group_overview.html:29 +#: participant/templates/participant/group_overview.html:48 #: participant/templates/participant/group_widget.html:8 -#: participant/templates/participant/overview.html:112 +#: participant/templates/participant/overview.html:101 #: participant/templates/participant/user_widget.html:7 #: projector/templates/projector/custom_slide_widget.html:6 #: projector/templates/projector/custom_slide_widget.html:19 @@ -534,7 +536,7 @@ msgstr "Setze mich auf die Liste" #: agenda/templates/agenda/view.html:149 #: assignment/templates/assignment/poll_view.html:83 -#: assignment/templates/assignment/view.html:112 +#: assignment/templates/assignment/view.html:109 #: motion/templates/motion/poll_form.html:70 #: projector/templates/projector/overlay_message_widget.html:9 #: templates/formbuttons_saveapply.html:7 @@ -542,7 +544,7 @@ msgid "Apply" msgstr "Übernehmen" #: agenda/templates/agenda/view.html:151 -#: assignment/templates/assignment/view.html:114 +#: assignment/templates/assignment/view.html:111 msgid "Add new participant" msgstr "Neue/n Teilnehmer/in hinzufügen" @@ -558,7 +560,7 @@ msgid "Preview" msgstr "Vorschau" #: assignment/forms.py:24 assignment/models.py:49 assignment/views.py:370 -#: assignment/templates/assignment/view.html:273 +#: assignment/templates/assignment/view.html:270 #: assignment/templates/projector/Assignment.html:21 msgid "Number of available posts" msgstr "Anzahl der zur Wahl stehenden Posten" @@ -567,15 +569,15 @@ msgstr "Anzahl der zur Wahl stehenden Posten" msgid "Nominate a participant" msgstr "Teilnehmer/in vorschlagen" -#: assignment/models.py:42 assignment/templates/assignment/view.html:282 +#: assignment/models.py:42 assignment/templates/assignment/view.html:279 msgid "Searching for candidates" msgstr "Auf Kandidatensuche" -#: assignment/models.py:43 assignment/templates/assignment/view.html:286 +#: assignment/models.py:43 assignment/templates/assignment/view.html:283 msgid "Voting" msgstr "Im Wahlvorgang" -#: assignment/models.py:44 assignment/templates/assignment/view.html:290 +#: assignment/models.py:44 assignment/templates/assignment/view.html:287 msgid "Finished" msgstr "Abgeschlossen" @@ -583,7 +585,7 @@ msgstr "Abgeschlossen" msgid "Name" msgstr "Name" -#: assignment/models.py:48 assignment/templates/assignment/view.html:57 +#: assignment/models.py:48 assignment/templates/assignment/view.html:54 #: participant/models.py:139 msgid "Description" msgstr "Beschreibung" @@ -637,7 +639,7 @@ msgstr "Darf selbst für Wahlen kandidieren" msgid "Can manage assignment" msgstr "Darf Wahlen verwalten" -#: assignment/models.py:288 motion/models.py:708 +#: assignment/models.py:288 motion/models.py:711 msgid "Abstain" msgstr "Enthaltung" @@ -645,7 +647,7 @@ msgstr "Enthaltung" msgid "Votes" msgstr "Stimmen" -#: assignment/models.py:307 motion/models.py:722 +#: assignment/models.py:307 motion/models.py:725 #, python-format msgid "Ballot %d" msgstr "Wahlgang %d" @@ -719,7 +721,7 @@ msgstr "Neue Wahl wurde erfolgreich angelegt." msgid "Election was successfully modified." msgstr "Wahl wurde erfolgreich geändert." -#: assignment/views.py:117 participant/views.py:443 participant/views.py:467 +#: assignment/views.py:117 participant/views.py:454 participant/views.py:478 #: utils/views.py:318 utils/views.py:340 utils/views.py:350 msgid "Please check the form for errors." msgstr "Bitte kontrollieren Sie das Formular nach Fehlern." @@ -788,7 +790,7 @@ msgid "not elected" msgstr "nicht gewählt" #: assignment/views.py:282 assignment/views.py:471 -#: assignment/templates/assignment/view.html:77 +#: assignment/templates/assignment/view.html:74 msgid "elected" msgstr "gewählt" @@ -813,22 +815,22 @@ msgstr "Wahlen: %s" #: assignment/templates/assignment/overview.html:33 #: assignment/templates/assignment/overview.html:47 #: assignment/templates/assignment/poll_view.html:34 -#: assignment/templates/assignment/view.html:66 -#: assignment/templates/assignment/view.html:155 +#: assignment/templates/assignment/view.html:63 +#: assignment/templates/assignment/view.html:152 #: assignment/templates/projector/Assignment.html:38 #: assignment/templates/projector/Assignment.html:56 msgid "Candidates" msgstr "Kandidaten/innen" #: assignment/views.py:402 motion/pdf.py:133 -#: motion/templates/motion/motion_detail.html:195 +#: motion/templates/motion/motion_detail.html:194 msgid "Vote results" msgstr "Abstimmungsergebnis" #: assignment/views.py:406 assignment/templates/assignment/poll_view.html:5 #: assignment/templates/assignment/poll_view.html:11 -#: assignment/templates/assignment/view.html:150 -#: assignment/templates/assignment/view.html:158 +#: assignment/templates/assignment/view.html:147 +#: assignment/templates/assignment/view.html:155 #: assignment/templates/projector/Assignment.html:59 msgid "ballot" msgstr "Wahlgang" @@ -849,18 +851,18 @@ msgstr "" "E: %(ABSTAIN)s" #: assignment/views.py:445 assignment/templates/assignment/poll_view.html:51 -#: assignment/templates/assignment/view.html:222 +#: assignment/templates/assignment/view.html:219 #: assignment/templates/projector/Assignment.html:96 #: motion/templates/motion/poll_form.html:47 msgid "Invalid votes" msgstr "Ungültige Stimmen" #: assignment/views.py:452 assignment/templates/assignment/poll_view.html:61 -#: assignment/templates/assignment/view.html:238 -#: assignment/templates/assignment/view.html:243 +#: assignment/templates/assignment/view.html:235 +#: assignment/templates/assignment/view.html:240 #: assignment/templates/projector/Assignment.html:109 #: assignment/templates/projector/Assignment.html:115 motion/pdf.py:148 -#: motion/templates/motion/motion_detail.html:213 +#: motion/templates/motion/motion_detail.html:212 #: motion/templates/motion/poll_form.html:51 #: motion/templates/projector/Motion.html:32 poll/models.py:76 msgid "Votes cast" @@ -869,7 +871,7 @@ msgstr "Abgegebene Stimmen" #: assignment/views.py:512 assignment/views.py:530 #: assignment/templates/assignment/overview.html:32 #: assignment/templates/assignment/poll_view.html:5 -#: assignment/templates/assignment/view.html:6 +#: assignment/templates/assignment/view.html:7 #: assignment/templates/projector/Assignment.html:27 msgid "Election" msgstr "Wahl" @@ -893,16 +895,16 @@ msgid_plural "%d available posts" msgstr[0] "%d verfügbare Posten" msgstr[1] "%d verfügbare Posten" -#: assignment/views.py:581 assignment/templates/assignment/view.html:206 +#: assignment/views.py:581 assignment/templates/assignment/view.html:203 #: assignment/templates/projector/Assignment.html:80 motion/pdf.py:147 -#: motion/pdf.py:271 motion/templates/motion/motion_detail.html:210 +#: motion/pdf.py:271 motion/templates/motion/motion_detail.html:209 #: motion/templates/projector/Motion.html:29 msgid "Abstention" msgstr "Enthaltung" #: assignment/templates/assignment/edit.html:8 #: assignment/templates/assignment/edit.html:17 -#: assignment/templates/assignment/view.html:34 +#: assignment/templates/assignment/view.html:37 msgid "Edit election" msgstr "Wahl bearbeiten" @@ -917,9 +919,9 @@ msgid "Print all elections as PDF" msgstr "Alle Wahlen als PDF drucken" #: assignment/templates/assignment/overview.html:34 -#: assignment/templates/assignment/view.html:270 +#: assignment/templates/assignment/view.html:267 #: assignment/templates/projector/Assignment.html:18 -#: motion/templates/motion/motion_detail.html:187 +#: motion/templates/motion/motion_detail.html:186 #: motion/templates/motion/motion_list.html:41 #: motion/templates/projector/Motion.html:12 msgid "Status" @@ -935,15 +937,16 @@ msgid "Elected" msgstr "Gewählt" #: assignment/templates/assignment/overview.html:68 +#: assignment/templates/assignment/view.html:22 msgid "Print election as PDF" -msgstr "Wahle als PDF drucken" +msgstr "Wahl als PDF drucken" #: assignment/templates/assignment/poll_view.html:14 msgid "Back to election" msgstr "Zurück zur Wahl" #: assignment/templates/assignment/poll_view.html:17 -#: assignment/templates/assignment/view.html:23 +#: assignment/templates/assignment/view.html:25 msgid "Show election" msgstr "Wahl anzeigen" @@ -979,85 +982,81 @@ msgstr "Stimmzettel als PDF" msgid "Save" msgstr "Speichern" -#: assignment/templates/assignment/view.html:36 +#: assignment/templates/assignment/view.html:39 msgid "Delete election" msgstr "Wahl löschen" -#: assignment/templates/assignment/view.html:40 -msgid "Ballot" -msgstr "Wahlgang" - -#: assignment/templates/assignment/view.html:46 +#: assignment/templates/assignment/view.html:43 #: motion/templates/motion/motion_detail.html:49 msgid "New agenda item" msgstr "Neuer Tagesordnungseintrag" -#: assignment/templates/assignment/view.html:73 -#: assignment/templates/assignment/view.html:130 +#: assignment/templates/assignment/view.html:70 +#: assignment/templates/assignment/view.html:127 msgid "Remove candidate" msgstr "Kandidate/in entfernen" -#: assignment/templates/assignment/view.html:80 +#: assignment/templates/assignment/view.html:77 msgid "Mark candidate as not elected" msgstr "Kandidat/in als nicht gewählt markieren" -#: assignment/templates/assignment/view.html:88 +#: assignment/templates/assignment/view.html:85 #: assignment/templates/projector/Assignment.html:44 msgid "No candidates available." msgstr "Keine Kandidaten/innen vorhanden." -#: assignment/templates/assignment/view.html:98 +#: assignment/templates/assignment/view.html:95 msgid "Withdraw self candidature" msgstr "Eigene Kandidatur zurückziehen" -#: assignment/templates/assignment/view.html:102 +#: assignment/templates/assignment/view.html:99 msgid "Self candidature" msgstr "Selbst kandidieren" -#: assignment/templates/assignment/view.html:125 +#: assignment/templates/assignment/view.html:122 msgid "Blocked Candidates" msgstr "Blockierte Kandidaten/innen" -#: assignment/templates/assignment/view.html:135 +#: assignment/templates/assignment/view.html:132 msgid "No blocked candidates available." msgstr "Keine blockierten Kandidaten/innen vorhanden." -#: assignment/templates/assignment/view.html:143 +#: assignment/templates/assignment/view.html:140 #: assignment/templates/projector/Assignment.html:52 msgid "Election results" msgstr "Wahlergebnisse" -#: assignment/templates/assignment/view.html:163 +#: assignment/templates/assignment/view.html:160 msgid "Publish results" msgstr "Ergebnisse veröffentlichen" -#: assignment/templates/assignment/view.html:178 -#: assignment/templates/assignment/view.html:259 +#: assignment/templates/assignment/view.html:175 +#: assignment/templates/assignment/view.html:256 msgid "New ballot" msgstr "Neuer Wahlgang" -#: assignment/templates/assignment/view.html:191 +#: assignment/templates/assignment/view.html:188 #: assignment/templates/projector/Assignment.html:69 msgid "Candidate is elected" msgstr "Kandidat/in ist gewählt" -#: assignment/templates/assignment/view.html:210 +#: assignment/templates/assignment/view.html:207 #: assignment/templates/projector/Assignment.html:84 msgid "was not a
      candidate" msgstr "war kein Kandidat" -#: assignment/templates/assignment/view.html:227 +#: assignment/templates/assignment/view.html:224 #: assignment/templates/projector/Assignment.html:100 motion/pdf.py:147 -#: motion/templates/motion/motion_detail.html:211 +#: motion/templates/motion/motion_detail.html:210 #: motion/templates/projector/Motion.html:30 msgid "Invalid" msgstr "Ungültig" -#: assignment/templates/assignment/view.html:255 +#: assignment/templates/assignment/view.html:252 msgid "No ballots available." msgstr "Keine Wahlgänge vorhanden." -#: assignment/templates/assignment/view.html:279 +#: assignment/templates/assignment/view.html:276 msgid "Change status" msgstr "Status ändern" @@ -1227,56 +1226,72 @@ msgid "Line %d in import file: Default submitter is used." msgstr "" "Zeile %d der Import-Datei: Voreingestellter Antragsteller wird verwendet." -#: motion/forms.py:44 motion/models.py:554 motion/pdf.py:170 -#: motion/templates/motion/motion_detail.html:82 +#: motion/csv_import.py:105 +msgid "Motion imported" +msgstr "Antrag importiert" + +#: motion/forms.py:45 motion/models.py:557 motion/pdf.py:170 +#: motion/templates/motion/motion_detail.html:81 #: motion/templates/motion/motion_diff.html:55 #: motion/templates/projector/Motion.html:73 msgid "Reason" msgstr "Begründung" -#: motion/forms.py:67 motion/pdf.py:55 -#: motion/templates/motion/motion_detail.html:167 +#: motion/forms.py:70 motion/pdf.py:55 +#: motion/templates/motion/motion_detail.html:166 #: motion/templates/motion/motion_list.html:42 #: motion/templates/projector/Motion.html:46 msgid "Submitter" msgstr "Antragsteller/in" -#: motion/forms.py:81 motion/pdf.py:79 -#: motion/templates/motion/motion_detail.html:174 +#: motion/forms.py:84 motion/pdf.py:79 +#: motion/templates/motion/motion_detail.html:173 #: motion/templates/motion/motion_list.html:44 msgid "Supporters" msgstr "Unterstützer/innen" -#: motion/forms.py:96 +#: motion/forms.py:99 msgid "Don't create a new version" msgstr "Keine neue Version erzeugen" -#: motion/forms.py:97 +#: motion/forms.py:100 msgid "Don't create a new version. Useful e.g. for trivial changes." msgstr "Keine neue Version erzeugen. Nützlich z.B. für triviale Änderungen." -#: motion/forms.py:110 motion/templates/motion/motion_detail.html:235 +#: motion/forms.py:113 motion/templates/motion/motion_detail.html:234 #: motion/templates/motion/motion_list.html:40 msgid "Category" msgstr "Sachgebiet" -#: motion/forms.py:130 motion/signals.py:105 +#: motion/forms.py:133 motion/signals.py:105 msgid "Identifier" msgstr "Bezeichner" -#: motion/forms.py:143 participant/forms.py:142 +#: motion/forms.py:149 +msgid "Workflow" +msgstr "Arbeitsablauf" + +#: motion/forms.py:150 +msgid "" +"Set a specific workflow to switch to it. If you do so, the state of the " +"motion will be reset." +msgstr "" +"Setzt den Antrag auf einen bestimmten Arbeitsablauf. In diesem Fall wird der " +"Status des Antrags zurückgesetzt." + +#: motion/forms.py:159 participant/forms.py:122 msgid "CSV File" msgstr "CSV-Datei" -#: motion/forms.py:144 +#: motion/forms.py:160 msgid "The file should be encoded in UTF-8." msgstr "Die Datei sollte UTF-8-kodiert sein." -#: motion/forms.py:151 +#: motion/forms.py:167 msgid "Override existing motions with the same identifier" msgstr "Überschreibe existrierende Anträge mit dem gleichen Bezeichner" -#: motion/forms.py:152 +#: motion/forms.py:168 msgid "" "If this is active, every motion with the same identifier as in your csv file " "will be overridden." @@ -1284,11 +1299,11 @@ msgstr "" "Wenn dies aktiviert ist, wird jeder Antrag mit dem gleichen Bezeichner wie " "in Ihrer CSV-Datei überschrieben." -#: motion/forms.py:160 +#: motion/forms.py:176 msgid "Default submitter" msgstr "Voreinstellter Antragsteller/in" -#: motion/forms.py:161 +#: motion/forms.py:177 msgid "" "This person is used as submitter for any line of your csv file which does " "not contain valid submitter data." @@ -1312,19 +1327,19 @@ msgstr "Darf Anträge unterstützen" msgid "Can manage motions" msgstr "Darf Anträge verwalten" -#: motion/models.py:571 +#: motion/models.py:574 msgid "new" msgstr "Neu" -#: motion/models.py:618 motion/templates/motion/category_list.html:22 +#: motion/models.py:621 motion/templates/motion/category_list.html:22 msgid "Category name" msgstr "Sachgebiet" -#: motion/models.py:621 motion/templates/motion/category_list.html:21 +#: motion/models.py:624 motion/templates/motion/category_list.html:21 msgid "Prefix" msgstr "Präfix" -#: motion/pdf.py:48 motion/views.py:621 +#: motion/pdf.py:48 motion/views.py:633 #, python-format msgid "Motion: %s" msgstr "Antrag: %s" @@ -1337,7 +1352,7 @@ msgstr "Unterschrift" msgid "State" msgstr "Status" -#: motion/pdf.py:143 motion/templates/motion/motion_detail.html:200 +#: motion/pdf.py:143 motion/templates/motion/motion_detail.html:199 #: motion/templates/motion/poll_form.html:6 #: motion/templates/motion/poll_form.html:14 #: motion/templates/projector/Motion.html:23 @@ -1379,8 +1394,8 @@ msgstr "Die Versammlung möge beschließen," msgid "Motion preamble" msgstr "Antragseinleitung" -#: motion/signals.py:73 motion/views.py:619 motion/views.py:708 -#: motion/views.py:722 motion/templates/motion/category_list.html:6 +#: motion/signals.py:73 motion/views.py:631 motion/views.py:721 +#: motion/views.py:735 motion/templates/motion/category_list.html:6 #: motion/templates/motion/motion_list.html:7 #: motion/templates/motion/motion_list.html:20 msgid "Motions" @@ -1414,7 +1429,7 @@ msgstr "pro Sachgebiet nummerieren" msgid "Set it manually" msgstr "manuell setzen" -#: motion/signals.py:111 motion/views.py:522 +#: motion/signals.py:111 motion/views.py:535 #: motion/templates/motion/motion_detail.html:7 #: motion/templates/motion/motion_detail.html:15 #: motion/templates/motion/motion_diff.html:7 @@ -1440,7 +1455,7 @@ msgstr "angenommen" #: motion/signals.py:140 motion/signals.py:166 msgid "Accept" -msgstr "annehmen" +msgstr "Annehmen" #: motion/signals.py:141 motion/signals.py:168 msgid "rejected" @@ -1448,15 +1463,15 @@ msgstr "abgelehnt" #: motion/signals.py:143 motion/signals.py:170 msgid "Reject" -msgstr "ablehnen" +msgstr "Ablehnen" #: motion/signals.py:144 msgid "not decided" -msgstr "nicht beschlossen" +msgstr "nicht entschieden" #: motion/signals.py:146 msgid "Do not decide" -msgstr "nicht beschließen" +msgstr "Nicht entscheiden" #: motion/signals.py:151 msgid "Complex Workflow" @@ -1472,7 +1487,7 @@ msgstr "zugelassen" #: motion/signals.py:159 msgid "Permit" -msgstr "zulassen" +msgstr "Zulassen" #: motion/signals.py:172 msgid "withdrawed" @@ -1480,7 +1495,7 @@ msgstr "zurückgezogen" #: motion/signals.py:174 msgid "Withdraw" -msgstr "zurückziehen" +msgstr "Zurückziehen" #: motion/signals.py:176 msgid "adjourned" @@ -1488,7 +1503,7 @@ msgstr "vertagt" #: motion/signals.py:178 msgid "Adjourn" -msgstr "vertagen" +msgstr "Vertagen" # please check! #: motion/signals.py:180 @@ -1498,7 +1513,7 @@ msgstr "nicht befasst" # please check! #: motion/signals.py:182 msgid "Do not concern" -msgstr "nicht befassen" +msgstr "Nicht befassen" # please check! #: motion/signals.py:184 @@ -1508,114 +1523,129 @@ msgstr "in Ausschuss verwiesen" # please check! #: motion/signals.py:186 msgid "Commit a bill" -msgstr "in Ausschuss verweisen" +msgstr "In Ausschuss verweisen" #: motion/signals.py:188 msgid "needs review" msgstr "Benötigt Review" -#: motion/signals.py:191 +#: motion/signals.py:190 +msgid "Needs review" +msgstr "Benötigt Review" + +#: motion/signals.py:192 msgid "rejected (not authorized)" msgstr "Verworfen (nicht zulässig)" -#: motion/signals.py:193 -msgid "reject (not authorized)" +#: motion/signals.py:194 +msgid "Reject (not authorized)" msgstr "Verwerfen (nicht zulässig)" -#: motion/views.py:186 +#: motion/views.py:193 msgid "Motion created" msgstr "Antrag erstellt" -#: motion/views.py:208 +#: motion/views.py:215 msgid "Motion updated" msgstr "Antrag aktualisiert" -#: motion/views.py:234 +#: motion/views.py:241 msgid "Version successfully permitted." msgstr "Version erfolgreich zugelassen." -#: motion/views.py:253 +#: motion/views.py:260 #, python-format msgid "Are you sure you want permit Version %s?" msgstr "Soll Version %s wirklich zugelassen werden?" -#: motion/views.py:288 +#: motion/views.py:269 +#, python-format +msgid "Version %d permitted" +msgstr "Version %d zugelassen" + +#: motion/views.py:298 #, python-format msgid "Are you sure you want reject Version %s?" msgstr "Soll Version %s wirklich zurückgewiesen werden?" -#: motion/views.py:316 +#: motion/views.py:307 +#, python-format +msgid "Version %d rejected" +msgstr "Version %d verworfen" + +#: motion/views.py:329 msgid "At least one version number is not valid." msgstr "Mindestens eine Versionsnummer ist ungültig" -#: motion/views.py:354 +#: motion/views.py:367 msgid "You can not support this motion." msgstr "Sie dürfen diesen Antrag nicht unterstützen." -#: motion/views.py:357 +#: motion/views.py:370 msgid "You can not unsupport this motion." msgstr "Sie dürfen Ihre Unterstützung für diesen Antrag nicht entziehen." -#: motion/views.py:365 +#: motion/views.py:378 msgid "Do you really want to support this motion?" msgstr "Wollen Sie wirklich diesen Antrag unterstützen?" -#: motion/views.py:367 +#: motion/views.py:380 msgid "Do you really want to unsupport this motion?" msgstr "Wollen Sie wirklich Ihre Unterstützung für diesen Antrag entziehen?" -#: motion/views.py:379 +#: motion/views.py:392 #, python-format msgid "Supporter: +%s" msgstr "Unterstützer/in: +%s" -#: motion/views.py:382 +#: motion/views.py:395 #, python-format msgid "Supporter: -%s" msgstr "Unterstützer/in: -%s" -#: motion/views.py:387 +#: motion/views.py:400 msgid "You have supported this motion successfully." msgstr "Sie haben den Antrag erfolgreich unterstützt." -#: motion/views.py:389 +#: motion/views.py:402 msgid "You have unsupported this motion successfully." msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen." -#: motion/views.py:412 +#: motion/views.py:425 msgid "Poll created" msgstr "Abstimmung erstellt" -#: motion/views.py:413 +#: motion/views.py:426 msgid "New vote was successfully created." msgstr "Neue Abstimmung erfolgreich angelegt." -#: motion/views.py:477 +#: motion/views.py:490 msgid "Poll updated" msgstr "Abstimmung wurde aktualisiert" -#: motion/views.py:495 +#: motion/views.py:508 msgid "Poll deleted" msgstr "Abstimmung gelöscht" -#: motion/views.py:522 +#: motion/views.py:535 msgid "Poll" msgstr "Abstimmung" -#: motion/views.py:568 -msgid "State changed to" -msgstr "Status geändert zu" +#: motion/views.py:581 +#, python-format +msgid "State changed to %s" +msgstr "Status geändert zu %s" -#: motion/views.py:571 +#: motion/views.py:583 #, python-format msgid "Motion status was set to: %s." msgstr "Antragsstatus wurde gesetzt auf: %s." -#: motion/views.py:593 +#: motion/views.py:605 msgid "Agenda item created" msgstr "Tagesordnungseintrag angelegt" -#: motion/views.py:698 +#: motion/views.py:711 #, python-format msgid "%d motions were successfully imported." msgstr "%d Anträge wurden erfolgreich importiert." @@ -1645,11 +1675,12 @@ msgstr "Keine Sachgebieter vorhanden." msgid "no number" msgstr "ohne Nummer" -#: motion/templates/motion/motion_detail.html:25 -msgid "Print this motion as PDF" -msgstr "Diesen Antrag als PDF drucken" +#: motion/templates/motion/motion_detail.html:24 +#: motion/templates/motion/motion_list.html:89 +msgid "Print motion as PDF" +msgstr "Antrag als PDF drucken" -#: motion/templates/motion/motion_detail.html:28 +#: motion/templates/motion/motion_detail.html:27 #: motion/templates/motion/poll_form.html:21 msgid "Show motion" msgstr "Antrag anzeigen" @@ -1664,110 +1695,110 @@ msgstr "Antrag bearbeiten" msgid "Delete motion" msgstr "Antrag löschen" -#: motion/templates/motion/motion_detail.html:63 +#: motion/templates/motion/motion_detail.html:62 msgid "This is not the newest version." msgstr "Dies ist nicht die neuste Version." -#: motion/templates/motion/motion_detail.html:65 +#: motion/templates/motion/motion_detail.html:64 msgid "Go to last version" msgstr "Zu letzten Version" -#: motion/templates/motion/motion_detail.html:70 +#: motion/templates/motion/motion_detail.html:69 msgid "This version is not yet authorized." msgstr "Diese Version wurde noch nicht zugelassen." -#: motion/templates/motion/motion_detail.html:72 +#: motion/templates/motion/motion_detail.html:71 msgid "Go to last authorized version" msgstr "Zur letzten zugelassenen Version" -#: motion/templates/motion/motion_detail.html:77 +#: motion/templates/motion/motion_detail.html:76 msgid "Motion text" msgstr "Antragstext" -#: motion/templates/motion/motion_detail.html:95 +#: motion/templates/motion/motion_detail.html:94 msgid "Version history" msgstr "Versionshistorie" -#: motion/templates/motion/motion_detail.html:101 +#: motion/templates/motion/motion_detail.html:100 msgid "Time" msgstr "Zeit" -#: motion/templates/motion/motion_detail.html:102 +#: motion/templates/motion/motion_detail.html:101 msgid "Difference" msgstr "Unterschied" -#: motion/templates/motion/motion_detail.html:109 +#: motion/templates/motion/motion_detail.html:108 msgid "This version is authorized" msgstr "Diese Version wurde zugelassen" -#: motion/templates/motion/motion_detail.html:112 +#: motion/templates/motion/motion_detail.html:111 msgid "Permit this version" msgstr "Diese Version zulassen" -#: motion/templates/motion/motion_detail.html:115 +#: motion/templates/motion/motion_detail.html:114 msgid "Reject this version" msgstr "Diese Version verwerfen" -#: motion/templates/motion/motion_detail.html:119 +#: motion/templates/motion/motion_detail.html:118 msgid "This version is rejected" msgstr "Diese Version wurde verworfen" -#: motion/templates/motion/motion_detail.html:150 +#: motion/templates/motion/motion_detail.html:149 msgid "Show log" msgstr "Log anzeigen" -#: motion/templates/motion/motion_detail.html:202 +#: motion/templates/motion/motion_detail.html:201 msgid "Edit Vote" msgstr "Abstimmung bearbeiten" -#: motion/templates/motion/motion_detail.html:203 +#: motion/templates/motion/motion_detail.html:202 msgid "Delete Vote" msgstr "Abstimmung löschen" -#: motion/templates/motion/motion_detail.html:218 +#: motion/templates/motion/motion_detail.html:217 msgid "No results" msgstr "Keine Ergebnisse" -#: motion/templates/motion/motion_detail.html:229 +#: motion/templates/motion/motion_detail.html:228 msgid "New vote" msgstr "Neue Abstimmung" -#: motion/templates/motion/motion_detail.html:246 +#: motion/templates/motion/motion_detail.html:245 msgid "Last changes (of this version)" msgstr "Letzte Änderung (von dieser Version)" -#: motion/templates/motion/motion_detail.html:248 +#: motion/templates/motion/motion_detail.html:247 #: motion/templates/motion/motion_diff.html:37 #: motion/templates/motion/motion_diff.html:41 #: motion/templates/motion/motion_list.html:46 msgid "Last changes" msgstr "Letzte Änderung" -#: motion/templates/motion/motion_detail.html:259 +#: motion/templates/motion/motion_detail.html:258 msgid "Withdraw motion" msgstr "Antrag zurückziehen" -#: motion/templates/motion/motion_detail.html:268 +#: motion/templates/motion/motion_detail.html:267 msgid "Unsupport" msgstr "Nicht unterstützen" -#: motion/templates/motion/motion_detail.html:274 +#: motion/templates/motion/motion_detail.html:273 msgid "Support" msgstr "Unterstützen" -#: motion/templates/motion/motion_detail.html:282 +#: motion/templates/motion/motion_detail.html:281 msgid "minimum required supporters" msgstr "minimal erforderliche Unterstützer/innen" -#: motion/templates/motion/motion_detail.html:289 +#: motion/templates/motion/motion_detail.html:288 msgid "Manage motion" msgstr "Antrag verwalten" -#: motion/templates/motion/motion_detail.html:297 +#: motion/templates/motion/motion_detail.html:296 msgid "For administration only:" msgstr "Nur zur Administration:" -#: motion/templates/motion/motion_detail.html:299 +#: motion/templates/motion/motion_detail.html:298 msgid "Reset state" msgstr "Status zurücksetzen" @@ -1825,13 +1856,13 @@ msgid "Required CSV file encoding: UTF-8." msgstr "Erforderliches Encoding der CSV-Datei: UTF-8." #: motion/templates/motion/motion_form_csv_import.html:30 -#: participant/templates/participant/import.html:29 +#: participant/templates/participant/import.html:28 msgid "Use the CSV example file from OpenSlides Wiki." msgstr "Verwenden Sie die CSV-Beispiel-Datei vom OpenSlides Wiki." #: motion/templates/motion/motion_form_csv_import.html:38 #: motion/templates/motion/motion_list.html:29 -#: participant/templates/participant/import.html:36 +#: participant/templates/participant/import.html:35 #: participant/templates/participant/overview.html:25 msgid "Import" msgstr "Importieren" @@ -1856,10 +1887,6 @@ msgstr "Ausreichend Unterstützer/innen" msgid "Needs supporters" msgstr "Benötigt Unterstützer/innen" -#: motion/templates/motion/motion_list.html:89 -msgid "Print motion as PDF" -msgstr "Antrag als PDF drucken" - #: motion/templates/motion/poll_form.html:37 msgid "Option" msgstr "Wahlmöglichkeit" @@ -1900,15 +1927,20 @@ msgstr "" "Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 " "wird unterstützt!" -#: participant/forms.py:28 participant/views.py:520 -#: participant/templates/participant/group_overview.html:6 -#: participant/templates/participant/group_overview.html:9 +#: participant/forms.py:29 participant/views.py:531 +#: participant/templates/participant/group_overview.html:7 +#: participant/templates/participant/group_overview.html:20 #: participant/templates/participant/overview.html:24 -#: participant/templates/participant/user_detail.html:34 +#: participant/templates/participant/user_detail.html:54 msgid "Groups" msgstr "Gruppen" -#: participant/forms.py:72 +#: participant/forms.py:30 +msgid "" +"Hold down \"Control\", or \"Command\" on a Mac, to select more than one." +msgstr "" + +#: participant/forms.py:67 msgid "" "You can not remove the last group containing the permission to manage " "participants." @@ -1916,25 +1948,16 @@ msgstr "" "Sie können nicht die letzte Gruppe löschen, die das Recht zur Verwaltung von " "Teilnehmern enthält." -#: participant/forms.py:80 +#: participant/forms.py:75 msgid "Permissions" msgstr "Rechte" -#: participant/forms.py:83 participant/views.py:482 participant/views.py:506 +#: participant/forms.py:78 participant/views.py:493 participant/views.py:517 #: participant/templates/participant/overview.html:7 -#: participant/templates/participant/overview.html:19 +#: participant/templates/participant/overview.html:20 msgid "Participants" msgstr "Teilnehmer/innen" -#: participant/forms.py:120 -msgid "You can not edit the name for this group." -msgstr "Sie dürfen den Namen dieser Gruppe nicht bearbeiten." - -#: participant/forms.py:124 -#, python-format -msgid "Group name \"%s\" is reserved for internal use." -msgstr "Der Gruppenname \"%s\" ist für interne Verwendung reserviert." - #: participant/models.py:30 msgid "Male" msgstr "Männlich" @@ -1943,9 +1966,9 @@ msgstr "Männlich" msgid "Female" msgstr "Weiblich" -#: participant/models.py:36 participant/views.py:183 -#: participant/templates/participant/overview.html:62 -#: participant/templates/participant/user_detail.html:30 +#: participant/models.py:36 participant/views.py:194 +#: participant/templates/participant/overview.html:51 +#: participant/templates/participant/user_detail.html:50 msgid "Structure level" msgstr "Gliederungsebene" @@ -1958,7 +1981,7 @@ msgid "Will be shown before the name." msgstr "Wird vor dem Namen angezeigt." #: participant/models.py:43 -#: participant/templates/participant/user_detail.html:20 +#: participant/templates/participant/user_detail.html:40 msgid "Gender" msgstr "Geschlecht" @@ -1966,14 +1989,14 @@ msgstr "Geschlecht" msgid "Only for filtering the participant list." msgstr "Nur zum Filtern der Teilnehmerliste." -#: participant/models.py:45 participant/views.py:183 -#: participant/templates/participant/overview.html:64 -#: participant/templates/participant/user_detail.html:32 +#: participant/models.py:45 participant/views.py:194 +#: participant/templates/participant/overview.html:53 +#: participant/templates/participant/user_detail.html:52 msgid "Committee" msgstr "Amt" #: participant/models.py:48 -#: participant/templates/participant/user_detail.html:24 +#: participant/templates/participant/user_detail.html:44 msgid "About me" msgstr "Über mich" @@ -2025,98 +2048,98 @@ msgstr "Teilnehmer/innen nach Vornamen sortieren" msgid "Disable for sorting by last name" msgstr "Deaktivieren für Sortierung nach Nachnamen" -#: participant/signals.py:97 participant/templates/participant/import.html:25 +#: participant/signals.py:97 msgid "Anonymous" -msgstr "Gast" +msgstr "Anonymous" -#: participant/signals.py:99 participant/templates/participant/import.html:25 +#: participant/signals.py:99 msgid "Registered" -msgstr "Registrierte/r" +msgstr "Registrierte/r Teilnehmer/in" #: participant/signals.py:109 msgid "Delegates" msgstr "Delegierte/r" -#: participant/signals.py:123 participant/templates/participant/import.html:26 +#: participant/signals.py:123 participant/templates/participant/import.html:25 msgid "Staff" msgstr "Mitarbeiter/in" -#: participant/views.py:135 +#: participant/views.py:146 msgid "You can not delete yourself." msgstr "Sie dürfen sich nicht selbst löschen." -#: participant/views.py:156 +#: participant/views.py:167 msgid "You can not deactivate yourself." msgstr "Sie dürfen sich nicht selbst deaktivieren." -#: participant/views.py:159 +#: participant/views.py:170 msgid "You can not deactivate the administrator." msgstr "Sie dürfen den Administrator nicht deaktivieren." -#: participant/views.py:178 +#: participant/views.py:189 msgid "Participant-list" msgstr "Teilnehmerliste" -#: participant/views.py:179 +#: participant/views.py:190 msgid "List of Participants" msgstr "Teilnehmerliste" -#: participant/views.py:182 participant/templates/participant/overview.html:61 +#: participant/views.py:193 participant/templates/participant/overview.html:50 msgid "Last Name" msgstr "Nachname" -#: participant/views.py:182 participant/templates/participant/overview.html:60 +#: participant/views.py:193 participant/templates/participant/overview.html:49 msgid "First Name" msgstr "Vorname" -#: participant/views.py:183 -#: participant/templates/participant/group_overview.html:18 -#: participant/templates/participant/overview.html:63 +#: participant/views.py:194 +#: participant/templates/participant/group_overview.html:31 +#: participant/templates/participant/overview.html:52 msgid "Group" msgstr "Gruppe" -#: participant/views.py:219 +#: participant/views.py:230 msgid "Participant-passwords" msgstr "Teilnehmer-Passwoerter" -#: participant/views.py:249 +#: participant/views.py:260 msgid "Account for OpenSlides" msgstr "Zugang für OpenSlides" -#: participant/views.py:251 +#: participant/views.py:262 #, python-format msgid "for %s" msgstr "für %s" -#: participant/views.py:254 +#: participant/views.py:265 #, python-format msgid "User: %s" msgstr "Nutzername: %s" -#: participant/views.py:258 +#: participant/views.py:269 #, python-format msgid "Password: %s" msgstr "Passwort: %s" -#: participant/views.py:305 +#: participant/views.py:316 #, python-format msgid "%d new participants were successfully imported." msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert." -#: participant/views.py:316 +#: participant/views.py:327 msgid "Do you really want to reset the password?" msgstr "Soll das Passwort wirklich zurückgesetzt werden?" -#: participant/views.py:329 +#: participant/views.py:340 #, python-format msgid "The Password for %s was successfully reset." msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt." -#: participant/views.py:404 +#: participant/views.py:415 msgid "You can not delete this Group." msgstr "Sie dürfen diese Gruppe nicht löschen." -#: participant/views.py:415 +#: participant/views.py:426 #, python-format msgid "" "Installation was successfully! Use %(user)s (password: %(password)s) for " @@ -2129,16 +2152,17 @@ msgstr "" "Sie das Passwort nach der ersten Anmeldung! Anderenfalls erscheint diese " "Meldung weiterhin für alle und ist ein Sicherheitsrisiko." -#: participant/views.py:441 +#: participant/views.py:452 msgid "User settings successfully saved." msgstr "Nutzereinstellungen wurden erfolgreich gespeichert." -#: participant/views.py:464 +#: participant/views.py:475 msgid "Password successfully changed." msgstr "Passwort wurde erfolgreich geändert." #: participant/templates/participant/edit.html:8 #: participant/templates/participant/edit.html:17 +#: participant/templates/participant/user_detail.html:27 msgid "Edit participant" msgstr "Teilnehmer/in bearbeiten" @@ -2152,29 +2176,56 @@ msgstr "Neue/r Teilnehmer/in" msgid "Reset to First Password" msgstr "Auf Erst-Passwort zurücksetzen" -#: participant/templates/participant/group_detail.html:18 -msgid "Members" -msgstr "Mitglieder" - -#: participant/templates/participant/group_detail.html:24 -msgid "No members available." -msgstr "Keine Mitglieder vorhanden." +#: participant/templates/participant/group_detail.html:15 +msgid "Show group" +msgstr "Gruppe projizieren" +#: participant/templates/participant/group_detail.html:26 #: participant/templates/participant/group_edit.html:8 #: participant/templates/participant/group_edit.html:17 msgid "Edit group" msgstr "Gruppe bearbeiten" +#: participant/templates/participant/group_detail.html:28 +msgid "Delete group" +msgstr "Gruppe löschen" + +#: participant/templates/participant/group_detail.html:37 +msgid "Members" +msgstr "Mitglieder" + +#: participant/templates/participant/group_detail.html:43 +msgid "No members available." +msgstr "Keine Mitglieder vorhanden." + #: participant/templates/participant/group_edit.html:10 #: participant/templates/participant/group_edit.html:19 -#: participant/templates/participant/group_overview.html:11 +#: participant/templates/participant/group_overview.html:22 msgid "New group" msgstr "Neue Gruppe" -#: participant/templates/participant/group_overview.html:12 +#: participant/templates/participant/group_overview.html:23 msgid "Back to participants overview" msgstr "Zurück zur Teilnehmer/innen-Übersicht" +#: participant/templates/participant/group_overview.html:30 +msgid "ID" +msgstr "ID" + +#: participant/templates/participant/group_overview.html:39 +msgid "" +"The groups 1 ('Anonymous') and 2 ('Registered') are fixed default groups " +"which can not be deleted. Each created or imported participant is a member " +"of group 2. Use custom groups to set additional permissions for a subset of " +"participants." +msgstr "" +"Die Gruppen 1 ('Anonymous') und 2 ('Registrierte/r Teilnehmer/in') sind fest " +"vorgegebene Gruppen, die nicht gelöscht werden können. Jede/r erstellte/r oder " +"importierte/r Teilnehmer/in ist ein Mitglied von Gruppe 2. " +"Verwenden Sie benutzerdefinierte " +"Gruppen, um für eine Untermenge von Teilnehmer/innen zusätzliche Rechte zu " +"setzen." + #: participant/templates/participant/group_widget.html:21 msgid "No groups available." msgstr "Keine Gruppen vorhanden." @@ -2201,11 +2252,11 @@ msgstr "" msgid "Default groups" msgstr "Vorgegebene Gruppen" -#: participant/templates/participant/import.html:26 +#: participant/templates/participant/import.html:25 msgid "Delegate" msgstr "Delegierte/r" -#: participant/templates/participant/import.html:28 +#: participant/templates/participant/import.html:27 msgid "Required CSV file encoding: UTF-8 (Unicode)." msgstr "Erforderliches CSV-Datei-Encoding: UTF-8 (Unicode)." @@ -2216,7 +2267,7 @@ msgstr "" "erneut." #: participant/templates/participant/login.html:38 -#: participant/templates/participant/user_detail.html:45 +#: participant/templates/participant/user_detail.html:65 msgid "Username" msgstr "Benutzername" @@ -2224,8 +2275,7 @@ msgstr "Benutzername" msgid "Password" msgstr "Passwort" -#: participant/templates/participant/login.html:47 -#: participant/templates/participant/overview.html:40 templates/base.html:46 +#: participant/templates/participant/login.html:47 templates/base.html:46 msgid "Login" msgstr "Anmelden" @@ -2237,38 +2287,34 @@ msgstr "Weiter als Gast" msgid "All groups" msgstr "Alle Gruppen" -#: participant/templates/participant/overview.html:36 +#: participant/templates/participant/overview.html:34 msgid "List of participants" msgstr "Teilnehmerliste" -#: participant/templates/participant/overview.html:37 +#: participant/templates/participant/overview.html:35 msgid "First time passwords" msgstr "Erst-Passwörter" -#: participant/templates/participant/overview.html:45 +#: participant/templates/participant/overview.html:39 msgid "Print list of participants as PDF" msgstr "Teilnehmerliste als PDF drucken" -#: participant/templates/participant/overview.html:48 -msgid "Print first time passwords as PDF" -msgstr "Erst-Passwörter als PDF drucken" - -#: participant/templates/participant/overview.html:58 +#: participant/templates/participant/overview.html:47 msgid "Present" msgstr "Anwesend" -#: participant/templates/participant/overview.html:67 -#: participant/templates/participant/user_detail.html:49 +#: participant/templates/participant/overview.html:56 +#: participant/templates/participant/user_detail.html:69 msgid "Last Login" msgstr "Letzer Login" -#: participant/templates/participant/overview.html:79 -#: participant/templates/participant/overview.html:86 +#: participant/templates/participant/overview.html:68 +#: participant/templates/participant/overview.html:75 msgid "present" msgstr "anwesend" -#: participant/templates/participant/overview.html:79 -#: participant/templates/participant/overview.html:86 +#: participant/templates/participant/overview.html:68 +#: participant/templates/participant/overview.html:75 msgid "absent" msgstr "abwesend" @@ -2282,27 +2328,35 @@ msgstr "Passwort-Einstellungen" msgid "Edit profile" msgstr "Profil bearbeiten" -#: participant/templates/participant/user_detail.html:19 +#: participant/templates/participant/user_detail.html:16 +msgid "Show participant" +msgstr "Teilnehmer/in projizieren" + +#: participant/templates/participant/user_detail.html:29 +msgid "Delete participant" +msgstr "Teilnehmer/in löschen" + +#: participant/templates/participant/user_detail.html:39 msgid "Personal data" msgstr "Persönliche Daten" -#: participant/templates/participant/user_detail.html:22 +#: participant/templates/participant/user_detail.html:42 msgid "Email" msgstr "E-Mail" -#: participant/templates/participant/user_detail.html:29 +#: participant/templates/participant/user_detail.html:49 msgid "Event data" msgstr "Veranstaltungsdaten" -#: participant/templates/participant/user_detail.html:38 +#: participant/templates/participant/user_detail.html:58 msgid "The participant is not member of any group." msgstr "Teilnehmer/in ist kein Mitglied einer Gruppe." -#: participant/templates/participant/user_detail.html:44 +#: participant/templates/participant/user_detail.html:64 msgid "Administrative data" msgstr "Administrative Daten" -#: participant/templates/participant/user_detail.html:53 +#: participant/templates/participant/user_detail.html:73 msgid "The participant has not logged in yet." msgstr "Teilnehmer/in hat sich noch nicht angemeldet." @@ -2498,90 +2552,3 @@ msgstr "undefinierter-dateiname" #: utils/jsonfield/fields.py:22 msgid "Enter valid JSON" msgstr "Gebe valides JSON ein" - -#~ msgid "motion" -#~ msgstr "Antrag" - -#~ msgid "You are now on the list of speakers." -#~ msgstr "Sie stehen jetzt auf der Rednerliste." - -#~ msgid "Actual speaker" -#~ msgstr "Aktueller Redner" - -#~ msgid "The Identifier is not unique." -#~ msgstr "Der Bezeichner ist nicht eindeutig." - -#~ msgid "No category" -#~ msgstr "Kein Sachgebiet" - -#~ msgid "Creation Time" -#~ msgstr "Erstellungszeit" - -#~ msgid "created" -#~ msgstr "erstellt" - -#~ msgid "No motion available." -#~ msgstr "Keine Antrag vorhanden." - -#~ msgid "Welcome Page" -#~ msgstr "Willkommensseite" - -#~ msgid "Filter" -#~ msgstr "Filter" - -#~ msgid "election" -#~ msgid_plural "elections" -#~ msgstr[0] "Wahl" -#~ msgstr[1] "Wahlen" - -#~ msgctxt "Number of searched candidates for an election" -#~ msgid "posts: %(posts)s" -#~ msgstr "Posten: %(posts)s" - -#~ msgid "candidates: %(candidates)s" -#~ msgstr "Kandidaten/innen: %(candidates)s" - -#~ msgid "elected: %(elected)s" -#~ msgstr "Gewählt: %(elected)s" - -#~ msgid "Media" -#~ msgstr "Medien" - -#~ msgid "Edit media" -#~ msgstr "Mediendatei bearbeiten" - -#~ msgid "New media" -#~ msgstr "Neue Mediendatei" - -#~ msgid "No media available." -#~ msgstr "Keine Mediendatei vorhanden." - -#~ msgid "Without number" -#~ msgstr "Ohne Nummer" - -#~ msgid "Not yet authorized" -#~ msgstr "Noch nicht zugelassen" - -#~ msgid "Authorized" -#~ msgstr "Zugelassen" - -#~ msgid "Accepted" -#~ msgstr "Angenommen" - -#~ msgid "Rejected" -#~ msgstr "Abgelehnt" - -#~ msgid "Withdrawen (by submitter)" -#~ msgstr "Zurückgezogen (durch Antragsteller/in)" - -#~ msgid "Needs Review" -#~ msgstr "Benötigt Review" - -#~ msgctxt "number of motions" -#~ msgid "motion" -#~ msgid_plural "motions" -#~ msgstr[0] "Antrag" -#~ msgstr[1] "Anträge" - -#~ msgid "Number of supporters" -#~ msgstr "Anzahl der Unterstützer/innen" diff --git a/openslides/locale/de/LC_MESSAGES/djangojs.mo b/openslides/locale/de/LC_MESSAGES/djangojs.mo index 64d72537e9eb2d4fa45201ab308ca4ee981d2979..dbd25a9e0e1dbefdc85dc2769cef05665f8c721b 100644 GIT binary patch delta 732 zcmYk)Pe>GD7{~EvcE@pN#lLI>UetsXHgOl-Wr+?Z1%Y_-kVFWIt1g*`Tu@LLyeN5W zf=*F~2*p4{5>XLk4~x+u2#;Mnd5|CkZ-UU z1C&sov~2m8<=?1{Pb~jMJ?JUwx---b&rvtLuzYD=;XUduuSx&k5pY9Il2+(N-5_W7 zp*DJEc>r~TA=CyhkV{7Rslh4i#3JgtkEs1VTV6wbgBz$1_;|-A_E8UVXt`|pCpJ_6 zWA%SnPyUY$=!EOhS$zfaAZ&Bnef^F)G=_t2kCP3T+;08Eq=}JcBpA8vBX`>I@-xLZ zg?yOv?pJOL-lNLxmbVbkbfvScsno-CW;;{;B;r3Uu%h&3G9SM6TVjGD7{~Ev*V)mvKmOY~br>`3khQKGTPy`F8C^2T281qy%20#rWd6yZVDVDa zt)>on5b6+gi9m#;2!lYRn}>=#bTB*x(WyfhzYji_g?Z;Qzh~a}dEc2Qx#is3YN~cn zM7ms&UMyo8$B|27%d^--zJm_VTm3#Zk{?=rj9KziJcNr@e~-=NkGLP#aX2ON-Ibbn z6ng1?0Iy&JUdIfMTfT*?ky+G6_i!IRu=mf9OP*VPiF&YCsO#RKe%P|r-&uXNskXb} zniamF9$*9YOTSv)wEPpb@h{82Q4jhTb=^PI4gaHVnC5qA&X{}gFu4PDeyPR-bERyB z^QaqKGzU=|4O_m3+He%LL4;f~!L1$V@B}_WUAKbT?}O#fsDE$`^#dy#_Tn4rL4H`? zvb>F*)c;t$jnysW9Jb<-\n" "Language: de\n" @@ -205,26 +205,26 @@ msgstr "Aktuelle Zeit" msgid "Close" msgstr "Schließen" -#: agenda/static/javascript/agenda.js:27 +#: agenda/static/javascript/agenda.js:17 #, c-format msgid ", of which %s are hidden." msgstr ", davon %s verborgen." #: static/javascript/dataTables.bootstrap.js:19 -msgid "_MENU_ participants per page" -msgstr "_MENU_ Teilnehmer/innen pro Seite" +msgid "_MENU_ entries per page" +msgstr "_MENU_ Einträge pro Seite" #: static/javascript/dataTables.bootstrap.js:20 msgid "Search:" msgstr "Suche:" #: static/javascript/dataTables.bootstrap.js:21 -msgid "Showing _START_ to _END_ of _TOTAL_ participants" -msgstr "_START_ bis _END_ von _TOTAL_ Teilnehmer/innen" +msgid "Showing _START_ to _END_ of _TOTAL_ entries" +msgstr "_START_ bis _END_ von _TOTAL_ Einträgen" #: static/javascript/dataTables.bootstrap.js:22 -msgid "Showing 0 participants" -msgstr "0 Teilnehmer/innen" +msgid "Showing 0 entries" +msgstr "0 Einträge" #: static/javascript/dataTables.bootstrap.js:23 msgid "(filtered from _MAX_ total entries)" @@ -234,18 +234,18 @@ msgstr "(gefiltert von _MAX_ Einträgen)" msgid "No matching records found" msgstr "Keine passenden Einträge gefunden" -#: static/javascript/dataTables.bootstrap.js:25 +#: static/javascript/dataTables.bootstrap.js:26 msgid "First" msgstr "Erster" -#: static/javascript/dataTables.bootstrap.js:26 +#: static/javascript/dataTables.bootstrap.js:27 msgid "Last" msgstr "Letzter" -#: static/javascript/dataTables.bootstrap.js:27 +#: static/javascript/dataTables.bootstrap.js:28 msgid "Next" msgstr "Weiter" -#: static/javascript/dataTables.bootstrap.js:28 +#: static/javascript/dataTables.bootstrap.js:29 msgid "Previous" msgstr "Zurück" diff --git a/openslides/mediafile/templates/mediafile/mediafile_list.html b/openslides/mediafile/templates/mediafile/mediafile_list.html index fbbf4e685..4eb3bc375 100644 --- a/openslides/mediafile/templates/mediafile/mediafile_list.html +++ b/openslides/mediafile/templates/mediafile/mediafile_list.html @@ -30,7 +30,7 @@ {{ mediafile.filetype }} {{ mediafile.get_filesize }} {{ mediafile.timestamp }} - {{ mediafile.uploader }} + {{ mediafile.uploader }} {% if perms.mediafile.can_manage %} diff --git a/openslides/motion/templates/motion/motion_detail.html b/openslides/motion/templates/motion/motion_detail.html index 38a13e401..1b2c9810a 100644 --- a/openslides/motion/templates/motion/motion_detail.html +++ b/openslides/motion/templates/motion/motion_detail.html @@ -20,38 +20,37 @@ {% trans "Version" %} {{ motion.version.version_number }} -
      {% trans "Back to overview" %} - PDF + PDF {% if perms.projector.can_manage_projector %} {% endif %} + {% if perms.motion.can_manage_motion or perms.agenda.can_manage_agenda %}
      - - {% trans 'More actions' %} - + + {% trans 'More actions' %}
      -
      + {% endif %}
      @@ -166,7 +165,7 @@
      {% trans "Submitter" %}:
      {% for submitter in motion.submitter.all %} - {{ submitter.person }}{% if not forloop.last %}, {% endif %} + {{ submitter }}{% if not forloop.last %}, {% endif %} {% endfor %} @@ -177,7 +176,7 @@ {% else %}
        {% for supporter in motion.supporter.all %} -
      1. {{ supporter }}
      2. +
      3. {{ supporter }}
      4. {% endfor %}
      {% endif %} diff --git a/openslides/participant/api.py b/openslides/participant/api.py index c1e865e65..303cbbec3 100644 --- a/openslides/participant/api.py +++ b/openslides/participant/api.py @@ -35,7 +35,7 @@ def gen_username(first_name, last_name): """ generates the username for new users. """ - testname = "%s_%s" % (first_name.strip(), last_name.strip()) + testname = "%s%s" % (first_name.strip(), last_name.strip()) try: User.objects.get(username=testname) except User.DoesNotExist: @@ -43,7 +43,7 @@ def gen_username(first_name, last_name): i = 0 while True: i += 1 - testname = "%s_%s_%s" % (first_name, last_name, i) + testname = "%s%s%s" % (first_name, last_name, i) try: User.objects.get(username=testname) except User.DoesNotExist: @@ -110,6 +110,6 @@ def import_users(csv_file): def get_registered_group(): """ - Returns the Group 'Registered'. Upper and lower case is possible. + Returns the group 'Registered' (pk=2). """ - return Group.objects.get(name__iexact='Registered') + return Group.objects.get(pk=2) diff --git a/openslides/participant/forms.py b/openslides/participant/forms.py index c1d354dce..bff479fdd 100644 --- a/openslides/participant/forms.py +++ b/openslides/participant/forms.py @@ -22,17 +22,12 @@ from openslides.participant.models import User, Group from openslides.participant.api import get_registered_group -class UserCreateForm(forms.ModelForm, CssClassMixin): - groups = forms.ModelMultipleChoiceField( - queryset=Group.objects.exclude(name__iexact='anonymous'), - label=ugettext_lazy('Groups'), required=False) - - def __init__(self, *args, **kwargs): - if kwargs.get('instance', None) is None: - initial = kwargs.setdefault('initial', {}) - registered = get_registered_group() - initial['groups'] = [registered.pk] - super(UserCreateForm, self).__init__(*args, **kwargs) +class UserCreateForm(CssClassMixin, forms.ModelForm): + groups = LocalizedModelMultipleChoiceField( + # Hide the built-in groups 'Anonymous' (pk=1) and 'Registered' (pk=2) + queryset=Group.objects.exclude(pk=1).exclude(pk=2), + label=ugettext_lazy('Groups'), required=False, + help_text=ugettext_lazy('Hold down "Control", or "Command" on a Mac, to select more than one.')) class Meta: model = User @@ -109,21 +104,6 @@ class GroupForm(forms.ModelForm, CssClassMixin): return instance - def clean_name(self): - # Do not allow to change the name "anonymous" or give another group - # this name - data = self.cleaned_data['name'] - if self.instance.name.lower() in ['anonymous', 'registered']: - # Editing the anonymous-user - if self.instance.name.lower() != data.lower(): - raise forms.ValidationError( - _('You can not edit the name for this group.')) - else: - if data.lower() in ['anonymous', 'registered']: - raise forms.ValidationError( - _('Group name "%s" is reserved for internal use.') % data) - return data - class Meta: model = Group diff --git a/openslides/participant/templates/participant/group_detail.html b/openslides/participant/templates/participant/group_detail.html index a8aa31ec8..89ef8f960 100644 --- a/openslides/participant/templates/participant/group_detail.html +++ b/openslides/participant/templates/participant/group_detail.html @@ -9,7 +9,26 @@

      {% trans group.name %} - {% trans "Back to overview" %} + {% trans "Back to overview" %} + + {% if perms.projector.can_manage_projector %} + + + + {% endif %} + {% if perms.participant.can_manage_participant and group.pk != 1 and group.pk != 2 %} + + {% endif %}

      @@ -19,7 +38,7 @@
        {% for member in group_members %} -
      1. {{ member }}
      2. +
      3. {{ member }}
      4. {% empty %}

        {% trans "No members available." %}

        {% endfor %} diff --git a/openslides/participant/templates/participant/group_overview.html b/openslides/participant/templates/participant/group_overview.html index 1edffae99..e640e1b7d 100644 --- a/openslides/participant/templates/participant/group_overview.html +++ b/openslides/participant/templates/participant/group_overview.html @@ -1,25 +1,44 @@ {% extends "base.html" %} {% load i18n %} +{% load staticfiles %} {% load tags %} {% block title %}{{ block.super }} – {% trans "Groups" %}{% endblock %} +{% block header %} + +{% endblock %} + +{% block javascript %} + + +{% endblock %} + {% block content %} -

        {% trans "Groups" %} +

        + {% trans "Groups" %} {% trans "New" %} {% trans "Back to participants overview" %}

        - +
        + + - + + {% for group in groups %} + @@ -33,7 +52,7 @@ - {% if group.name|lower != 'anonymous' and group.name|lower != 'registered' %} + {% if group.pk != 1 and group.pk != 2 %} diff --git a/openslides/participant/templates/participant/group_widget.html b/openslides/participant/templates/participant/group_widget.html index 5145bccc2..40adca27d 100644 --- a/openslides/participant/templates/participant/group_widget.html +++ b/openslides/participant/templates/participant/group_widget.html @@ -3,7 +3,7 @@
        {% trans "ID" %} {% trans "Group" %}{% trans "Actions" %}{% trans "Actions" %}
        {{ group.pk }} + {% if group.pk == 1 or group.pk == 2 %} + + {% endif %} + {% trans group.name %} {{ user.structure_level }} {% for group in user.groups.all %} - {% if group.name != 'Registered' %} + {% if group.pk != 2 %} {% trans group.name %} {% if not forloop.last %}
        {% endif %} {% endif %} diff --git a/openslides/participant/templates/participant/user_detail.html b/openslides/participant/templates/participant/user_detail.html index 9cbda51fe..a19289414 100644 --- a/openslides/participant/templates/participant/user_detail.html +++ b/openslides/participant/templates/participant/user_detail.html @@ -7,9 +7,29 @@ {% block content %} -

        {{ shown_user.clean_name }} +

        + {{ shown_user.clean_name }} - {% trans "Back to overview" %} + {% trans "Back to overview" %} + + {% if perms.projector.can_manage_projector %} + + + + {% endif %} + {% if perms.participant.can_manage_participant %} + + {% endif %}

        diff --git a/openslides/participant/views.py b/openslides/participant/views.py index 82058ee63..2eb9ecfb1 100644 --- a/openslides/participant/views.py +++ b/openslides/participant/views.py @@ -104,6 +104,17 @@ class UserCreateView(CreateView): self.object.default_password = gen_password() self.object.set_password(self.object.default_password) + def post_save(self, form): + super(UserCreateView, self).post_save(form) + # TODO: find a better solution that makes the following lines obsolete + # Background: motion.models.use_post_save adds already the registerd group + # to new user but super(..).post_save(form) removes it and sets only the + # groups selected in the form (without 'registered') + # workaround: add registered group again manually + from openslides.participant.api import get_registered_group # TODO: Test, if global import is possible + registered = get_registered_group() + self.object.groups.add(registered) + class UserUpdateView(UpdateView): """ @@ -190,7 +201,7 @@ class ParticipantsListPDF(PDFView): counter += 1 groups = '' for group in user.groups.all(): - if unicode(group) != "Registered": + if group.pk != 2: groups += "%s
        " % unicode(group) data.append([ counter, @@ -400,7 +411,7 @@ class GroupDeleteView(DeleteView): success_url_name = 'user_group_overview' def pre_redirect(self, request, *args, **kwargs): - if self.get_object().name.lower() in ['anonymous', 'registered']: + if self.get_object().pk in [1, 2]: messages.error(request, _("You can not delete this Group.")) else: super(GroupDeleteView, self).pre_redirect(request, *args, **kwargs) diff --git a/openslides/static/javascript/dataTables.bootstrap.js b/openslides/static/javascript/dataTables.bootstrap.js index 84bbdebe8..fbffd569c 100644 --- a/openslides/static/javascript/dataTables.bootstrap.js +++ b/openslides/static/javascript/dataTables.bootstrap.js @@ -19,7 +19,7 @@ $(document).ready(function() { "sLengthMenu": gettext("_MENU_ entries per page"), "sSearch": gettext("Search:"), "sInfo": gettext("Showing _START_ to _END_ of _TOTAL_ entries"), - "sInfoEmpty": gettext("Showing 0 participants"), + "sInfoEmpty": gettext("Showing 0 entries"), "sInfoFiltered": gettext("(filtered from _MAX_ total entries)"), "sZeroRecords": gettext("No matching records found"), "oPaginate": { diff --git a/openslides/utils/auth/AnonymousAuth.py b/openslides/utils/auth/AnonymousAuth.py index f2d24303d..da5a6dbfd 100644 --- a/openslides/utils/auth/AnonymousAuth.py +++ b/openslides/utils/auth/AnonymousAuth.py @@ -27,7 +27,7 @@ class AnonymousAuth(object): """ Authenticate a user based in username / password. - - always return None as anonymous can't login.. + - always return None as anonymous can't login. """ return None @@ -35,13 +35,13 @@ class AnonymousAuth(object): """ Return the permissions a user is graneted by his group membership(s). - - try to return the permissions for the 'Anonymous' group + - try to return the permissions for the 'Anonymous' group (pk=1). """ if (not user_obj.is_anonymous() or obj is not None or not config['system_enable_anonymous']): return set() - perms = Permission.objects.filter(group__name='Anonymous') + perms = Permission.objects.filter(group__pk=1) if perms is None: return set() perms = perms.values_list('content_type__app_label', 'codename') \