From 9fb2052b3dbcdc55d736c182847eab01bae6bff7 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 28 May 2013 20:31:01 +0200 Subject: [PATCH] Bugfixing, template improvements, translation updates. - Fixed #649: Clean old motion fragments in template and pdf (about motion notes). - Fixed motion pdf issues: missing submitters, voting result and make motion state translateable- Added post_save function also for UserUpdateView. --- openslides/agenda/models.py | 2 +- openslides/agenda/templates/agenda/view.html | 44 +- openslides/locale/de/LC_MESSAGES/django.mo | Bin 38640 -> 38632 bytes openslides/locale/de/LC_MESSAGES/django.po | 451 ++++++++++-------- openslides/motion/models.py | 2 +- openslides/motion/pdf.py | 21 +- openslides/motion/static/styles/motion.css | 5 + .../templates/motion/motion_detail.html | 7 +- .../motion/templates/motion/motion_form.html | 1 + openslides/participant/views.py | 11 + openslides/static/styles/base.css | 8 +- 11 files changed, 301 insertions(+), 251 deletions(-) diff --git a/openslides/agenda/models.py b/openslides/agenda/models.py index 7d6f706cf..119a2f7da 100644 --- a/openslides/agenda/models.py +++ b/openslides/agenda/models.py @@ -137,7 +137,7 @@ class Item(MPTTModel, SlideMixin): # TODO: Rename it to 'get_related_object' object = get_slide_from_sid(self.related_sid, element=True) if object is None: - self.title = _('Item for deleted slide %s') % self.related_sid + self.title = _('< Item for deleted slide (%s) >') % self.related_sid self.related_sid = None self.save() return self diff --git a/openslides/agenda/templates/agenda/view.html b/openslides/agenda/templates/agenda/view.html index 2fe33e92b..5db1cc341 100644 --- a/openslides/agenda/templates/agenda/view.html +++ b/openslides/agenda/templates/agenda/view.html @@ -20,27 +20,25 @@

{{ item }} -
- {% trans "Back to overview" %} - {% if perms.projector.can_manage_projector %} - - - - {% endif %} - {% if perms.agenda.can_manage_agenda %} - + {% trans "Back to overview" %} + {% if perms.projector.can_manage_projector %} + + + + {% endif %} + {% if perms.agenda.can_manage_agenda %} +

@@ -48,7 +46,7 @@ {% if item.get_related_slide == item %} {{ item.text|safe|linebreaks }} {% else %} - {% trans 'Goto' %} {% trans item.get_related_type %} {{ item.get_related_slide }} + {% trans 'View' %} "{{ item.get_related_slide }}" ({% trans item.get_related_type %}) {% endif %}

@@ -146,7 +144,7 @@ {% endif %}

