diff --git a/openslides/application/models.py b/openslides/application/models.py
index f7774a358..4d0632b3d 100644
--- a/openslides/application/models.py
+++ b/openslides/application/models.py
@@ -82,7 +82,7 @@ class Application(models.Model, SlideMixin):
else:
return self.last_version
- def accept_version(self, version):
+ def accept_version(self, version, user = None):
"""
accept a Version
"""
@@ -90,11 +90,15 @@ class Application(models.Model, SlideMixin):
self.save(nonewversion=True)
version.rejected = False
version.save()
+ self.writelog(_("Application version %d allowed") % (version.aid, ),
+ user)
- def reject_version(self, version):
+ def reject_version(self, version, user = None):
if version.id > self.permitted.id:
version.rejected = True
version.save()
+ self.writelog(_("Application version %d rejected")
+ % (version.aid, ), user)
return True
return False
@@ -175,10 +179,11 @@ class Application(models.Model, SlideMixin):
if nonewversion:
return
last_version = self.last_version
+ fields = ["text", "title", "reason"]
if last_version is not None:
- if (last_version.text == self.text
- and last_version.title == self.title
- and last_version.reason == self.reason):
+ changed_fields = [f for f in fields
+ if getattr(last_version, f) != getattr(self, f)]
+ if not changed_fields:
return # No changes
try:
if trivial_change and last_version is not None:
@@ -186,7 +191,15 @@ class Application(models.Model, SlideMixin):
last_version.title = self.title
last_version.reason = self.reason
last_version.save()
- self.writelog(_("Version %s modified") % last_version.aid, user)
+
+ meta = AVersion._meta
+ field_names = [unicode(meta.get_field(f).verbose_name)
+ for f in changed_fields]
+
+ self.writelog(_("Trivial changes to version %(version)d; "
+ "changed fields: %(changed_fields)s")
+ % dict(version = last_version.aid,
+ changed_fields = ", ".join(field_names)))
return # Done
if self.title != "":
@@ -492,9 +505,9 @@ class Application(models.Model, SlideMixin):
class AVersion(models.Model):
- title = models.CharField(max_length=100)
- text = models.TextField()
- reason = models.TextField(null=True, blank=True)
+ title = models.CharField(max_length=100, verbose_name = _("Title"))
+ text = models.TextField(verbose_name = _("Text"))
+ reason = models.TextField(null=True, blank=True, verbose_name = _("Reason"))
rejected = models.BooleanField()
time = models.DateTimeField(auto_now=True)
application = models.ForeignKey(Application)
diff --git a/openslides/application/views.py b/openslides/application/views.py
index 224697249..9caffb3ca 100644
--- a/openslides/application/views.py
+++ b/openslides/application/views.py
@@ -505,7 +505,7 @@ def permit_version(request, aversion_id):
aversion = AVersion.objects.get(pk=aversion_id)
application = aversion.application
if request.method == 'POST':
- application.accept_version(aversion)
+ application.accept_version(aversion, user = request.user)
messages.success(request, _("Version %s accepted.") % (aversion.aid))
else:
gen_confirm_form(request, _('Do you really want to permit version %s?') % aversion.aid, reverse('application_version_permit', args=[aversion.id]))
@@ -517,7 +517,7 @@ def reject_version(request, aversion_id):
aversion = AVersion.objects.get(pk=aversion_id)
application = aversion.application
if request.method == 'POST':
- if application.reject_version(aversion):
+ if application.reject_version(aversion, user = request.user):
messages.success(request, _("Version %s rejected.") % (aversion.aid))
else:
messages.error(request, _("ERROR by rejecting the version.") )
diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo
index 7d7091771..695bd9440 100644
Binary files a/openslides/locale/de/LC_MESSAGES/django.mo and b/openslides/locale/de/LC_MESSAGES/django.mo differ
diff --git a/openslides/locale/de/LC_MESSAGES/django.po b/openslides/locale/de/LC_MESSAGES/django.po
index aba64ffcb..ff386407b 100644
--- a/openslides/locale/de/LC_MESSAGES/django.po
+++ b/openslides/locale/de/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSlides 1.x\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-05-19 08:39+0200\n"
+"POT-Creation-Date: 2012-05-19 12:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emanuel Schuetze \n"
"Language-Team: German\n"
@@ -28,13 +28,13 @@ msgstr "Englisch"
msgid "Parent item"
msgstr "Elternelement"
-#: agenda/models.py:38 application/forms.py:40
+#: agenda/models.py:38 application/forms.py:40 application/models.py:508
#: application/templates/application/view.html:243 config/forms.py:27
#: projector/models.py:28
msgid "Title"
msgstr "Titel"
-#: agenda/models.py:39 application/forms.py:41
+#: agenda/models.py:39 application/forms.py:41 application/models.py:509
#: application/templates/application/view.html:244 projector/models.py:29
msgid "Text"
msgstr "Text"
@@ -93,7 +93,7 @@ msgid "Item %s was successfully deleted."
msgstr "Eintrag %s wurde erfolgreich gelöscht."
#: agenda/views.py:156 agenda/views.py:158
-#: agenda/templates/agenda/overview.html:46 application/models.py:530
+#: agenda/templates/agenda/overview.html:46 application/models.py:543
#: application/views.py:472 application/views.py:764 application/views.py:814
#: application/templates/application/view.html:79
#: application/templates/projector/Application.html:37
@@ -106,7 +106,7 @@ msgid "Yes"
msgstr "Ja"
#: agenda/views.py:156 agenda/views.py:158
-#: agenda/templates/agenda/overview.html:47 application/models.py:530
+#: agenda/templates/agenda/overview.html:47 application/models.py:543
#: application/views.py:472 application/views.py:764 application/views.py:815
#: application/templates/application/view.html:80
#: application/templates/projector/Application.html:38
@@ -121,7 +121,7 @@ msgid "Yes, with all child items."
msgstr "Ja, mit allen Kindelementen."
#: agenda/views.py:164 agenda/views.py:166 application/views.py:482
-#: participant/views.py:194 participant/views.py:289 utils/utils.py:47
+#: participant/views.py:196 participant/views.py:291 utils/utils.py:47
#: utils/views.py:212
#, python-format
msgid "Do you really want to delete %s?"
@@ -198,7 +198,6 @@ msgid "Cancel"
msgstr "Abbrechen"
#: agenda/templates/agenda/control_item.html:10
-#: projector/templates/projector/control_customslide.html:11
#: projector/templates/projector/default_control_slidefunc.html:9
#: projector/templates/projector/default_control_slidemodel.html:10
msgid "Preview"
@@ -277,7 +276,7 @@ msgstr "Aktionen"
msgid "No items available."
msgstr "Keine Einträge vorhanden."
-#: application/forms.py:42 application/views.py:782
+#: application/forms.py:42 application/models.py:510 application/views.py:782
#: application/templates/application/view.html:226
#: application/templates/application/view.html:246
#: application/templates/projector/Application.html:77
@@ -396,95 +395,108 @@ msgstr "Verworfen (nicht zulässig)"
msgid "Needs Review"
msgstr "Benötigt Review"
-#: application/models.py:125
+#: application/models.py:93
+#, python-format
+msgid "Application version %d allowed"
+msgstr "Antrag Version %d zugelassen"
+
+#: application/models.py:100
+#, python-format
+msgid "Application version %d rejected"
+msgstr "Antrag Version %d zurückgewiesen"
+
+#: application/models.py:129
msgid "Searching for supporters."
msgstr "Auf Unterstützersuche."
-#: application/models.py:127
+#: application/models.py:131
msgid "Not yet permitted."
msgstr "Noch nicht zugelassen."
-#: application/models.py:129
+#: application/models.py:133
msgid "Not yet permitted changes."
msgstr "Noch nicht zugelassene Änderungen."
-#: application/models.py:189
+#: application/models.py:199
#, python-format
-msgid "Version %s modified"
-msgstr "Version %s bearbeitet"
+msgid ""
+"Trivial changes to version %(version)d; changed fields: %(changed_fields)s"
+msgstr ""
+"Triviale Änderung an Version %(version)d; Geänderte Felder: "
+"%(changed_fields)s"
-#: application/models.py:198
+#: application/models.py:211
#, python-format
msgid "Version %s created"
msgstr "Version %s erstellt"
-#: application/models.py:207
+#: application/models.py:220
msgid "Supporters removed"
msgstr "Unterstützer/innen gelöscht"
-#: application/models.py:216
+#: application/models.py:229
#, python-format
msgid "Status reseted to: %s"
msgstr "Status zurückgesetzt auf: %s"
-#: application/models.py:229 application/views.py:230
+#: application/models.py:242 application/views.py:230
#, python-format
msgid "Supporter: +%s"
msgstr "Unterstützer/in: +%s"
-#: application/models.py:239 application/views.py:241
+#: application/models.py:252 application/views.py:241
#, python-format
msgid "Supporter: -%s"
msgstr "Unterstützer/in: -%s"
-#: application/models.py:255
+#: application/models.py:268
#, python-format
msgid "Number set: %s"
msgstr "Nummer gesetzt: %s"
-#: application/models.py:268
+#: application/models.py:281
#, python-format
msgid "Version %s permitted"
msgstr "Version %s zugelassen"
-#: application/models.py:282
+#: application/models.py:295
#, python-format
msgid "Version %s not permitted"
msgstr "Version %s nicht zugelassen"
-#: application/models.py:308
+#: application/models.py:321
msgid "Status modified"
msgstr "Status geändert"
-#: application/models.py:406
+#: application/models.py:419
msgid "by"
msgstr "von"
-#: application/models.py:439
+#: application/models.py:452
msgid "Poll created"
msgstr "Abstimmung erstellt"
-#: application/models.py:487
+#: application/models.py:500
msgid "Can see application"
msgstr "Darf Anträge sehen"
-#: application/models.py:488
+#: application/models.py:501
msgid "Can create application"
msgstr "Darf Anträge erstellen"
-#: application/models.py:489
+#: application/models.py:502
msgid "Can support application"
msgstr "Darf Anträge unterstützen"
-#: application/models.py:490
+#: application/models.py:503
msgid "Can manage application"
msgstr "Darf Anträge verwalten"
-#: application/models.py:530
+#: application/models.py:543
msgid "Abstain"
msgstr "Enthaltung"
-#: application/models.py:563 application/views.py:667 application/views.py:873
+#: application/models.py:576 application/views.py:667 application/views.py:873
#: application/templates/application/base_application.html:9
#: application/templates/application/overview.html:7
#: application/templates/application/overview.html:10
@@ -510,8 +522,8 @@ msgid "Application was successfully modified."
msgstr "Antrag wurde erfolgreich geändert."
#: application/views.py:252 application/views.py:638 assignment/views.py:130
-#: participant/views.py:171 participant/views.py:274 participant/views.py:303
-#: participant/views.py:461 utils/views.py:157 utils/views.py:173
+#: participant/views.py:173 participant/views.py:276 participant/views.py:305
+#: participant/views.py:463 utils/views.py:157 utils/views.py:173
#: utils/views.py:193
msgid "Please check the form for errors."
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
@@ -619,7 +631,7 @@ msgstr "FEHLER beim Zurückweisen der Version."
msgid "Do you really want to reject version %s?"
msgstr "Soll Version %s wirklich zurückgewiesen werden?"
-#: application/views.py:534 participant/views.py:319
+#: application/views.py:534 participant/views.py:321
msgid ""
"The import function is available for the superuser (without user profile) "
"only."
@@ -627,7 +639,7 @@ msgstr ""
"Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar."
#: application/views.py:565 application/views.py:569 application/views.py:575
-#: application/views.py:578 participant/views.py:388
+#: application/views.py:578 participant/views.py:390
#, python-format
msgid "Ignoring malformed line %d in import file."
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
@@ -653,11 +665,11 @@ msgid_plural "%d new users were added."
msgstr[0] "%d neuer Nutzer wurde erstellt."
msgstr[1] "%d neue Nutzer wurden erstellt."
-#: application/views.py:634 participant/views.py:457
+#: application/views.py:634 participant/views.py:459
msgid "Import aborted because of severe errors in the input file."
msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen."
-#: application/views.py:636 participant/views.py:459
+#: application/views.py:636 participant/views.py:461
msgid "Import file has wrong character encoding, only UTF-8 is supported!"
msgstr ""
"Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 "
@@ -1575,7 +1587,7 @@ msgstr "Gast"
msgid "Gender"
msgstr "Geschlecht"
-#: participant/models.py:34 participant/views.py:501
+#: participant/models.py:34 participant/views.py:503
#: participant/templates/participant/overview.html:28
#: participant/templates/participant/overview.html:66
msgid "Group"
@@ -1585,7 +1597,7 @@ msgstr "Gruppe"
msgid "Typ"
msgstr "Typ"
-#: participant/models.py:36 participant/views.py:501
+#: participant/models.py:36 participant/views.py:503
#: participant/templates/participant/overview.html:43
#: participant/templates/participant/overview.html:68
msgid "Committee"
@@ -1603,63 +1615,63 @@ msgstr "Darf die Teilnehmer/inen sehen"
msgid "Can manage participant"
msgstr "Darf die Teilnehmer/inen verwalten"
-#: participant/views.py:163
+#: participant/views.py:165
msgid "New participant was successfully created."
msgstr "Neue/r Teilnehmer/in wurde erfolgreich angelegt."
-#: participant/views.py:165
+#: participant/views.py:167
msgid "Participant was successfully modified."
msgstr "Teilnehmer/in wurde erfolgreich geändert."
-#: participant/views.py:192
+#: participant/views.py:194
#, python-format
msgid "Participant %s was successfully deleted."
msgstr "Teilnehmer/in %s wurde erfolgreich gelöscht."
-#: participant/views.py:205
+#: participant/views.py:207
#, python-format
msgid "Participant %d does not exist."
msgstr "Teilnehmer/in %d existiert nicht."
-#: participant/views.py:252
+#: participant/views.py:254
#, python-format
msgid "Group name \"%s\" is reserved for internal use."
msgstr "Der Gruppenname \"%s\" ist für interne Verwendung reserviert."
-#: participant/views.py:266
+#: participant/views.py:268
msgid "New group was successfully created."
msgstr "Neue Gruppe wurde erfolgreich angelegt."
-#: participant/views.py:268
+#: participant/views.py:270
msgid "Group was successfully modified."
msgstr "Gruppe wurde erfolgreich geändert."
-#: participant/views.py:287
+#: participant/views.py:289
#, python-format
msgid "Group %s was successfully deleted."
msgstr "Gruppe %s wurde erfolgreich gelöscht."
-#: participant/views.py:301
+#: participant/views.py:303
msgid "User settings successfully saved."
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
-#: participant/views.py:371
+#: participant/views.py:373
msgid "Supporters removed after user import."
msgstr "Unterstützer/innen nach Benutzerimport zurückgesetzt."
-#: participant/views.py:424
+#: participant/views.py:426
#, python-format
msgid "Reassigned to \"%s\" after (re)importing users."
msgstr "Nach Benutzerimport erneut \"%s\" zugeordnet."
-#: participant/views.py:427 participant/views.py:441
+#: participant/views.py:429 participant/views.py:443
#, python-format
msgid "Could not reassing application %d - object not found!"
msgstr ""
"Antrag Id#%d konnte nicht neu zugewiesen werden - Das Objekt wurde nicht "
"gefunden!"
-#: participant/views.py:444
+#: participant/views.py:446
#, python-format
msgid "%d application could not be reassigned and needs a review!"
msgid_plural "%d applications could not be reassigned and need a review!"
@@ -1668,26 +1680,26 @@ msgstr[0] ""
msgstr[1] ""
"%d Anträge konnten nicht neu zugewiesen werden und benötigen ein Review!"
-#: participant/views.py:447
+#: participant/views.py:449
#, python-format
msgid "%d application was successfully reassigned."
msgid_plural "%d applications were successfully reassigned."
msgstr[0] "%d Antrag wurde erfolgreich neu zugewiesen."
msgstr[1] "%d Anträge wurden erfolgreich neu zugewiesen."
-#: participant/views.py:450
+#: participant/views.py:452
#, python-format
msgid "%d application was discarded."
msgid_plural "%d applications were discarded."
msgstr[0] "%d Antrag wurde gelöscht."
msgstr[1] "%d Anträge wurden gelöscht."
-#: participant/views.py:454
+#: participant/views.py:456
#, python-format
msgid "%d new participants were successfully imported."
msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert."
-#: participant/views.py:463
+#: participant/views.py:465
msgid ""
"Attention: All existing participants will be removed if you import new "
"participants."
@@ -1695,12 +1707,12 @@ msgstr ""
"Achtung: Alle existierenden Teilnehmer/innen werden gelöscht, wenn Sie neue "
"Teilnehmer/innen importieren."
-#: participant/views.py:465
+#: participant/views.py:467
msgid "Attention: Supporters from all existing applications will be removed."
msgstr ""
"Achtung: Alle Unterstützer/innen werden von existiernden Anträgen gelöscht."
-#: participant/views.py:466
+#: participant/views.py:468
msgid ""
"Attention: Applications which can't be mapped to new users will be set to "
"'Needs Review'."
@@ -1708,17 +1720,17 @@ msgstr ""
"Achtung: Anträge welche keinem Nutzer zugeordnet werden können bekommen "
"automatisch den Status \"Benötigt Review\"."
-#: participant/views.py:478
+#: participant/views.py:480
#, python-format
msgid "The Password for %s was successfully reset."
msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt."
-#: participant/views.py:480
+#: participant/views.py:482
#, python-format
msgid "Do you really want to reset the password for %s?"
msgstr "Soll das Passwort für %s wirklich zurückgesetzt werden?"
-#: participant/views.py:488
+#: participant/views.py:490
#: participant/templates/participant/base_participant.html:12
#: participant/templates/participant/overview.html:6
#: participant/templates/participant/overview.html:16
@@ -1726,56 +1738,56 @@ msgstr "Soll das Passwort für %s wirklich zurückgesetzt werden?"
msgid "Participants"
msgstr "Teilnehmer/innen"
-#: participant/views.py:497
+#: participant/views.py:499
msgid "Participant-list"
msgstr "Teilnehmerliste"
-#: participant/views.py:498
+#: participant/views.py:500
msgid "List of Participants"
msgstr "Teilnehmerliste"
-#: participant/views.py:501 participant/templates/participant/overview.html:65
+#: participant/views.py:503 participant/templates/participant/overview.html:65
msgid "Last Name"
msgstr "Nachname"
-#: participant/views.py:501 participant/templates/participant/overview.html:64
+#: participant/views.py:503 participant/templates/participant/overview.html:64
msgid "First Name"
msgstr "Vorname"
-#: participant/views.py:501 participant/templates/participant/overview.html:35
+#: participant/views.py:503 participant/templates/participant/overview.html:35
#: participant/templates/participant/overview.html:67
msgid "Type"
msgstr "Typ"
-#: participant/views.py:532
+#: participant/views.py:534
msgid "Participant-passwords"
msgstr "Teilnehmer-Passwoerter"
-#: participant/views.py:550
+#: participant/views.py:552
msgid "Account for OpenSlides"
msgstr "Zugang für OpenSlides"
-#: participant/views.py:551
+#: participant/views.py:553
#, python-format
msgid "for %s"
msgstr "für %s"
-#: participant/views.py:553
+#: participant/views.py:555
#, python-format
msgid "User: %s"
msgstr "Nutzername: %s"
-#: participant/views.py:554
+#: participant/views.py:556
#, python-format
msgid "Password: %s"
msgstr "Passwort: %s"
-#: participant/views.py:556
+#: participant/views.py:558
#, python-format
msgid "URL: %s"
msgstr "URL: %s"
-#: participant/views.py:591
+#: participant/views.py:593
msgid "Participants settings successfully saved."
msgstr "Teilnehmer Einstellungen wurden erfolgreich gespeichert."
@@ -1865,7 +1877,7 @@ msgstr ""
#: participant/templates/participant/login.html:8
#: participant/templates/participant/login.html:16
-#: participant/templates/participant/login.html:45 templates/base.html:31
+#: participant/templates/participant/login.html:50 templates/base.html:31
msgid "Login"
msgstr "Anmelden"
@@ -1874,12 +1886,13 @@ msgstr "Anmelden"
msgid "Close this notification"
msgstr "Meldung ausblenden"
-#: participant/templates/participant/login.html:23
+#: participant/templates/participant/login.html:27
msgid "Your username and password were not accepted. Please try again."
msgstr ""
-"Benutzername und Passwort wurden nicht akzeptiert. Bitte versuchen Sie es erneut."
+"Benutzername und Passwort wurden nicht akzeptiert. Bitte versuchen Sie es "
+"erneut."
-#: participant/templates/participant/login.html:49
+#: participant/templates/participant/login.html:54
msgid "Continue as guest"
msgstr "Weiter als Gast"
@@ -2028,10 +2041,6 @@ msgstr "Benutzerdefinierte Folien"
msgid "New slide"
msgstr "Neue Folie"
-#: projector/templates/projector/control_customslide.html:10
-msgid "Delete slide"
-msgstr "Folie löschen"
-
#: projector/templates/projector/new.html:6
#: projector/templates/projector/new.html:9
msgid "Custom slide"
@@ -2080,3 +2089,9 @@ msgstr "Bedaure, Sie haben keine Berechtigung diese Seite zu sehen."
#: utils/views.py:231
msgid "undefined-filename"
msgstr "undefinierter-dateiname"
+
+#~ msgid "Version %s modified"
+#~ msgstr "Version %s bearbeitet"
+
+#~ msgid "Delete slide"
+#~ msgstr "Folie löschen"