j6
zRN@@<(}bJwC;mpfOsuxgd6shhai?ul{ZXP^>wkf`of9jGQp!0*1mzjTILh}Bd4!HQ
z+ER(-ln)bk65kSOL=vGR%E7!~EyiT-sXuO_Tw?3$-`xC%lM5+_+4^z-qMRYz@W_R_{^@|JLh^%4{Yb-URM&~
z{&w(sPwkMO0zBD;ZGAmYj^6L%e!b|rd)v5Z&zZ3vKaXd^N\n"
"Language-Team: LANGUAGE \n"
@@ -53,8 +53,8 @@ msgstr "Nein"
msgid "Yes, with all child items."
msgstr "Ja, mit allen Kindelementen."
-#: agenda/api.py:71 agenda/api.py:73 participant/views.py:192
-#: participant/views.py:305 utils/utils.py:40
+#: agenda/api.py:71 agenda/api.py:73 participant/views.py:193
+#: participant/views.py:306 utils/utils.py:40
#, python-format
msgid "Do you really want to delete %s?"
msgstr "Soll %s wirklich gelöscht werden?"
@@ -64,7 +64,7 @@ msgid "Parent item"
msgstr "Elternelement"
#: agenda/models.py:35 application/forms.py:41
-#: application/templates/application/view.html:250
+#: application/templates/application/view.html:253
msgid "Title"
msgstr "Titel"
@@ -86,7 +86,7 @@ msgid "No Form for itemtype %s"
msgstr "Kein Formular für Eintrag %s"
#: agenda/models.py:189 application/forms.py:42
-#: application/templates/application/view.html:251 poll/models.py:136
+#: application/templates/application/view.html:254 poll/models.py:136
msgid "Text"
msgstr "Text"
@@ -94,7 +94,7 @@ msgstr "Text"
#: agenda/templates/agenda/overview.html:220
#: application/templates/application/edit.html:2
#: application/templates/application/view.html:2
-#: application/templates/application/view.html:217 poll/models.py:23
+#: application/templates/application/view.html:220 poll/models.py:23
#: poll/models.py:138 system/templates/system/base_system.html:14
#: utils/pdf.py:458 utils/pdf.py:470
msgid "Application"
@@ -147,8 +147,8 @@ msgid "Agenda item modified"
msgstr "Tagesordnungseintrag geändert"
#: agenda/views.py:286 application/views.py:181 application/views.py:538
-#: assignment/views.py:118 participant/views.py:169 participant/views.py:290
-#: participant/views.py:319 participant/views.py:389 system/views.py:37
+#: assignment/views.py:118 participant/views.py:170 participant/views.py:291
+#: participant/views.py:320 participant/views.py:465 system/views.py:37
#: system/views.py:59 system/views.py:83 system/views.py:113
#: system/views.py:152
msgid "Please check the form for errors."
@@ -373,7 +373,7 @@ msgstr "Keine Einträge vorhanden."
#: agenda/templates/beamer/ItemApplication.html:8
#: agenda/templates/beamer/ItemAssignment.html:13
#: application/templates/application/overview.html:16
-#: application/templates/application/overview.html:34
+#: application/templates/application/overview.html:35
#: application/templates/application/view.html:35
#: assignment/templates/assignment/overview.html:10
#: assignment/templates/assignment/overview.html:23
@@ -383,7 +383,7 @@ msgid "Status"
msgstr "Status"
#: agenda/templates/beamer/ItemApplication.html:19 application/forms.py:51
-#: application/models.py:47 application/templates/application/overview.html:35
+#: application/models.py:48 application/templates/application/overview.html:36
#: application/templates/application/view.html:9 utils/pdf.py:350
msgid "Submitter"
msgstr "Antragsteller/in"
@@ -436,14 +436,14 @@ msgstr "Keine Abstimmungen vorhanden."
#: agenda/templates/beamer/ItemApplication.html:50
#: application/templates/application/poll_view.html:8
#: application/templates/application/poll_view.html:16
-#: application/templates/application/view.html:215 utils/pdf.py:342
+#: application/templates/application/view.html:218 utils/pdf.py:342
#: utils/pdf.py:344 utils/pdf.py:445 utils/pdf.py:447 utils/pdf.py:479
msgid "Application No."
msgstr "Antrag Nr."
#: agenda/templates/beamer/ItemApplication.html:56 application/forms.py:43
-#: application/templates/application/view.html:233
-#: application/templates/application/view.html:253 utils/pdf.py:421
+#: application/templates/application/view.html:236
+#: application/templates/application/view.html:256 utils/pdf.py:421
msgid "Reason"
msgstr "Begründung"
@@ -507,12 +507,12 @@ msgstr "Triviale Änderung"
msgid "Trivial changes don't create a new version."
msgstr "Triviale Änderungen erzeugen keine neue Version."
-#: application/forms.py:52 application/models.py:49
+#: application/forms.py:52 application/models.py:50
#: application/templates/application/view.html:23 utils/pdf.py:363
msgid "Supporters"
msgstr "Unterstützer/innen"
-#: application/forms.py:62 participant/forms.py:93
+#: application/forms.py:62 participant/forms.py:99
msgid "CSV File"
msgstr "CSV-Datei"
@@ -525,12 +525,12 @@ msgid "Permitted"
msgstr "Zugelassen"
#: application/models.py:29 application/templates/application/overview.html:20
-#: application/templates/application/view.html:175
+#: application/templates/application/view.html:178
msgid "Accepted"
msgstr "Angenommen"
#: application/models.py:30 application/templates/application/overview.html:21
-#: application/templates/application/view.html:180
+#: application/templates/application/view.html:183
msgid "Rejected"
msgstr "Abgelehnt"
@@ -538,17 +538,17 @@ msgstr "Abgelehnt"
msgid "Withdrawed"
msgstr "Zurückgezogen"
-#: application/models.py:32 application/templates/application/view.html:188
+#: application/models.py:32 application/templates/application/view.html:191
msgid "Adjourned"
msgstr "Vertagt"
# please check!
-#: application/models.py:33 application/templates/application/view.html:191
+#: application/models.py:33 application/templates/application/view.html:194
msgid "Not Concerned"
msgstr "Nicht befasst"
# please check!
-#: application/models.py:34 application/templates/application/view.html:194
+#: application/models.py:34 application/templates/application/view.html:197
msgid "Commited a bill"
msgstr "Verwiesen (in Ausschuss)"
@@ -556,67 +556,71 @@ msgstr "Verwiesen (in Ausschuss)"
msgid "Rejected (not permitted)"
msgstr "Verworfen (nicht zulässig)"
-#: application/models.py:118
+#: application/models.py:36 application/templates/application/overview.html:23
+msgid "Needs Review"
+msgstr "Benötigt Review"
+
+#: application/models.py:119
msgid "Searching for supporters."
msgstr "Auf Unterstützersuche."
-#: application/models.py:120
+#: application/models.py:121
msgid "Not yet permitted."
msgstr "Noch nicht zugelassen."
-#: application/models.py:122
+#: application/models.py:123
msgid "Not yet permitted changes."
msgstr "Noch nicht zugelassene Änderungen."
-#: application/models.py:182
+#: application/models.py:183
#, python-format
msgid "Version %s modified"
msgstr "Version %s bearbeitet"
-#: application/models.py:191
+#: application/models.py:192
#, python-format
msgid "Version %s created"
msgstr "Version %s erstellt"
-#: application/models.py:200
+#: application/models.py:201
msgid "Supporters removed"
msgstr "Unterstützer/innen gelöscht"
-#: application/models.py:209
+#: application/models.py:210
#, python-format
msgid "Status reseted to: %s"
msgstr "Status zurückgesetzt auf: %s"
-#: application/models.py:222 application/views.py:159
+#: application/models.py:223 application/views.py:159
#, python-format
msgid "Supporter: +%s"
msgstr "Unterstützer/in: +%s"
-#: application/models.py:232 application/views.py:170
+#: application/models.py:233 application/views.py:170
#, python-format
msgid "Supporter: -%s"
msgstr "Unterstützer/in: -%s"
-#: application/models.py:248
+#: application/models.py:249
#, python-format
msgid "Number set: %s"
msgstr "Nummer gesetzt: %s"
-#: application/models.py:261
+#: application/models.py:262
#, python-format
msgid "Version %s permitted"
msgstr "Version %s zugelassen"
-#: application/models.py:275
+#: application/models.py:276
#, python-format
msgid "Version %s not permitted"
msgstr "Version %s nicht zugelassen"
-#: application/models.py:301
+#: application/models.py:302
msgid "Status modified"
msgstr "Status geändert"
-#: application/models.py:420
+#: application/models.py:426
msgid "Poll created"
msgstr "Abstimmung erstellt"
@@ -737,7 +741,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:444 participant/views.py:335
+#: application/views.py:444 participant/views.py:336
msgid ""
"The import function is available for the superuser (without user profile) "
"only."
@@ -771,7 +775,7 @@ msgid_plural "%d new users were added."
msgstr[0] "%d neuer Nutzer wurde erstellt."
msgstr[1] "%d neue Nutzer wurden erstellt."
-#: application/views.py:536 participant/views.py:387
+#: application/views.py:536 participant/views.py:463
msgid "Import aborted because of severe errors in the input file."
msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen."
@@ -794,7 +798,7 @@ msgstr ""
#: application/templates/application/base_application.html:6
#: application/templates/application/overview.html:2
#: application/templates/application/overview.html:6
-#: application/templates/application/overview.html:26 system/models.py:23
+#: application/templates/application/overview.html:27 system/models.py:23
#: templates/base.html:41 utils/pdf.py:429
msgid "Applications"
msgstr "Anträge"
@@ -867,24 +871,24 @@ msgstr "Noch nicht zugelassen"
msgid "Withdrawed (by submitter)"
msgstr "Zurückgezogen (durch Antragsteller/in)"
-#: application/templates/application/overview.html:29
+#: application/templates/application/overview.html:30
msgid "Number"
msgstr "Nummer"
-#: application/templates/application/overview.html:30
+#: application/templates/application/overview.html:31
msgid "Application title"
msgstr "Antragstitel"
-#: application/templates/application/overview.html:32
+#: application/templates/application/overview.html:33
msgid "Number of supporters"
msgstr "Anzahl der Unterstützer/innen"
-#: application/templates/application/overview.html:36
+#: application/templates/application/overview.html:37
#: application/templates/application/view.html:102
msgid "Creation Time"
msgstr "Erstellungszeit"
-#: application/templates/application/overview.html:58
+#: application/templates/application/overview.html:59
msgid "No applications available."
msgstr "Keine Anträge vorhanden."
@@ -982,91 +986,95 @@ msgid "Formal validation"
msgstr "Formale Gültigkeitsprüfung"
#: application/templates/application/view.html:146
+msgid "Publish"
+msgstr "Veröffentlichen"
+
+#: application/templates/application/view.html:149
msgid "Permit"
msgstr "Zulassen"
-#: application/templates/application/view.html:149
+#: application/templates/application/view.html:152
msgid "Not permit (reject)"
msgstr "Nicht zulassen (verwerfen)"
-#: application/templates/application/view.html:152
+#: application/templates/application/view.html:155
msgid "Set Number"
msgstr "Setze Nummer"
-#: application/templates/application/view.html:160
+#: application/templates/application/view.html:163
#: assignment/templates/assignment/view.html:43
msgid "New agenda item"
msgstr "Neuer Tagesordnungseintrag"
-#: application/templates/application/view.html:167
+#: application/templates/application/view.html:170
#: assignment/templates/assignment/view.html:50
msgid "Show agenda item"
msgstr "Zeige Tagesordnungseintrag"
-#: application/templates/application/view.html:172
+#: application/templates/application/view.html:175
msgid "Result after vote"
msgstr "Ergebnis nach der Abstimmung"
-#: application/templates/application/view.html:186
+#: application/templates/application/view.html:189
msgid "Result after debate"
msgstr "Ergebnis nach der Debatte"
-#: application/templates/application/view.html:197
+#: application/templates/application/view.html:200
msgid "Withdrawed by Submitter"
msgstr "Zurückgezogen durch Antragsteller/in"
-#: application/templates/application/view.html:203
+#: application/templates/application/view.html:206
msgid "For Administration only:"
msgstr "Nur zur Administration:"
-#: application/templates/application/view.html:205
+#: application/templates/application/view.html:208
msgid "Reset"
msgstr "Zurücksetzen"
-#: application/templates/application/view.html:220
-#: application/templates/application/view.html:248
+#: application/templates/application/view.html:223
+#: application/templates/application/view.html:251
msgid "Version"
msgstr "Version"
-#: application/templates/application/view.html:223
+#: application/templates/application/view.html:226
msgid "Show newest Version"
msgstr "Neuste Version anzeigen"
-#: application/templates/application/view.html:225
+#: application/templates/application/view.html:228
msgid "Show permitted Version"
msgstr "Zugelassene Version anzeigen"
-#: application/templates/application/view.html:243
+#: application/templates/application/view.html:246
msgid "Version History"
msgstr "Versionshistorie"
-#: application/templates/application/view.html:249
+#: application/templates/application/view.html:252
msgid "Time"
msgstr "Zeit"
-#: application/templates/application/view.html:260
+#: application/templates/application/view.html:263
msgid "Version accepted"
msgstr "Version akzeptiert"
-#: application/templates/application/view.html:263
+#: application/templates/application/view.html:266
msgid "Accept Version"
msgstr "Zugelassene Version"
-#: application/templates/application/view.html:266
+#: application/templates/application/view.html:269
msgid "Reject Version"
msgstr "Verion zurückweisen"
-#: application/templates/application/view.html:270
+#: application/templates/application/view.html:273
msgid "Version rejected"
msgstr "Version zurückgewiesen"
-#: application/templates/application/view.html:280
-#: application/templates/application/view.html:287
-#: application/templates/application/view.html:294
+#: application/templates/application/view.html:283
+#: application/templates/application/view.html:290
+#: application/templates/application/view.html:297
msgid "unchanged"
msgstr "unverändert"
-#: application/templates/application/view.html:303
+#: application/templates/application/view.html:306
msgid "Log"
msgstr "Log"
@@ -1311,14 +1319,30 @@ msgstr "Abstimmung löschen"
msgid "New ballot"
msgstr "Neuer Wahlgang"
-#: participant/forms.py:37 participant/forms.py:48
+#: participant/forms.py:34
+msgid "Keep applications, try to reassign submitter"
+msgstr "Anträge beibehalten, versuchen Antragssteller erneut zuzuweisen"
+
+#: participant/forms.py:35
+msgid "Keep applications, set status to \"needs review\""
+msgstr "Anträge beibehalten, Stauts auf \"Benötigt Review\" setzen"
+
+#: participant/forms.py:36
+msgid "Discard applications"
+msgstr "Alle Anträge löschen"
+
+#: participant/forms.py:43 participant/forms.py:54
msgid "First name"
msgstr "Vorname"
-#: participant/forms.py:38 participant/forms.py:49
+#: participant/forms.py:44 participant/forms.py:55
msgid "Last name"
msgstr "Nachname"
+#: participant/forms.py:100
+msgid "For existing applications"
+msgstr "Bei existierenden Anträgen"
+
#: participant/models.py:22 participant/templates/participant/overview.html:19
msgid "Male"
msgstr "Männlich"
@@ -1369,51 +1393,86 @@ msgstr "Kommentar"
msgid "First Password"
msgstr "Erst-Passwort"
-#: participant/views.py:161
+#: participant/views.py:162
msgid "New participant was successfully created."
msgstr "Neue/r Teilnehmer/in wurde erfolgreich angelegt."
-#: participant/views.py:163
+#: participant/views.py:164
msgid "Participant was successfully modified."
msgstr "Teilnehmer/in wurde erfolgreich geändert."
-#: participant/views.py:190
+#: participant/views.py:191
#, python-format
msgid "Participant %s was successfully deleted."
msgstr "Teilnehmer/in %s wurde erfolgreich gelöscht."
-#: participant/views.py:203 participant/views.py:222
+#: participant/views.py:204 participant/views.py:223
+#, python-format
msgid "Participant %d does not exist."
msgstr "Teinehmer/in %d existiert nicht."
-#: participant/views.py:268
+#: participant/views.py:269
#, python-format
msgid "Group name \"%s\" is reserved for internal use."
msgstr "Der Gruppenname \"%s\" ist für interne Verwendung reserviert."
-#: participant/views.py:282
+#: participant/views.py:283
msgid "New group was successfully created."
msgstr "Neue Gruppe wurde erfolgreich angelegt."
-#: participant/views.py:284
+#: participant/views.py:285
msgid "Group was successfully modified."
msgstr "Gruppe wurde erfolgreich geändert."
-#: participant/views.py:303
+#: participant/views.py:304
#, python-format
msgid "Group %s was successfully deleted."
msgstr "Gruppe %s wurde erfolgreich gelöscht."
-#: participant/views.py:317
+#: participant/views.py:318
msgid "User settings successfully saved."
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
#: participant/views.py:384
+msgid "Supporters removed after user import."
+msgstr "Unterstützer/innen nach Benutzerimport zurückgesetzt."
+
+#: participant/views.py:431
+#, python-format
+msgid "Reassigned to \"%s\" after (re)importing users."
+msgstr "Nach Benutzerimport erneut \"%s\" zugeordnet."
+
+#: participant/views.py:434 participant/views.py:448
+#, 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:451
+#, 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!"
+msgstr[0] "%d Antrag konnte nicht neu zugewiesen werden and benötigt ein Review!"
+msgstr[1] "%d Anträge konnten nicht neu zugewiesen werden und benötigen ein Review!"
+
+#: participant/views.py:454
+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:457
+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:460
#, python-format
msgid "%d new participants were successfully imported."
msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert."
-#: participant/views.py:391
+#: participant/views.py:467
msgid ""
"Attention: All existing participants will be removed if you import new "
"participants."
@@ -1421,12 +1480,24 @@ msgstr ""
"Achtung: Alle existierenden Teilnehmer/innen werden gelöscht, wenn Sie neue "
"Teilnehmer/innen importieren."
-#: participant/views.py:403
+#: participant/views.py:469
+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:470
+msgid ""
+"Attention: Applications which can't be mapped to new users will be set to "
+"'Needs Review'."
+msgstr "Achtung: Anträge welche keinem Nutzer zugeordnet werden können"
+" bekommen automatisch den Status \"Benötigt Review\"."
+
+#: participant/views.py:482
#, python-format
msgid "The Password for %s was successfully reset."
msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt."
-#: participant/views.py:405
+#: participant/views.py:484
#, python-format
msgid "Do you really want to reset the password for %s?"
msgstr "Soll das Passwort für %s wirklich zurückgesetzt werden?"
diff --git a/openslides/participant/forms.py b/openslides/participant/forms.py
index c9c099e46..a212ae559 100644
--- a/openslides/participant/forms.py
+++ b/openslides/participant/forms.py
@@ -10,7 +10,7 @@
:license: GNU GPL, see LICENSE for more details.
"""
-from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, MultipleChoiceField, ModelMultipleChoiceField
+from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, MultipleChoiceField, ModelMultipleChoiceField, ChoiceField, BooleanField
from django.contrib.auth.models import User, Group, Permission
from django.contrib.auth.forms import AdminPasswordChangeForm
from django.utils.translation import ugettext as _
@@ -30,6 +30,12 @@ USER_VISIBLE_PERMISSIONS = reduce(list.__add__, [
[p[0] for p in Config._meta.permissions]
])
+USER_APPLICATION_IMPORT_OPTIONS = [
+ ('REASSIGN', _('Keep applications, try to reassign submitter')),
+ ('INREVIEW', _('Keep applications, set status to "needs review"')),
+ ('DISCARD' , _('Discard applications'))
+]
+
class UserNewForm(ModelForm):
error_css_class = 'error'
required_css_class = 'required'
@@ -91,3 +97,4 @@ class UserImportForm(Form):
required_css_class = 'required'
csvfile = FileField(widget=FileInput(attrs={'size':'50'}), label=_("CSV File"))
+ application_handling = ChoiceField(required=True, choices=USER_APPLICATION_IMPORT_OPTIONS, label=_("For existing applications"))
diff --git a/openslides/participant/views.py b/openslides/participant/views.py
index 958f5be40..91d73807d 100644
--- a/openslides/participant/views.py
+++ b/openslides/participant/views.py
@@ -34,6 +34,7 @@ from django.db import transaction
from participant.models import Profile
from participant.api import gen_username, gen_password
from participant.forms import UserNewForm, UserEditForm, ProfileForm, UsersettingsForm, UserImportForm, GroupForm, AdminPasswordChangeForm
+from application.models import Application
from utils.utils import template, permission_required, gen_confirm_form, ajax_request
from utils.pdf import print_userlist, print_passwords
from system.api import config_get
@@ -345,6 +346,43 @@ def user_import(request):
if form.is_valid():
try:
with transaction.commit_on_success():
+
+ old_users = {}
+ applications_mapped = 0
+ applications_review = 0
+ applications_removed = 0
+
+ try:
+ janitor = User.objects.get(username='__system__.janitor')
+ except User.DoesNotExist:
+ janitor = User()
+ janitor.first_name = ''
+ janitor.last_name = ''
+ janitor.username = '__system__.janitor'
+ janitor.save()
+
+ applications = Application.objects.all()
+ for application in applications:
+ if form.cleaned_data['application_handling'] == 'DISCARD':
+ # need to do this explicit since some applications may belong
+ # to __system__.janitor which is a permanent user
+ application.delete(force=True)
+ applications_removed += 1
+ else:
+ # collect all applications and map them to their submitters
+ submitter = application.submitter
+ skey = '%s_%s' % (submitter.first_name, submitter.last_name)
+
+ if not skey in old_users:
+ old_users[skey] = []
+ old_users[skey].append(application.id)
+
+ application.submitter = janitor
+ application.save()
+
+ if application.supporter.all():
+ application.writelog(_('Supporters removed after user import.'), user=request.user)
+
profiles = Profile.objects.all()
for profile in profiles:
profile.user.delete()
@@ -381,6 +419,44 @@ def user_import(request):
observer = Group.objects.get(name='Beobachter')
user.groups.add(observer)
+ if form.cleaned_data['application_handling'] == 'REASSIGN':
+ # live remap
+ skey = '%s_%s' % (user.first_name, user.last_name)
+ if skey in old_users:
+ for appid in old_users[skey]:
+ try:
+ application = Application.objects.get(id=appid)
+ application.submitter = user
+ application.save()
+ application.writelog(_('Reassigned to "%s" after (re)importing users.') % ("%s %s" % (user.first_name, user.last_name)), user=request.user)
+ applications_mapped += 1
+ except Application.DoesNotExist:
+ messages.error(request, _('Could not reassing application %d - object not found!') % appid)
+ del old_users[skey]
+
+ if old_users:
+ # mark all applications without a valid user as 'needs review'
+ # this will account for *all* applications if application_mode == 'INREVIEW'
+ for skey in old_users:
+ for appid in old_users[skey]:
+ try:
+ application = Application.objects.get(id=appid)
+ if application.status != 'rev':
+ application.set_status(user=request.user, status='rev', force=True)
+ applications_review += 1
+ except Application.DoesNotExist:
+ messages.error(request, _('Could not reassing application %d - object not found!') % appid)
+
+ if applications_review:
+ messages.warning(request, ungettext('%d application could not be reassigned and needs a review!',
+ '%d applications could not be reassigned and need a review!', applications_review) % applications_review)
+ if applications_mapped:
+ messages.success(request, ungettext('%d application was successfully reassigned.',
+ '%d applications were successfully reassigned.', applications_mapped) % applications_mapped)
+ if applications_removed:
+ messages.warning(request, ungettext('%d application was discarded.',
+ '%d applications were discarded.', applications_removed) % applications_removed)
+
messages.success(request, _('%d new participants were successfully imported.') % i)
return redirect(reverse('user_overview'))
except csv.Error:
@@ -389,6 +465,9 @@ def user_import(request):
messages.error(request, _('Please check the form for errors.'))
else:
messages.warning(request, _("Attention: All existing participants will be removed if you import new participants."))
+ if Application.objects.all():
+ messages.warning(request, _("Attention: Supporters from all existing applications will be removed."))
+ messages.warning(request, _("Attention: Applications which can't be mapped to new users will be set to 'Needs Review'."))
form = UserImportForm()
return {
'form': form,