- {% if perms.can_manage_agenda %} + {% if perms.agenda.can_manage_agenda %}
{% csrf_token %} {% for field in form %} diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index 291346e8f4f175ee76394109ce24532a4e9bb8ec..c7f9aec845577790137906381d8fdc52df9c05d7 100644 GIT binary patch delta 11320 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 delta 11255 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 diff --git a/openslides/locale/de/LC_MESSAGES/django.po b/openslides/locale/de/LC_MESSAGES/django.po index 78b998057..0e38a1bbb 100644 --- a/openslides/locale/de/LC_MESSAGES/django.po +++ b/openslides/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OpenSlides 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-16 22:49+0200\n" +"POT-Creation-Date: 2013-05-28 22:07+0200\n" "PO-Revision-Date: 2012-07-28 11:07+0200\n" "Last-Translator: Emanuel Schuetze \n" "Language-Team: support@openslides.de\n" @@ -87,18 +87,18 @@ 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:34 -#: motion/models.py:552 participant/models.py:39 participant/views.py:193 +#: motion/models.py:562 participant/models.py:39 participant/views.py:204 #: participant/templates/participant/overview.html:48 projector/models.py:27 msgid "Title" msgstr "Titel" -#: agenda/models.py:49 motion/forms.py:39 motion/models.py:555 +#: agenda/models.py:49 motion/forms.py:39 motion/models.py:565 #: 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 +#: agenda/templates/agenda/view.html:55 participant/models.py:51 #: participant/templates/participant/overview.html:55 #: participant/templates/participant/user_detail.html:67 msgid "Comment" @@ -132,12 +132,16 @@ msgstr "Darf die Tagesordung verwalten" msgid "Can see orga items and time scheduling of agenda" msgstr "Darf Organisationspunkte und Tagesordnung-Zeitplan sehen" -#: agenda/models.py:319 +#: agenda/models.py:140 +msgid "Item for deleted slide %s" +msgstr "Eintrag für gelöschte Folie %s" + +#: agenda/models.py:327 #, python-format msgid "%(person)s is already on the list of speakers of item %(id)s." msgstr "%(person)s ist bereits auf der Rednerliste von Eintrag %(id)s." -#: agenda/models.py:359 +#: agenda/models.py:367 msgid "Can put oneself on the list of speakers" msgstr "Darf sich selbst auf die Rednerliste setzen" @@ -154,8 +158,8 @@ msgid "Number of last speakers to be shown on the projector" msgstr "Anzahl der dargestellten letzten Redner auf dem Projektor" #: agenda/signals.py:59 agenda/slides.py:23 agenda/slides.py:29 -#: agenda/views.py:241 agenda/views.py:242 agenda/views.py:499 -#: agenda/views.py:514 agenda/templates/agenda/overview.html:8 +#: agenda/views.py:241 agenda/views.py:242 agenda/views.py:521 +#: agenda/views.py:536 agenda/templates/agenda/overview.html:8 #: agenda/templates/agenda/overview.html:40 #: agenda/templates/agenda/overview.html:87 #: agenda/templates/projector/AgendaSummary.html:6 @@ -185,7 +189,7 @@ msgstr "Eintrag %s und seine Kindelemente wurde erfolgreich gelöscht." msgid "Item %s was successfully deleted." msgstr "Eintrag %s wurde erfolgreich gelöscht." -#: agenda/views.py:267 agenda/views.py:476 +#: agenda/views.py:267 agenda/views.py:483 msgid "The list of speakers is closed." msgstr "Die Rednerliste ist geschlossen." @@ -211,7 +215,7 @@ msgstr "Es spricht derzeit kein Redner zu %(item)s." msgid "Could not change order. Invalid data." msgstr "Die Reihenfolge kann nicht verändert werden. Ungültige Daten." -#: agenda/views.py:470 +#: agenda/views.py:477 msgid "" "There is no list of speakers for the current slide. Please choose the agenda " "item manually from the agenda." @@ -219,24 +223,35 @@ msgstr "" "Es existiert keine Rednerliste für die aktuelle Folie. Bitte wählen Sie den " "Tagesordnungseintrag manuell von der Tagesordnung." -#: agenda/views.py:483 +#: agenda/views.py:490 msgid "You are already on the list of speakers." msgstr "Sie stehen bereits auf der Rednerliste." -#: agenda/views.py:485 +#: agenda/views.py:494 msgid "You can not put yourself on the list of speakers." msgstr "Sie können sich nicht selbst auf die Rednerliste setzen." -#: agenda/views.py:525 -#: agenda/templates/agenda/overlay_speaker_projector.html:5 +#: agenda/views.py:503 +#, python-format +msgid "%s is now speaking." +msgstr "" + +#: agenda/views.py:505 +#: agenda/templates/agenda/overlay_speaker_projector.html:46 +#: agenda/templates/projector/agenda_list_of_speaker.html:47 +msgid "The list of speakers is empty." +msgstr "Die Rednerliste ist leer." + +#: agenda/views.py:547 +#: agenda/templates/agenda/overlay_speaker_projector.html:33 #: agenda/templates/agenda/overlay_speaker_widget.html:5 -#: agenda/templates/agenda/view.html:57 -#: agenda/templates/projector/agenda_list_of_speaker.html:11 +#: agenda/templates/agenda/view.html:61 +#: agenda/templates/projector/agenda_list_of_speaker.html:28 msgid "List of speakers" msgstr "Rednerliste" #: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:17 -#: agenda/templates/agenda/view.html:32 +#: agenda/templates/agenda/view.html:38 msgid "Edit item" msgstr "Eintrag bearbeiten" @@ -245,13 +260,13 @@ msgstr "Eintrag bearbeiten" msgid "New item" msgstr "Neuer Eintrag" -#: agenda/templates/agenda/edit.html:22 agenda/templates/agenda/view.html:24 +#: agenda/templates/agenda/edit.html:22 agenda/templates/agenda/view.html:23 #: assignment/templates/assignment/edit.html:22 #: 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:23 -#: motion/templates/motion/motion_form.html:37 +#: motion/templates/motion/motion_form.html:38 #: motion/templates/motion/motion_form_csv_import.html:11 #: participant/templates/participant/edit.html:22 #: participant/templates/participant/group_detail.html:12 @@ -269,8 +284,8 @@ msgstr "Zurück zur Übersicht" #: config/templates/config/config_form.html:44 #: mediafile/templates/mediafile/mediafile_form.html:33 #: motion/templates/motion/category_form.html:28 -#: motion/templates/motion/motion_form.html:46 -#: motion/templates/motion/motion_form_csv_import.html:41 +#: motion/templates/motion/motion_form.html:47 +#: motion/templates/motion/motion_form_csv_import.html:42 #: motion/templates/motion/poll_form.html:73 #: participant/templates/participant/edit.html:36 #: participant/templates/participant/group_edit.html:31 @@ -283,8 +298,8 @@ msgstr "Abbrechen" #: config/templates/config/config_form.html:46 #: mediafile/templates/mediafile/mediafile_form.html:35 #: motion/templates/motion/category_form.html:31 -#: motion/templates/motion/motion_form.html:49 -#: motion/templates/motion/motion_form_csv_import.html:44 +#: motion/templates/motion/motion_form.html:50 +#: motion/templates/motion/motion_form_csv_import.html:45 #: participant/templates/participant/edit.html:39 #: participant/templates/participant/group_edit.html:34 #: participant/templates/participant/import.html:41 @@ -297,7 +312,7 @@ msgid "Show agenda item" msgstr "Tagesordnungseintrag projizieren" #: agenda/templates/agenda/item_row.html:16 -#: agenda/templates/agenda/view.html:69 agenda/templates/agenda/widget.html:34 +#: agenda/templates/agenda/view.html:73 agenda/templates/agenda/widget.html:34 msgid "Show list of speakers" msgstr "Rednerliste projizieren" @@ -319,7 +334,7 @@ msgid "Edit" msgstr "Bearbeiten" #: agenda/templates/agenda/item_row.html:24 -#: agenda/templates/agenda/view.html:125 +#: agenda/templates/agenda/view.html:129 #: assignment/templates/assignment/overview.html:64 #: assignment/templates/assignment/view.html:168 #: mediafile/templates/mediafile/mediafile_list.html:38 @@ -345,40 +360,39 @@ msgstr "Ende" msgid "Change status (open/closed)" msgstr "Status ändern (offen/abgeschlossen)" -#: agenda/templates/agenda/overlay_speaker_projector.html:5 -#: agenda/templates/agenda/view.html:57 -#: agenda/templates/projector/agenda_list_of_speaker.html:12 +#: agenda/templates/agenda/overlay_speaker_projector.html:33 +#: agenda/templates/agenda/view.html:61 +#: agenda/templates/projector/agenda_list_of_speaker.html:29 msgid "closed" msgstr "geschlossen" -#: agenda/templates/agenda/overlay_speaker_projector.html:18 -#: agenda/templates/projector/agenda_list_of_speaker.html:30 -msgid "The list of speakers is empty." -msgstr "Die Rednerliste ist leer." +#: agenda/templates/agenda/overlay_speaker_widget.html:5 +msgid "This overlay only appears on agenda slides if it is activated" +msgstr "" #: agenda/templates/agenda/overview.html:32 msgid "Do you want to save the changed order of agenda items?" 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 +#: agenda/templates/agenda/view.html:86 assignment/models.py:288 #: 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:715 -#: motion/pdf.py:147 motion/pdf.py:269 -#: motion/templates/motion/motion_detail.html:207 +#: assignment/templates/projector/Assignment.html:82 motion/models.py:723 +#: motion/pdf.py:134 motion/pdf.py:256 +#: motion/templates/motion/motion_detail.html:204 #: motion/templates/projector/Motion.html:27 utils/utils.py:46 #: utils/views.py:169 msgid "Yes" msgstr "Ja" #: agenda/templates/agenda/overview.html:35 -#: agenda/templates/agenda/view.html:83 assignment/models.py:288 +#: agenda/templates/agenda/view.html:87 assignment/models.py:288 #: assignment/views.py:581 assignment/templates/assignment/view.html:202 -#: assignment/templates/projector/Assignment.html:79 motion/models.py:715 -#: motion/pdf.py:147 motion/pdf.py:270 -#: motion/templates/motion/motion_detail.html:208 +#: assignment/templates/projector/Assignment.html:79 motion/models.py:723 +#: motion/pdf.py:134 motion/pdf.py:257 +#: motion/templates/motion/motion_detail.html:205 #: motion/templates/projector/Motion.html:28 utils/utils.py:46 #: utils/views.py:169 msgid "No" @@ -450,27 +464,15 @@ msgstr "Keine Einträge vorhanden." msgid "Put me on the current list of speakers" msgstr "Auf die aktuelle Rednerliste setzen" -#: agenda/templates/agenda/speaker_widget.html:6 +#: agenda/templates/agenda/speaker_widget.html:8 msgid "Go to current list of speakers" msgstr "Zur aktuellen Rednerliste" -#: agenda/templates/agenda/speaker_widget.html:10 +#: agenda/templates/agenda/speaker_widget.html:12 msgid "Next speaker" msgstr "Nächster Redner" -#: agenda/templates/agenda/view.html:28 -#: 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" - -#: agenda/templates/agenda/view.html:33 -msgid "Delete item" -msgstr "Eintrag löschen" - -#: agenda/templates/agenda/view.html:40 agenda/templates/agenda/widget.html:8 +#: agenda/templates/agenda/view.html:27 agenda/templates/agenda/widget.html:8 #: agenda/templates/agenda/widget.html:23 #: assignment/templates/assignment/overview.html:56 #: assignment/templates/assignment/widget.html:7 @@ -486,55 +488,71 @@ msgstr "Eintrag löschen" msgid "Show" msgstr "Anzeigen" -#: agenda/templates/agenda/view.html:61 +#: agenda/templates/agenda/view.html:34 +#: 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" + +#: agenda/templates/agenda/view.html:39 +msgid "Delete item" +msgstr "Eintrag löschen" + +#: agenda/templates/agenda/view.html:49 +msgid "View" +msgstr "" + +#: agenda/templates/agenda/view.html:65 msgid "Open list" msgstr "Liste öffnen" -#: agenda/templates/agenda/view.html:63 +#: agenda/templates/agenda/view.html:67 msgid "Close list" msgstr "Liste schließen" -#: agenda/templates/agenda/view.html:71 +#: agenda/templates/agenda/view.html:75 msgid "Show list" msgstr "Liste projizieren" -#: agenda/templates/agenda/view.html:79 +#: agenda/templates/agenda/view.html:83 msgid "Do you want to save the changed order of speakers?" msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" -#: agenda/templates/agenda/view.html:92 +#: agenda/templates/agenda/view.html:96 msgid "Last speakers" msgstr "Letzte Redner" -#: agenda/templates/agenda/view.html:95 +#: agenda/templates/agenda/view.html:99 msgid "Show all speakers" msgstr "Alle Redner anzeigen" -#: agenda/templates/agenda/view.html:99 +#: agenda/templates/agenda/view.html:103 msgid "Current speaker" msgstr "Aktueller Redner" -#: agenda/templates/agenda/view.html:101 +#: agenda/templates/agenda/view.html:105 msgid "Next speakers" msgstr "Nächster Redner" -#: agenda/templates/agenda/view.html:121 +#: agenda/templates/agenda/view.html:125 msgid "End speach" msgstr "Rede beenden" -#: agenda/templates/agenda/view.html:123 +#: agenda/templates/agenda/view.html:127 msgid "Begin speach" msgstr "Rede beginnen" -#: agenda/templates/agenda/view.html:137 +#: agenda/templates/agenda/view.html:141 msgid "Remove me from the list" msgstr "Entferne mich von der Liste" -#: agenda/templates/agenda/view.html:139 +#: agenda/templates/agenda/view.html:143 msgid "Put me on the list" msgstr "Setze mich auf die Liste" -#: agenda/templates/agenda/view.html:149 +#: agenda/templates/agenda/view.html:153 #: assignment/templates/assignment/poll_view.html:83 #: assignment/templates/assignment/view.html:109 #: motion/templates/motion/poll_form.html:70 @@ -543,7 +561,7 @@ msgstr "Setze mich auf die Liste" msgid "Apply" msgstr "Übernehmen" -#: agenda/templates/agenda/view.html:151 +#: agenda/templates/agenda/view.html:155 #: assignment/templates/assignment/view.html:111 msgid "Add new participant" msgstr "Neue/n Teilnehmer/in hinzufügen" @@ -569,6 +587,10 @@ msgstr "Anzahl der zur Wahl stehenden Posten" msgid "Nominate a participant" msgstr "Teilnehmer/in vorschlagen" +#: assignment/models.py:40 +msgid "assignment" +msgstr "Wahl" + #: assignment/models.py:42 assignment/templates/assignment/view.html:279 msgid "Searching for candidates" msgstr "Auf Kandidatensuche" @@ -639,7 +661,7 @@ msgstr "Darf selbst für Wahlen kandidieren" msgid "Can manage assignment" msgstr "Darf Wahlen verwalten" -#: assignment/models.py:288 motion/models.py:715 +#: assignment/models.py:288 motion/models.py:723 msgid "Abstain" msgstr "Enthaltung" @@ -647,7 +669,7 @@ msgstr "Enthaltung" msgid "Votes" msgstr "Stimmen" -#: assignment/models.py:307 motion/models.py:729 +#: assignment/models.py:307 #, python-format msgid "Ballot %d" msgstr "Wahlgang %d" @@ -721,7 +743,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:454 participant/views.py:478 +#: assignment/views.py:117 participant/views.py:465 participant/views.py:489 #: 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." @@ -822,8 +844,8 @@ msgstr "Wahlen: %s" msgid "Candidates" msgstr "Kandidaten/innen" -#: assignment/views.py:402 motion/pdf.py:133 -#: motion/templates/motion/motion_detail.html:194 +#: assignment/views.py:402 motion/pdf.py:120 +#: motion/templates/motion/motion_detail.html:191 msgid "Vote results" msgstr "Abstimmungsergebnis" @@ -861,8 +883,8 @@ msgstr "Ungültige Stimmen" #: 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:212 +#: assignment/templates/projector/Assignment.html:115 motion/pdf.py:135 +#: motion/templates/motion/motion_detail.html:209 #: motion/templates/motion/poll_form.html:51 #: motion/templates/projector/Motion.html:32 poll/models.py:76 msgid "Votes cast" @@ -896,8 +918,8 @@ msgstr[0] "%d verfügbare Posten" msgstr[1] "%d verfügbare Posten" #: 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:209 +#: assignment/templates/projector/Assignment.html:80 motion/pdf.py:134 +#: motion/pdf.py:258 motion/templates/motion/motion_detail.html:206 #: motion/templates/projector/Motion.html:29 msgid "Abstention" msgstr "Enthaltung" @@ -1046,8 +1068,8 @@ msgid "was not a
candidate" msgstr "war kein Kandidat" #: assignment/templates/assignment/view.html:224 -#: assignment/templates/projector/Assignment.html:100 motion/pdf.py:147 -#: motion/templates/motion/motion_detail.html:210 +#: assignment/templates/projector/Assignment.html:100 motion/pdf.py:134 +#: motion/templates/motion/motion_detail.html:207 #: motion/templates/projector/Motion.html:30 msgid "Invalid" msgstr "Ungültig" @@ -1130,7 +1152,7 @@ msgid "General" msgstr "Allgemein" #: core/templates/core/version.html:5 core/templates/core/version.html.py:8 -#: core/templates/core/version.html:11 motion/pdf.py:117 +#: core/templates/core/version.html:11 motion/pdf.py:104 #: motion/templates/motion/motion_detail.html:20 #: motion/templates/motion/motion_diff.html:36 #: motion/templates/motion/motion_diff.html:40 @@ -1230,7 +1252,7 @@ msgstr "" msgid "Motion imported" msgstr "Antrag importiert" -#: motion/forms.py:45 motion/models.py:558 motion/pdf.py:170 +#: motion/forms.py:45 motion/models.py:568 motion/pdf.py:157 #: motion/templates/motion/motion_detail.html:81 #: motion/templates/motion/motion_diff.html:55 #: motion/templates/projector/Motion.html:73 @@ -1244,7 +1266,7 @@ msgstr "Begründung" msgid "Submitter" msgstr "Antragsteller/in" -#: motion/forms.py:84 motion/pdf.py:79 +#: motion/forms.py:84 motion/pdf.py:80 #: motion/templates/motion/motion_detail.html:173 #: motion/templates/motion/motion_list.html:44 msgid "Supporters" @@ -1258,7 +1280,7 @@ msgstr "Keine neue Version erzeugen" 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:113 motion/templates/motion/motion_detail.html:234 +#: motion/forms.py:113 motion/templates/motion/motion_detail.html:231 #: motion/templates/motion/motion_list.html:40 msgid "Category" msgstr "Sachgebiet" @@ -1279,13 +1301,13 @@ 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 +#: motion/forms.py:159 participant/forms.py:132 msgid "CSV File" msgstr "CSV-Datei" #: motion/forms.py:160 -msgid "The file should be encoded in UTF-8." -msgstr "Die Datei sollte UTF-8-kodiert sein." +msgid "The file has to be encoded in UTF-8." +msgstr "Die Datei muss UTF-8-kodiert sein." #: motion/forms.py:167 msgid "Override existing motions with the same identifier" @@ -1311,6 +1333,10 @@ msgstr "" "Diese Person wird für jede Zeile aus Ihrer CSV-Datei als Antragsteller " "verwendet, bei der kein gültiger Antragsteller enthalten ist." +#: motion/models.py:46 +msgid "motion" +msgstr "Antrag" + #: motion/models.py:91 msgid "Can see motions" msgstr "Darf Anträge sehen" @@ -1327,48 +1353,72 @@ msgstr "Darf Anträge unterstützen" msgid "Can manage motions" msgstr "Darf Anträge verwalten" -#: motion/models.py:575 +#: motion/models.py:468 motion/models.py:469 motion/signals.py:111 +#: motion/views.py:233 motion/views.py:546 +#: motion/templates/motion/motion_detail.html:7 +#: motion/templates/motion/motion_detail.html:15 +#: motion/templates/motion/motion_diff.html:7 +#: motion/templates/motion/motion_diff.html:20 +#: motion/templates/motion/poll_form.html:6 +#: motion/templates/motion/poll_form.html:14 +#: motion/templates/projector/Motion.html:7 +#: motion/templates/projector/Motion.html:56 +#: motion/templates/projector/Motion.html:58 +msgid "Motion" +msgstr "Antrag" + +#: motion/models.py:585 msgid "new" msgstr "Neu" -#: motion/models.py:622 motion/templates/motion/category_list.html:22 +#: motion/models.py:632 motion/templates/motion/category_list.html:22 msgid "Category name" msgstr "Sachgebiet" -#: motion/models.py:625 motion/templates/motion/category_list.html:21 +#: motion/models.py:635 motion/templates/motion/category_list.html:21 msgid "Prefix" msgstr "Präfix" -#: motion/pdf.py:48 motion/views.py:633 +#: motion/models.py:687 +#, python-format +msgid " by %s" +msgstr "" + +#: motion/models.py:737 +#, python-format +msgid "Vote %d" +msgstr "Abstimmung %d" + +#: motion/pdf.py:48 motion/views.py:644 #, python-format msgid "Motion: %s" msgstr "Antrag: %s" -#: motion/pdf.py:68 +#: motion/pdf.py:69 msgid "Signature" msgstr "Unterschrift" -#: motion/pdf.py:108 +#: motion/pdf.py:95 msgid "State" msgstr "Status" -#: motion/pdf.py:143 motion/templates/motion/motion_detail.html:199 +#: motion/pdf.py:130 motion/templates/motion/motion_detail.html:196 #: motion/templates/motion/poll_form.html:6 #: motion/templates/motion/poll_form.html:14 #: motion/templates/projector/Motion.html:23 msgid "Vote" msgstr "Abstimmung" -#: motion/pdf.py:254 motion/templates/motion/widget.html:26 +#: motion/pdf.py:241 motion/templates/motion/widget.html:26 msgid "No motions available." msgstr "Keine Anträge vorhanden." -#: motion/pdf.py:265 +#: motion/pdf.py:252 #, python-format msgid "Motion No. %s" msgstr "Antrag Nr. %s" -#: motion/pdf.py:267 +#: motion/pdf.py:254 #, python-format msgid "%d. Vote" msgstr "%d. Abstimmung" @@ -1394,8 +1444,8 @@ msgstr "Die Versammlung möge beschließen," msgid "Motion preamble" msgstr "Antragseinleitung" -#: motion/signals.py:73 motion/views.py:631 motion/views.py:721 -#: motion/views.py:735 motion/templates/motion/category_list.html:6 +#: motion/signals.py:73 motion/views.py:642 motion/views.py:732 +#: motion/views.py:746 motion/templates/motion/category_list.html:6 #: motion/templates/motion/motion_list.html:7 #: motion/templates/motion/motion_list.html:20 msgid "Motions" @@ -1429,18 +1479,6 @@ msgstr "pro Sachgebiet nummerieren" msgid "Set it manually" msgstr "manuell setzen" -#: 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 -#: motion/templates/motion/motion_diff.html:20 -#: motion/templates/motion/poll_form.html:6 -#: motion/templates/motion/poll_form.html:14 -#: motion/templates/projector/Motion.html:7 -#: motion/templates/projector/Motion.html:58 -msgid "Motion" -msgstr "Antrag" - #: motion/signals.py:132 msgid "Simple Workflow" msgstr "Einfacher Arbeitsablauf" @@ -1541,110 +1579,115 @@ msgstr "Verworfen (nicht zulässig)" msgid "Reject (not authorized)" msgstr "Verwerfen (nicht zulässig)" -#: motion/views.py:193 +#: motion/views.py:195 msgid "Motion created" msgstr "Antrag erstellt" -#: motion/views.py:215 +#: motion/views.py:217 msgid "Motion updated" msgstr "Antrag aktualisiert" -#: motion/views.py:241 +#: motion/views.py:233 utils/views.py:379 +#, python-format +msgid "%s was successfully deleted." +msgstr "%s wurde erfolgreich gelöscht." + +#: motion/views.py:246 msgid "Version successfully permitted." msgstr "Version erfolgreich zugelassen." -#: motion/views.py:260 +#: motion/views.py:265 #, python-format msgid "Are you sure you want permit Version %s?" msgstr "Soll Version %s wirklich zugelassen werden?" -#: motion/views.py:269 +#: motion/views.py:274 #, python-format msgid "Version %d permitted" msgstr "Version %d zugelassen" -#: motion/views.py:298 +#: motion/views.py:303 #, python-format msgid "Are you sure you want reject Version %s?" msgstr "Soll Version %s wirklich zurückgewiesen werden?" -#: motion/views.py:307 +#: motion/views.py:312 #, python-format msgid "Version %d rejected" msgstr "Version %d verworfen" -#: motion/views.py:329 +#: motion/views.py:340 msgid "At least one version number is not valid." msgstr "Mindestens eine Versionsnummer ist ungültig" -#: motion/views.py:367 +#: motion/views.py:378 msgid "You can not support this motion." msgstr "Sie dürfen diesen Antrag nicht unterstützen." -#: motion/views.py:370 +#: motion/views.py:381 msgid "You can not unsupport this motion." msgstr "Sie dürfen Ihre Unterstützung für diesen Antrag nicht entziehen." -#: motion/views.py:378 +#: motion/views.py:389 msgid "Do you really want to support this motion?" msgstr "Wollen Sie wirklich diesen Antrag unterstützen?" -#: motion/views.py:380 +#: motion/views.py:391 msgid "Do you really want to unsupport this motion?" msgstr "Wollen Sie wirklich Ihre Unterstützung für diesen Antrag entziehen?" -#: motion/views.py:392 +#: motion/views.py:403 #, python-format msgid "Supporter: +%s" msgstr "Unterstützer/in: +%s" -#: motion/views.py:395 +#: motion/views.py:406 #, python-format msgid "Supporter: -%s" msgstr "Unterstützer/in: -%s" -#: motion/views.py:400 +#: motion/views.py:411 msgid "You have supported this motion successfully." msgstr "Sie haben den Antrag erfolgreich unterstützt." -#: motion/views.py:402 +#: motion/views.py:413 msgid "You have unsupported this motion successfully." msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen." -#: motion/views.py:425 +#: motion/views.py:436 msgid "Poll created" msgstr "Abstimmung erstellt" -#: motion/views.py:426 +#: motion/views.py:437 msgid "New vote was successfully created." msgstr "Neue Abstimmung erfolgreich angelegt." -#: motion/views.py:490 +#: motion/views.py:501 msgid "Poll updated" msgstr "Abstimmung wurde aktualisiert" -#: motion/views.py:508 +#: motion/views.py:519 msgid "Poll deleted" msgstr "Abstimmung gelöscht" -#: motion/views.py:535 +#: motion/views.py:546 msgid "Poll" msgstr "Abstimmung" -#: motion/views.py:581 +#: motion/views.py:592 msgid "State changed to " msgstr "Status geändert zu " -#: motion/views.py:583 +#: motion/views.py:595 #, python-format msgid "The state of the motion was set to %s." msgstr "Der Status des Antrags wurde auf %s gesetzt." -#: motion/views.py:605 +#: motion/views.py:616 msgid "Agenda item created" msgstr "Tagesordnungseintrag angelegt" -#: motion/views.py:711 +#: motion/views.py:722 #, python-format msgid "%d motions were successfully imported." msgstr "%d Anträge wurden erfolgreich importiert." @@ -1685,8 +1728,8 @@ msgid "Show motion" msgstr "Antrag anzeigen" #: motion/templates/motion/motion_detail.html:40 -#: motion/templates/motion/motion_form.html:20 -#: motion/templates/motion/motion_form.html:29 +#: motion/templates/motion/motion_form.html:21 +#: motion/templates/motion/motion_form.html:30 msgid "Edit motion" msgstr "Antrag bearbeiten" @@ -1695,15 +1738,18 @@ msgid "Delete motion" msgstr "Antrag löschen" #: motion/templates/motion/motion_detail.html:62 -msgid "This is not the newest version." +#, fuzzy +msgid "This is not the last not rejected version." msgstr "Dies ist nicht die neuste Version." #: motion/templates/motion/motion_detail.html:64 -msgid "Go to last version" -msgstr "Zu letzten Version" +#, fuzzy +msgid "Go to last not rejected version" +msgstr "Zur letzten zugelassenen Version" #: motion/templates/motion/motion_detail.html:69 -msgid "This version is not yet authorized." +#, fuzzy +msgid "This version is not authorized." msgstr "Diese Version wurde noch nicht zugelassen." #: motion/templates/motion/motion_detail.html:71 @@ -1746,58 +1792,58 @@ msgstr "Diese Version wurde verworfen" msgid "Show log" msgstr "Log anzeigen" -#: motion/templates/motion/motion_detail.html:201 +#: motion/templates/motion/motion_detail.html:198 msgid "Edit Vote" msgstr "Abstimmung bearbeiten" -#: motion/templates/motion/motion_detail.html:202 +#: motion/templates/motion/motion_detail.html:199 msgid "Delete Vote" msgstr "Abstimmung löschen" -#: motion/templates/motion/motion_detail.html:217 +#: motion/templates/motion/motion_detail.html:214 msgid "No results" msgstr "Keine Ergebnisse" -#: motion/templates/motion/motion_detail.html:228 +#: motion/templates/motion/motion_detail.html:225 msgid "New vote" msgstr "Neue Abstimmung" -#: motion/templates/motion/motion_detail.html:245 +#: motion/templates/motion/motion_detail.html:242 msgid "Last changes (of this version)" msgstr "Letzte Änderung (von dieser Version)" -#: motion/templates/motion/motion_detail.html:247 +#: motion/templates/motion/motion_detail.html:244 #: 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:258 +#: motion/templates/motion/motion_detail.html:255 msgid "Withdraw motion" msgstr "Antrag zurückziehen" -#: motion/templates/motion/motion_detail.html:267 +#: motion/templates/motion/motion_detail.html:264 msgid "Unsupport" msgstr "Nicht unterstützen" -#: motion/templates/motion/motion_detail.html:273 +#: motion/templates/motion/motion_detail.html:270 msgid "Support" msgstr "Unterstützen" -#: motion/templates/motion/motion_detail.html:281 +#: motion/templates/motion/motion_detail.html:278 msgid "minimum required supporters" msgstr "minimal erforderliche Unterstützer/innen" -#: motion/templates/motion/motion_detail.html:288 +#: motion/templates/motion/motion_detail.html:285 msgid "Manage motion" msgstr "Antrag verwalten" -#: motion/templates/motion/motion_detail.html:296 +#: motion/templates/motion/motion_detail.html:293 msgid "For administration only:" msgstr "Nur zur Administration:" -#: motion/templates/motion/motion_detail.html:298 +#: motion/templates/motion/motion_detail.html:295 msgid "Reset state" msgstr "Status zurücksetzen" @@ -1806,13 +1852,13 @@ msgid "Diff view" msgstr "Änderungsanzeige" #: motion/templates/motion/motion_diff.html:28 -#: motion/templates/motion/motion_form.html:35 +#: motion/templates/motion/motion_form.html:36 #: motion/templates/motion/poll_form.html:18 msgid "Back to motion" msgstr "Zurück zum Antrag" -#: motion/templates/motion/motion_form.html:22 -#: motion/templates/motion/motion_form.html:31 +#: motion/templates/motion/motion_form.html:23 +#: motion/templates/motion/motion_form.html:32 #: motion/templates/motion/motion_list.html:24 msgid "New motion" msgstr "Neuer Antrag" @@ -1825,7 +1871,7 @@ msgstr "Anträge importieren" #: motion/templates/motion/motion_form_csv_import.html:15 msgid "Select a CSV file to import motions" -msgstr "Wählen Sie eine CSV-Datei zum Importieren von Anträgen aus!" +msgstr "Wählen Sie eine CSV-Datei zum Importieren von Anträgen aus" #: motion/templates/motion/motion_form_csv_import.html:17 #: participant/templates/participant/import.html:17 @@ -1848,18 +1894,22 @@ msgid "" "Identifier, reason, submitter and category are optional and may be empty" msgstr "" "Bezeichner, Begründung, Antragsteller und Sachgebiet sind optional und " -"dürfen leer bleiben." +"dürfen leer bleiben" -#: motion/templates/motion/motion_form_csv_import.html:27 -msgid "Required CSV file encoding: UTF-8." -msgstr "Erforderliches Encoding der CSV-Datei: UTF-8." +#: motion/templates/motion/motion_form_csv_import.html:26 +msgid "The first line (header) is ignored" +msgstr "Die erste Zeile (Kopfzeile) wird ignoriert" -#: motion/templates/motion/motion_form_csv_import.html:30 +#: motion/templates/motion/motion_form_csv_import.html:28 +msgid "Required CSV file encoding is UTF-8" +msgstr "Erforderliches Encoding der CSV-Datei ist UTF-8" + +#: motion/templates/motion/motion_form_csv_import.html:31 #: 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_form_csv_import.html:39 #: motion/templates/motion/motion_list.html:29 #: participant/templates/participant/import.html:35 #: participant/templates/participant/overview.html:25 @@ -1898,10 +1948,6 @@ msgstr "Abstimmungsergebnis" msgid "No poll results available." msgstr "Keine Abstimmungsergebnisse vorhanden." -#: motion/templates/projector/Motion.html:56 -msgid "Motion No." -msgstr "Antrag Nr." - #: participant/__init__.py:18 participant/signals.py:56 msgid "Participant" msgstr "Teilnehmer" @@ -1926,7 +1972,7 @@ msgstr "" "Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 " "wird unterstützt!" -#: participant/forms.py:29 participant/views.py:531 +#: participant/forms.py:29 participant/views.py:542 #: participant/templates/participant/group_overview.html:7 #: participant/templates/participant/group_overview.html:20 #: participant/templates/participant/overview.html:24 @@ -1939,7 +1985,11 @@ msgid "" "Hold down \"Control\", or \"Command\" on a Mac, to select more than one." msgstr "" -#: participant/forms.py:67 +#: participant/forms.py:44 +msgid "First name and last name can not both be empty." +msgstr "" + +#: participant/forms.py:77 msgid "" "You can not remove the last group containing the permission to manage " "participants." @@ -1947,11 +1997,11 @@ msgstr "" "Sie können nicht die letzte Gruppe löschen, die das Recht zur Verwaltung von " "Teilnehmern enthält." -#: participant/forms.py:75 +#: participant/forms.py:85 msgid "Permissions" msgstr "Rechte" -#: participant/forms.py:78 participant/views.py:493 participant/views.py:517 +#: participant/forms.py:88 participant/views.py:504 participant/views.py:528 #: participant/templates/participant/overview.html:7 #: participant/templates/participant/overview.html:20 msgid "Participants" @@ -1965,7 +2015,7 @@ msgstr "Männlich" msgid "Female" msgstr "Weiblich" -#: participant/models.py:36 participant/views.py:194 +#: participant/models.py:36 participant/views.py:205 #: participant/templates/participant/overview.html:51 #: participant/templates/participant/user_detail.html:50 msgid "Structure level" @@ -1988,7 +2038,7 @@ msgstr "Geschlecht" msgid "Only for filtering the participant list." msgstr "Nur zum Filtern der Teilnehmerliste." -#: participant/models.py:45 participant/views.py:194 +#: participant/models.py:45 participant/views.py:205 #: participant/templates/participant/overview.html:53 #: participant/templates/participant/user_detail.html:52 msgid "Committee" @@ -2063,82 +2113,82 @@ msgstr "Delegierte/r" msgid "Staff" msgstr "Mitarbeiter/in" -#: participant/views.py:146 +#: participant/views.py:157 msgid "You can not delete yourself." msgstr "Sie dürfen sich nicht selbst löschen." -#: participant/views.py:167 +#: participant/views.py:178 msgid "You can not deactivate yourself." msgstr "Sie dürfen sich nicht selbst deaktivieren." -#: participant/views.py:170 +#: participant/views.py:181 msgid "You can not deactivate the administrator." msgstr "Sie dürfen den Administrator nicht deaktivieren." -#: participant/views.py:189 +#: participant/views.py:200 msgid "Participant-list" msgstr "Teilnehmerliste" -#: participant/views.py:190 +#: participant/views.py:201 msgid "List of Participants" msgstr "Teilnehmerliste" -#: participant/views.py:193 participant/templates/participant/overview.html:50 +#: participant/views.py:204 participant/templates/participant/overview.html:50 msgid "Last Name" msgstr "Nachname" -#: participant/views.py:193 participant/templates/participant/overview.html:49 +#: participant/views.py:204 participant/templates/participant/overview.html:49 msgid "First Name" msgstr "Vorname" -#: participant/views.py:194 +#: participant/views.py:205 #: participant/templates/participant/group_overview.html:31 #: participant/templates/participant/overview.html:52 msgid "Group" msgstr "Gruppe" -#: participant/views.py:230 +#: participant/views.py:241 msgid "Participant-passwords" msgstr "Teilnehmer-Passwoerter" -#: participant/views.py:260 +#: participant/views.py:271 msgid "Account for OpenSlides" msgstr "Zugang für OpenSlides" -#: participant/views.py:262 +#: participant/views.py:273 #, python-format msgid "for %s" msgstr "für %s" -#: participant/views.py:265 +#: participant/views.py:276 #, python-format msgid "User: %s" msgstr "Nutzername: %s" -#: participant/views.py:269 +#: participant/views.py:280 #, python-format msgid "Password: %s" msgstr "Passwort: %s" -#: participant/views.py:316 +#: participant/views.py:327 #, python-format msgid "%d new participants were successfully imported." msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert." -#: participant/views.py:327 +#: participant/views.py:338 msgid "Do you really want to reset the password?" msgstr "Soll das Passwort wirklich zurückgesetzt werden?" -#: participant/views.py:340 +#: participant/views.py:351 #, python-format msgid "The Password for %s was successfully reset." msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt." -#: participant/views.py:415 +#: participant/views.py:426 msgid "You can not delete this Group." msgstr "Sie dürfen diese Gruppe nicht löschen." -#: participant/views.py:426 +#: participant/views.py:437 #, python-format msgid "" "Installation was successfully! Use %(user)s (password: %(password)s) for " @@ -2151,11 +2201,11 @@ msgstr "" "Sie das Passwort nach der ersten Anmeldung! Anderenfalls erscheint diese " "Meldung weiterhin für alle und ist ein Sicherheitsrisiko." -#: participant/views.py:452 +#: participant/views.py:463 msgid "User settings successfully saved." msgstr "Nutzereinstellungen wurden erfolgreich gespeichert." -#: participant/views.py:475 +#: participant/views.py:486 msgid "Password successfully changed." msgstr "Passwort wurde erfolgreich geändert." @@ -2538,11 +2588,6 @@ msgstr "%s wurde erfolgreich bearbeitet." msgid "%s was successfully created." msgstr "%s wurde erfolgreich angelegt." -#: utils/views.py:379 -#, python-format -msgid "%s was successfully deleted." -msgstr "%s wurde erfolgreich gelöscht." - #: utils/views.py:392 msgid "undefined-filename" msgstr "undefinierter-dateiname" @@ -2551,5 +2596,11 @@ msgstr "undefinierter-dateiname" msgid "Enter valid JSON" msgstr "Gebe valides JSON ein" +#~ msgid "Go to last version" +#~ msgstr "Zu letzten Version" + +#~ msgid "Motion No." +#~ msgstr "Antrag Nr." + #~ msgid "Motion status was set to: %s." #~ msgstr "Antragsstatus wurde gesetzt auf: %s." diff --git a/openslides/motion/models.py b/openslides/motion/models.py index 31cc24488..53dfdd84a 100644 --- a/openslides/motion/models.py +++ b/openslides/motion/models.py @@ -734,7 +734,7 @@ class MotionPoll(CountInvalid, CountVotesCast, BasePoll): def __unicode__(self): """Return a string, representing the poll.""" - return _('Ballot %d') % self.poll_number + return _('Vote %d') % self.poll_number def get_absolute_url(self, link='edit'): """Return an URL for the poll. diff --git a/openslides/motion/pdf.py b/openslides/motion/pdf.py index 344f81cde..9905fca60 100644 --- a/openslides/motion/pdf.py +++ b/openslides/motion/pdf.py @@ -56,7 +56,8 @@ def motion_to_pdf(pdf, motion): stylesheet['Heading4'])) cell1b = [] cell1b.append(Spacer(0, 0.2 * cm)) - cell1b.append(Paragraph(unicode(motion.submitter), stylesheet['Normal'])) + for submitter in motion.submitter.all(): + cell1b.append(Paragraph(unicode(submitter), stylesheet['Normal'])) motion_data.append([cell1a, cell1b]) # TODO: choose this in workflow @@ -88,26 +89,12 @@ def motion_to_pdf(pdf, motion): cell3b.append(Spacer(0, 0.2 * cm)) motion_data.append([cell3a, cell3b]) - ## # status - ## cell4a = [] - ## cell4b = [] - ## note = " ".join(motion.notes) - ## cell4a.append(Paragraph("%s:" % _("Status"), stylesheet['Heading4'])) - ## if note != "": - ## if motion.status == "pub": - ## cell4b.append(Paragraph(note, stylesheet['Normal'])) - ## else: - ## cell4b.append(Paragraph("%s | %s" % (motion.get_status_display(), note), stylesheet['Normal'])) - ## else: - ## cell4b.append(Paragraph("%s" % motion.get_status_display(), stylesheet['Normal'])) - ## data.append([cell4a, cell4b]) - # Motion state cell4a = [] cell4b = [] cell4a.append(Paragraph("%s:" % _("State"), stylesheet['Heading4'])) - cell4b.append(Paragraph(motion.state.name, stylesheet['Normal'])) + cell4b.append(Paragraph(_(motion.state.name), stylesheet['Normal'])) motion_data.append([cell4a, cell4b]) # Version number (aid) @@ -137,7 +124,7 @@ def motion_to_pdf(pdf, motion): option = poll.get_options()[0] yes, no, abstain, invalid, votecast = ( option['Yes'], option['No'], option['Abstain'], - poll.print_voteinvalid(), poll.print_votecast()) + poll.print_votesinvalid(), poll.print_votescast()) if len(polls) > 1: cell6b.append(Paragraph("%s. %s" % (ballotcounter, _("Vote")), diff --git a/openslides/motion/static/styles/motion.css b/openslides/motion/static/styles/motion.css index 951f94309..b8335cea9 100644 --- a/openslides/motion/static/styles/motion.css +++ b/openslides/motion/static/styles/motion.css @@ -5,6 +5,11 @@ * :license: GNU GPL, see LICENSE for more details. */ +/* motion create/update form fields */ +#id_submitter, #id_supporter { + height: 110px; + width: auto; +} /* motion version diff table */ table.diff, .diff_row { font-size: 12px; diff --git a/openslides/motion/templates/motion/motion_detail.html b/openslides/motion/templates/motion/motion_detail.html index 3e98d6ce5..65337ea68 100644 --- a/openslides/motion/templates/motion/motion_detail.html +++ b/openslides/motion/templates/motion/motion_detail.html @@ -184,11 +184,8 @@
{% trans "Status" %}:
- {% if motion.state_id != "pub" %} - {# TODO: trans motion.state #} - {% trans motion.state.name %} -
- {% endif %} + {% trans motion.state.name %} +
{% trans "Vote results" %}:
diff --git a/openslides/motion/templates/motion/motion_form.html b/openslides/motion/templates/motion/motion_form.html index 72bb29bdb..a214bb8f4 100644 --- a/openslides/motion/templates/motion/motion_form.html +++ b/openslides/motion/templates/motion/motion_form.html @@ -6,6 +6,7 @@ {% load staticfiles %} {% block header %} + {% endblock %} diff --git a/openslides/participant/views.py b/openslides/participant/views.py index 2eb9ecfb1..708b9fdb6 100644 --- a/openslides/participant/views.py +++ b/openslides/participant/views.py @@ -132,6 +132,17 @@ class UserUpdateView(UpdateView): form_kwargs.update({'request': self.request}) return form_kwargs + def post_save(self, form): + super(UserUpdateView, 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 UserDeleteView(DeleteView): """ diff --git a/openslides/static/styles/base.css b/openslides/static/styles/base.css index 8430031f3..ce8ea5b33 100644 --- a/openslides/static/styles/base.css +++ b/openslides/static/styles/base.css @@ -167,17 +167,17 @@ legend + .control-group { height: 310px; width: auto; } -#id_submitter, #id_supporter, #id_users { +#id_users { height: 110px; width: auto; } -#dataTableParticipants_filter input { +#dataTable_filter input { width: auto; } -#dataTableParticipants { +#dataTable { clear: none; } -#dataTableParticipants_wrapper .row-fluid:after { +#dataTable_wrapper .row-fluid:after { clear: none; }