This commit is contained in:
parent
aad0d2f02b
commit
de62241dc7
@ -10,7 +10,7 @@
|
|||||||
:license: GNU GPL, see LICENSE for more details.
|
:license: GNU GPL, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.forms import ModelForm, Form, CharField, Textarea, TextInput, ModelMultipleChoiceField, ModelChoiceField
|
from django.forms import ModelForm, Form, CharField, Textarea, TextInput, ModelMultipleChoiceField, ModelChoiceField, BooleanField, FileField, FileInput
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ class ApplicationForm(Form):
|
|||||||
title = CharField(widget=TextInput(), label=_("Title"))
|
title = CharField(widget=TextInput(), label=_("Title"))
|
||||||
text = CharField(widget=Textarea(), label=_("Text"))
|
text = CharField(widget=Textarea(), label=_("Text"))
|
||||||
reason = CharField(widget=Textarea(), required=False, label=_("Reason"))
|
reason = CharField(widget=Textarea(), required=False, label=_("Reason"))
|
||||||
|
trivial_change = BooleanField(required=False, label=_("Trivial change"), help_text=_("Trivial changes don't create a new version."))
|
||||||
|
|
||||||
class ApplicationManagerForm(ModelForm):
|
class ApplicationManagerForm(ModelForm):
|
||||||
error_css_class = 'error'
|
error_css_class = 'error'
|
||||||
@ -54,3 +54,9 @@ class ApplicationManagerForm(ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Application
|
model = Application
|
||||||
exclude = ('number', 'status', 'permitted', 'log')
|
exclude = ('number', 'status', 'permitted', 'log')
|
||||||
|
|
||||||
|
class ApplicationImportForm(Form):
|
||||||
|
error_css_class = 'error'
|
||||||
|
required_css_class = 'required'
|
||||||
|
|
||||||
|
csvfile = FileField(widget=FileInput(attrs={'size':'50'}), label=_("CSV File"))
|
||||||
|
@ -159,7 +159,7 @@ class Application(models.Model):
|
|||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def save(self, user=None, nonewversion=False):
|
def save(self, user=None, nonewversion=False, trivial_change=False):
|
||||||
"""
|
"""
|
||||||
Save the Application, and create a new AVersion if necessary
|
Save the Application, and create a new AVersion if necessary
|
||||||
"""
|
"""
|
||||||
@ -173,6 +173,14 @@ class Application(models.Model):
|
|||||||
and last_version.reason == self.reason):
|
and last_version.reason == self.reason):
|
||||||
return # No changes
|
return # No changes
|
||||||
try:
|
try:
|
||||||
|
if trivial_change and last_version is not None:
|
||||||
|
last_version.text = self.text
|
||||||
|
last_version.title = self.title
|
||||||
|
last_version.reason = self.reason
|
||||||
|
last_version.save()
|
||||||
|
self.writelog(_("Version %s modified") % last_version.aid, user)
|
||||||
|
return # Done
|
||||||
|
|
||||||
if self.title != "":
|
if self.title != "":
|
||||||
version = AVersion(title=getattr(self, 'title', ''),
|
version = AVersion(title=getattr(self, 'title', ''),
|
||||||
text=getattr(self, 'text', ''),
|
text=getattr(self, 'text', ''),
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<li class="{% if request.path == url_applicationoverview %}selected{% endif %}"><a href="{% url application_overview %}">{%trans "All applications" %}</a></li>
|
<li class="{% if request.path == url_applicationoverview %}selected{% endif %}"><a href="{% url application_overview %}">{%trans "All applications" %}</a></li>
|
||||||
{% if perms.application.can_create_application or perms.application.can_manage_application %}
|
{% if perms.application.can_create_application or perms.application.can_manage_application %}
|
||||||
<li class="{% active request '/application/new' %}"><a href="{% url application_new %}">{%trans "New application" %}</a></li>
|
<li class="{% active request '/application/new' %}"><a href="{% url application_new %}">{%trans "New application" %}</a></li>
|
||||||
|
<li class="{% active request '/application/import' %}"><a href="{% url application_import %}">{%trans 'Import applications' %}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="{% url print_applications %}"><img src="/static/images/icons/application-pdf.png"> {%trans 'Print all applications' %}</a></li>
|
<li><a href="{% url print_applications %}"><img src="/static/images/icons/application-pdf.png"> {%trans 'Print all applications' %}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
21
openslides/application/templates/application/import.html
Normal file
21
openslides/application/templates/application/import.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{% extends "application/base_application.html" %}
|
||||||
|
{% block title %}{{ block.super }} - {%trans "Import applications" %} {% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>Import</h1>
|
||||||
|
<p>{% trans 'Select a CSV file to import applications!' %}</p>
|
||||||
|
|
||||||
|
<p>{% trans '(Required comma separated values: <code>number, title, text, reason, first_name, last_name</code> - <code>number</code> and <code>reason</code> are optional and may be empty)' %} </p>
|
||||||
|
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
|
||||||
|
{{ form.as_p }}
|
||||||
|
<button type="submit">
|
||||||
|
<span class="icon import">{%trans 'Import' %}</span>
|
||||||
|
</button>
|
||||||
|
<a href="{% url application_overview%}">
|
||||||
|
<button type="button">
|
||||||
|
<span class="icon cancel">{%trans 'Cancel' %}</span>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
|
{% endblock %}
|
@ -25,6 +25,9 @@ urlpatterns = patterns('application.views',
|
|||||||
url(r'^application/new$', 'edit', \
|
url(r'^application/new$', 'edit', \
|
||||||
name='application_new'),
|
name='application_new'),
|
||||||
|
|
||||||
|
url(r'^application/import$', 'application_import', \
|
||||||
|
name='application_import'),
|
||||||
|
|
||||||
url(r'^application/(?P<application_id>\d+)/edit$', 'edit', \
|
url(r'^application/(?P<application_id>\d+)/edit$', 'edit', \
|
||||||
name='application_edit'),
|
name='application_edit'),
|
||||||
|
|
||||||
|
@ -10,16 +10,22 @@
|
|||||||
:license: GNU GPL, see LICENSE for more details.
|
:license: GNU GPL, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import csv
|
||||||
|
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib.auth.models import User, Group
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
from django.utils.translation import ungettext
|
||||||
|
from django.db import transaction
|
||||||
|
|
||||||
from openslides.agenda.models import Item
|
from openslides.agenda.models import Item
|
||||||
from openslides.application.models import Application, AVersion
|
from openslides.application.models import Application, AVersion
|
||||||
from openslides.application.forms import ApplicationForm, \
|
from openslides.application.forms import ApplicationForm, \
|
||||||
ApplicationManagerForm
|
ApplicationManagerForm, \
|
||||||
|
ApplicationImportForm
|
||||||
from openslides.participant.models import Profile
|
from openslides.participant.models import Profile
|
||||||
from openslides.poll.models import Poll
|
from openslides.poll.models import Poll
|
||||||
from openslides.poll.forms import OptionResultForm, PollForm
|
from openslides.poll.forms import OptionResultForm, PollForm
|
||||||
@ -28,6 +34,7 @@ from openslides.utils.utils import template, permission_required, \
|
|||||||
from openslides.utils.pdf import print_application, print_application_poll
|
from openslides.utils.pdf import print_application, print_application_poll
|
||||||
from openslides.system.api import config_get
|
from openslides.system.api import config_get
|
||||||
|
|
||||||
|
from openslides.participant.api import gen_username
|
||||||
|
|
||||||
@permission_required('application.can_see_application')
|
@permission_required('application.can_see_application')
|
||||||
@template('application/overview.html')
|
@template('application/overview.html')
|
||||||
@ -135,7 +142,7 @@ def edit(request, application_id=None):
|
|||||||
application.title = dataform.cleaned_data['title']
|
application.title = dataform.cleaned_data['title']
|
||||||
application.text = dataform.cleaned_data['text']
|
application.text = dataform.cleaned_data['text']
|
||||||
application.reason = dataform.cleaned_data['reason']
|
application.reason = dataform.cleaned_data['reason']
|
||||||
application.save(request.user)
|
application.save(request.user, trivial_change=dataform.cleaned_data['trivial_change'])
|
||||||
if is_manager:
|
if is_manager:
|
||||||
# log added supporters
|
# log added supporters
|
||||||
supporters_added = []
|
supporters_added = []
|
||||||
@ -425,3 +432,104 @@ def reject_version(request, aversion_id):
|
|||||||
gen_confirm_form(request, _('Do you really want to reject version <b>%s</b>?') % aversion.aid, reverse('application_version_reject', args=[aversion.id]))
|
gen_confirm_form(request, _('Do you really want to reject version <b>%s</b>?') % aversion.aid, reverse('application_version_reject', args=[aversion.id]))
|
||||||
return redirect(reverse('application_view', args=[application.id]))
|
return redirect(reverse('application_view', args=[application.id]))
|
||||||
|
|
||||||
|
@permission_required('application.can_manage_applications')
|
||||||
|
@template('application/import.html')
|
||||||
|
def application_import(request):
|
||||||
|
try:
|
||||||
|
request.user.profile
|
||||||
|
messages.error(request, _('The import function is available for the superuser (without user profile) only.'))
|
||||||
|
return redirect(reverse('application_overview'))
|
||||||
|
except Profile.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = ApplicationImportForm(request.POST, request.FILES)
|
||||||
|
if form.is_valid():
|
||||||
|
try:
|
||||||
|
users_generated = 0
|
||||||
|
applications_generated = 0
|
||||||
|
applications_modified = 0
|
||||||
|
with transaction.commit_on_success():
|
||||||
|
for (lno, line) in enumerate(csv.reader(request.FILES['csvfile'])):
|
||||||
|
# basic input verification
|
||||||
|
if lno < 1:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
(number, title, text, reason, first_name, last_name) = line[:6]
|
||||||
|
except ValueError:
|
||||||
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
|
continue
|
||||||
|
form = ApplicationForm({ 'title':title, 'text':text, 'reason':reason })
|
||||||
|
if not form.is_valid():
|
||||||
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
|
continue
|
||||||
|
if number:
|
||||||
|
try:
|
||||||
|
number = abs(long(number))
|
||||||
|
if number < 1:
|
||||||
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
|
continue
|
||||||
|
except ValueError:
|
||||||
|
messages.error(request, _('Ignoring malformed line %d in import file.') % (lno + 1))
|
||||||
|
continue
|
||||||
|
# fetch existing users or create new users as needed
|
||||||
|
try:
|
||||||
|
user = User.objects.get(first_name=first_name, last_name=last_name)
|
||||||
|
except User.DoesNotExist:
|
||||||
|
user = None
|
||||||
|
if user is None:
|
||||||
|
user = User()
|
||||||
|
user.last_name = last_name
|
||||||
|
user.first_name = first_name
|
||||||
|
user.username = gen_username(first_name, last_name)
|
||||||
|
user.save()
|
||||||
|
profile = Profile()
|
||||||
|
profile.user = user
|
||||||
|
profile.group = ''
|
||||||
|
profile.committee = ''
|
||||||
|
profile.gender = 'none'
|
||||||
|
profile.type = 'guest'
|
||||||
|
profile.save()
|
||||||
|
users_generated += 1
|
||||||
|
# create / modify the application
|
||||||
|
application = None
|
||||||
|
if number:
|
||||||
|
try:
|
||||||
|
application = Application.objects.get(number=number)
|
||||||
|
applications_modified += 1
|
||||||
|
except Application.DoesNotExist:
|
||||||
|
application = None
|
||||||
|
if application is None:
|
||||||
|
application = Application(submitter=user)
|
||||||
|
if number:
|
||||||
|
application.number = number
|
||||||
|
applications_generated += 1
|
||||||
|
|
||||||
|
application.title = form.cleaned_data['title']
|
||||||
|
application.text = form.cleaned_data['text']
|
||||||
|
application.reason = form.cleaned_data['reason']
|
||||||
|
application.save(user, trivial_change=True)
|
||||||
|
|
||||||
|
if applications_generated:
|
||||||
|
messages.success(request, ungettext('%d application was successfully imported.',
|
||||||
|
'%d applications were successfully imported.', applications_generated) % applications_generated)
|
||||||
|
if applications_modified:
|
||||||
|
messages.success(request, ungettext('%d application was successfully modified.',
|
||||||
|
'%d applications were successfully modified.', applications_modified) % applications_modified)
|
||||||
|
if users_generated:
|
||||||
|
messages.success(request, ungettext('%d new user was added.', '%d new users were added.', users_generated) % users_generated)
|
||||||
|
return redirect(reverse('application_overview'))
|
||||||
|
|
||||||
|
except csv.Error:
|
||||||
|
message.error(request, _('Import aborted because of severe errors in the input file.'))
|
||||||
|
else:
|
||||||
|
messages.error(request, _('Please check the form for errors.'))
|
||||||
|
else:
|
||||||
|
messages.warning(request, _("Attention: Existing applications will be modified if you import new applications with the same number."))
|
||||||
|
messages.warning(request, _("Attention: Importing an application without a number multiple times will create duplicates."))
|
||||||
|
form = ApplicationImportForm()
|
||||||
|
return {
|
||||||
|
'form': form,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2011-11-01 08:21+0100\n"
|
"POT-Creation-Date: 2011-11-09 20:57+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -32,8 +32,8 @@ msgstr "Englisch"
|
|||||||
#: application/templates/application/poll_view.html:28
|
#: application/templates/application/poll_view.html:28
|
||||||
#: application/templates/application/view.html:74
|
#: application/templates/application/view.html:74
|
||||||
#: assignment/templates/assignment/poll_view.html:16
|
#: assignment/templates/assignment/poll_view.html:16
|
||||||
#: assignment/templates/assignment/view.html:179
|
#: assignment/templates/assignment/view.html:186
|
||||||
#: assignment/templates/assignment/view.html:183 poll/forms.py:45
|
#: assignment/templates/assignment/view.html:190 poll/forms.py:45
|
||||||
#: utils/pdf.py:403 utils/pdf.py:483 utils/pdf.py:703 utils/utils.py:35
|
#: utils/pdf.py:403 utils/pdf.py:483 utils/pdf.py:703 utils/utils.py:35
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
@ -48,7 +48,7 @@ msgstr "Ja, mit allen Kindelementen."
|
|||||||
#: application/templates/application/poll_view.html:32
|
#: application/templates/application/poll_view.html:32
|
||||||
#: application/templates/application/view.html:75
|
#: application/templates/application/view.html:75
|
||||||
#: assignment/templates/assignment/poll_view.html:17
|
#: assignment/templates/assignment/poll_view.html:17
|
||||||
#: assignment/templates/assignment/view.html:180 poll/forms.py:46
|
#: assignment/templates/assignment/view.html:187 poll/forms.py:46
|
||||||
#: utils/pdf.py:403 utils/pdf.py:484 utils/pdf.py:703 utils/utils.py:35
|
#: utils/pdf.py:403 utils/pdf.py:484 utils/pdf.py:703 utils/utils.py:35
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Nein"
|
msgstr "Nein"
|
||||||
@ -64,7 +64,7 @@ msgid "Parent item"
|
|||||||
msgstr "Elternelement"
|
msgstr "Elternelement"
|
||||||
|
|
||||||
#: agenda/models.py:35 application/forms.py:41
|
#: agenda/models.py:35 application/forms.py:41
|
||||||
#: application/templates/application/view.html:246
|
#: application/templates/application/view.html:253
|
||||||
msgid "Title"
|
msgid "Title"
|
||||||
msgstr "Titel"
|
msgstr "Titel"
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ msgid "No Form for itemtype %s"
|
|||||||
msgstr "Kein Formular für Eintrag %s"
|
msgstr "Kein Formular für Eintrag %s"
|
||||||
|
|
||||||
#: agenda/models.py:189 application/forms.py:42
|
#: agenda/models.py:189 application/forms.py:42
|
||||||
#: application/templates/application/view.html:247 poll/models.py:136
|
#: application/templates/application/view.html:254 poll/models.py:136
|
||||||
msgid "Text"
|
msgid "Text"
|
||||||
msgstr "Text"
|
msgstr "Text"
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ msgstr "Text"
|
|||||||
#: agenda/templates/agenda/overview.html:209
|
#: agenda/templates/agenda/overview.html:209
|
||||||
#: application/templates/application/edit.html:2
|
#: application/templates/application/edit.html:2
|
||||||
#: application/templates/application/view.html:2
|
#: application/templates/application/view.html:2
|
||||||
#: application/templates/application/view.html:213 poll/models.py:23
|
#: application/templates/application/view.html:220 poll/models.py:23
|
||||||
#: poll/models.py:138 system/templates/system/general.html:13 utils/pdf.py:458
|
#: poll/models.py:138 system/templates/system/general.html:13 utils/pdf.py:458
|
||||||
#: utils/pdf.py:470
|
#: utils/pdf.py:470
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
@ -144,9 +144,9 @@ msgstr "Eintrag wurde erfolgreich geändert."
|
|||||||
msgid "Agenda item modified"
|
msgid "Agenda item modified"
|
||||||
msgstr "Tagesordnungseintrag geändert"
|
msgstr "Tagesordnungseintrag geändert"
|
||||||
|
|
||||||
#: agenda/views.py:256 participant/views.py:141 participant/views.py:227
|
#: agenda/views.py:256 application/views.py:532 participant/views.py:141
|
||||||
#: participant/views.py:256 participant/views.py:313 system/views.py:32
|
#: participant/views.py:227 participant/views.py:256 participant/views.py:313
|
||||||
#: system/views.py:71
|
#: system/views.py:32 system/views.py:71
|
||||||
msgid "Please check the form for errors."
|
msgid "Please check the form for errors."
|
||||||
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
|
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ msgstr "Speichern"
|
|||||||
#: application/templates/application/poll_view.html:53
|
#: application/templates/application/poll_view.html:53
|
||||||
#: assignment/templates/assignment/edit.html:18
|
#: assignment/templates/assignment/edit.html:18
|
||||||
#: assignment/templates/assignment/poll_view.html:59
|
#: assignment/templates/assignment/poll_view.html:59
|
||||||
#: assignment/templates/assignment/view.html:104
|
#: assignment/templates/assignment/view.html:111
|
||||||
#: participant/templates/participant/edit.html:21
|
#: participant/templates/participant/edit.html:21
|
||||||
#: participant/templates/participant/group_edit.html:17
|
#: participant/templates/participant/group_edit.html:17
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
@ -226,6 +226,7 @@ msgstr "Übernehmen"
|
|||||||
|
|
||||||
#: agenda/templates/agenda/edit.html:34
|
#: agenda/templates/agenda/edit.html:34
|
||||||
#: application/templates/application/edit.html:24
|
#: application/templates/application/edit.html:24
|
||||||
|
#: application/templates/application/import.html:16
|
||||||
#: application/templates/application/poll_view.html:57
|
#: application/templates/application/poll_view.html:57
|
||||||
#: assignment/templates/assignment/edit.html:22
|
#: assignment/templates/assignment/edit.html:22
|
||||||
#: assignment/templates/assignment/poll_view.html:63
|
#: assignment/templates/assignment/poll_view.html:63
|
||||||
@ -331,7 +332,7 @@ msgid "Status"
|
|||||||
msgstr "Status"
|
msgstr "Status"
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemApplication.html:19 application/forms.py:51
|
#: agenda/templates/beamer/ItemApplication.html:19 application/forms.py:51
|
||||||
#: application/models.py:45 application/templates/application/overview.html:35
|
#: application/models.py:46 application/templates/application/overview.html:35
|
||||||
#: application/templates/application/view.html:9 utils/pdf.py:350
|
#: application/templates/application/view.html:9 utils/pdf.py:350
|
||||||
msgid "Submitter"
|
msgid "Submitter"
|
||||||
msgstr "Antragsteller/in"
|
msgstr "Antragsteller/in"
|
||||||
@ -352,7 +353,7 @@ msgstr "Abstimmung"
|
|||||||
#: agenda/templates/beamer/ItemAssignment.html:69
|
#: agenda/templates/beamer/ItemAssignment.html:69
|
||||||
#: application/templates/application/view.html:76
|
#: application/templates/application/view.html:76
|
||||||
#: assignment/templates/assignment/poll_view.html:18
|
#: assignment/templates/assignment/poll_view.html:18
|
||||||
#: assignment/templates/assignment/view.html:181 poll/forms.py:35
|
#: assignment/templates/assignment/view.html:188 poll/forms.py:35
|
||||||
#: poll/forms.py:47 utils/pdf.py:403 utils/pdf.py:485 utils/pdf.py:703
|
#: poll/forms.py:47 utils/pdf.py:403 utils/pdf.py:485 utils/pdf.py:703
|
||||||
msgid "Abstention"
|
msgid "Abstention"
|
||||||
msgstr "Enthaltung"
|
msgstr "Enthaltung"
|
||||||
@ -360,7 +361,7 @@ msgstr "Enthaltung"
|
|||||||
#: agenda/templates/beamer/ItemApplication.html:33
|
#: agenda/templates/beamer/ItemApplication.html:33
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:88
|
#: agenda/templates/beamer/ItemAssignment.html:88
|
||||||
#: application/templates/application/view.html:77
|
#: application/templates/application/view.html:77
|
||||||
#: assignment/templates/assignment/view.html:198 poll/forms.py:24
|
#: assignment/templates/assignment/view.html:205 poll/forms.py:24
|
||||||
#: utils/pdf.py:403
|
#: utils/pdf.py:403
|
||||||
msgid "Invalid"
|
msgid "Invalid"
|
||||||
msgstr "Ungültig"
|
msgstr "Ungültig"
|
||||||
@ -371,8 +372,8 @@ msgstr "Ungültig"
|
|||||||
#: application/templates/application/poll_view.html:44
|
#: application/templates/application/poll_view.html:44
|
||||||
#: application/templates/application/view.html:79
|
#: application/templates/application/view.html:79
|
||||||
#: assignment/templates/assignment/poll_view.html:40
|
#: assignment/templates/assignment/poll_view.html:40
|
||||||
#: assignment/templates/assignment/view.html:206
|
#: assignment/templates/assignment/view.html:213
|
||||||
#: assignment/templates/assignment/view.html:209 poll/forms.py:23
|
#: assignment/templates/assignment/view.html:216 poll/forms.py:23
|
||||||
#: poll/models.py:26 utils/pdf.py:403 utils/pdf.py:602
|
#: poll/models.py:26 utils/pdf.py:403 utils/pdf.py:602
|
||||||
msgid "Votes cast"
|
msgid "Votes cast"
|
||||||
msgstr "Abgegebene Stimmen"
|
msgstr "Abgegebene Stimmen"
|
||||||
@ -384,14 +385,14 @@ msgstr "Keine Abstimmungen vorhanden."
|
|||||||
#: agenda/templates/beamer/ItemApplication.html:50
|
#: agenda/templates/beamer/ItemApplication.html:50
|
||||||
#: application/templates/application/poll_view.html:8
|
#: application/templates/application/poll_view.html:8
|
||||||
#: application/templates/application/poll_view.html:16
|
#: application/templates/application/poll_view.html:16
|
||||||
#: application/templates/application/view.html:211 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
|
#: utils/pdf.py:344 utils/pdf.py:445 utils/pdf.py:447 utils/pdf.py:479
|
||||||
msgid "Application No."
|
msgid "Application No."
|
||||||
msgstr "Antrag Nr."
|
msgstr "Antrag Nr."
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemApplication.html:56 application/forms.py:43
|
#: agenda/templates/beamer/ItemApplication.html:56 application/forms.py:43
|
||||||
#: application/templates/application/view.html:229
|
#: application/templates/application/view.html:236
|
||||||
#: application/templates/application/view.html:249 utils/pdf.py:421
|
#: application/templates/application/view.html:256 utils/pdf.py:421
|
||||||
msgid "Reason"
|
msgid "Reason"
|
||||||
msgstr "Begründung"
|
msgstr "Begründung"
|
||||||
|
|
||||||
@ -403,43 +404,43 @@ msgstr "Anzahl der zur Wahl stehenden Posten"
|
|||||||
#: agenda/templates/beamer/ItemAssignment.html:30
|
#: agenda/templates/beamer/ItemAssignment.html:30
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:48
|
#: agenda/templates/beamer/ItemAssignment.html:48
|
||||||
#: assignment/templates/assignment/overview.html:22
|
#: assignment/templates/assignment/overview.html:22
|
||||||
#: assignment/templates/assignment/view.html:55
|
#: assignment/templates/assignment/view.html:62
|
||||||
#: assignment/templates/assignment/view.html:126 utils/pdf.py:543
|
#: assignment/templates/assignment/view.html:133 utils/pdf.py:543
|
||||||
#: utils/pdf.py:563
|
#: utils/pdf.py:563
|
||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr "Kandidaten/innen"
|
msgstr "Kandidaten/innen"
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:36
|
#: agenda/templates/beamer/ItemAssignment.html:36
|
||||||
#: assignment/templates/assignment/view.html:66
|
#: assignment/templates/assignment/view.html:73
|
||||||
msgid "No candidates available."
|
msgid "No candidates available."
|
||||||
msgstr "Keine Kandidaten/innen vorhanden."
|
msgstr "Keine Kandidaten/innen vorhanden."
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:45
|
#: agenda/templates/beamer/ItemAssignment.html:45
|
||||||
#: assignment/templates/assignment/view.html:114
|
#: assignment/templates/assignment/view.html:121
|
||||||
msgid "Election results"
|
msgid "Election results"
|
||||||
msgstr "Wahlergebnisse"
|
msgstr "Wahlergebnisse"
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:51
|
#: agenda/templates/beamer/ItemAssignment.html:51
|
||||||
#: assignment/templates/assignment/poll_view.html:6
|
#: assignment/templates/assignment/poll_view.html:6
|
||||||
#: assignment/templates/assignment/view.html:122
|
#: assignment/templates/assignment/view.html:129
|
||||||
#: assignment/templates/assignment/view.html:130 utils/pdf.py:687
|
#: assignment/templates/assignment/view.html:137 utils/pdf.py:687
|
||||||
msgid "ballot"
|
msgid "ballot"
|
||||||
msgstr "Wahlgang"
|
msgstr "Wahlgang"
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:60
|
#: agenda/templates/beamer/ItemAssignment.html:60
|
||||||
#: assignment/templates/assignment/view.html:166
|
#: assignment/templates/assignment/view.html:173
|
||||||
msgid "Candidate is elected"
|
msgid "Candidate is elected"
|
||||||
msgstr "Kandidat/in ist gewählt"
|
msgstr "Kandidat/in ist gewählt"
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:81
|
#: agenda/templates/beamer/ItemAssignment.html:81
|
||||||
#: assignment/templates/assignment/view.html:220
|
#: assignment/templates/assignment/view.html:227
|
||||||
msgid "No ballots available."
|
msgid "No ballots available."
|
||||||
msgstr "Keine Wahlgänge vorhanden."
|
msgstr "Keine Wahlgänge vorhanden."
|
||||||
|
|
||||||
#: agenda/templates/beamer/ItemAssignment.html:85
|
#: agenda/templates/beamer/ItemAssignment.html:85
|
||||||
#: application/templates/application/poll_view.html:40
|
#: application/templates/application/poll_view.html:40
|
||||||
#: assignment/templates/assignment/poll_view.html:36
|
#: assignment/templates/assignment/poll_view.html:36
|
||||||
#: assignment/templates/assignment/view.html:195 utils/pdf.py:594
|
#: assignment/templates/assignment/view.html:202 utils/pdf.py:594
|
||||||
msgid "Invalid votes"
|
msgid "Invalid votes"
|
||||||
msgstr "Ungültige Stimmen"
|
msgstr "Ungültige Stimmen"
|
||||||
|
|
||||||
@ -447,11 +448,23 @@ msgstr "Ungültige Stimmen"
|
|||||||
msgid "Poll about"
|
msgid "Poll about"
|
||||||
msgstr "Abstimmung über"
|
msgstr "Abstimmung über"
|
||||||
|
|
||||||
#: application/forms.py:52 application/models.py:47
|
#: application/forms.py:44
|
||||||
|
msgid "Trivial change"
|
||||||
|
msgstr "Triviale Änderung"
|
||||||
|
|
||||||
|
#: application/forms.py:44
|
||||||
|
msgid "Trivial changes don't create a new version."
|
||||||
|
msgstr "Triviale Änderungen erzeugen keine neue Version."
|
||||||
|
|
||||||
|
#: application/forms.py:52 application/models.py:48
|
||||||
#: application/templates/application/view.html:23 utils/pdf.py:363
|
#: application/templates/application/view.html:23 utils/pdf.py:363
|
||||||
msgid "Supporters"
|
msgid "Supporters"
|
||||||
msgstr "Unterstützer/innen"
|
msgstr "Unterstützer/innen"
|
||||||
|
|
||||||
|
#: application/forms.py:62 participant/forms.py:72
|
||||||
|
msgid "CSV File"
|
||||||
|
msgstr "CSV-Datei"
|
||||||
|
|
||||||
#: application/models.py:26
|
#: application/models.py:26
|
||||||
msgid "Published"
|
msgid "Published"
|
||||||
msgstr "Veröffentlicht"
|
msgstr "Veröffentlicht"
|
||||||
@ -461,12 +474,12 @@ msgid "Permitted"
|
|||||||
msgstr "Zugelassen"
|
msgstr "Zugelassen"
|
||||||
|
|
||||||
#: application/models.py:28 application/templates/application/overview.html:20
|
#: application/models.py:28 application/templates/application/overview.html:20
|
||||||
#: application/templates/application/view.html:168
|
#: application/templates/application/view.html:175
|
||||||
msgid "Accepted"
|
msgid "Accepted"
|
||||||
msgstr "Angenommen"
|
msgstr "Angenommen"
|
||||||
|
|
||||||
#: application/models.py:29 application/templates/application/overview.html:21
|
#: application/models.py:29 application/templates/application/overview.html:21
|
||||||
#: application/templates/application/view.html:173
|
#: application/templates/application/view.html:180
|
||||||
msgid "Rejected"
|
msgid "Rejected"
|
||||||
msgstr "Abgelehnt"
|
msgstr "Abgelehnt"
|
||||||
|
|
||||||
@ -474,17 +487,17 @@ msgstr "Abgelehnt"
|
|||||||
msgid "Withdrawed"
|
msgid "Withdrawed"
|
||||||
msgstr "Zurückgezogen"
|
msgstr "Zurückgezogen"
|
||||||
|
|
||||||
#: application/models.py:31 application/templates/application/view.html:181
|
#: application/models.py:31 application/templates/application/view.html:188
|
||||||
msgid "Adjourned"
|
msgid "Adjourned"
|
||||||
msgstr "Vertagt"
|
msgstr "Vertagt"
|
||||||
|
|
||||||
# please check!
|
# please check!
|
||||||
#: application/models.py:32 application/templates/application/view.html:184
|
#: application/models.py:32 application/templates/application/view.html:191
|
||||||
msgid "Not Concerned"
|
msgid "Not Concerned"
|
||||||
msgstr "Nicht befasst"
|
msgstr "Nicht befasst"
|
||||||
|
|
||||||
# please check!
|
# please check!
|
||||||
#: application/models.py:33 application/templates/application/view.html:187
|
#: application/models.py:33 application/templates/application/view.html:194
|
||||||
msgid "Commited a bill"
|
msgid "Commited a bill"
|
||||||
msgstr "Verwiesen (in Ausschuss)"
|
msgstr "Verwiesen (in Ausschuss)"
|
||||||
|
|
||||||
@ -492,84 +505,89 @@ msgstr "Verwiesen (in Ausschuss)"
|
|||||||
msgid "Rejected (not permitted)"
|
msgid "Rejected (not permitted)"
|
||||||
msgstr "Verworfen (nicht zulässig)"
|
msgstr "Verworfen (nicht zulässig)"
|
||||||
|
|
||||||
#: application/models.py:116
|
#: application/models.py:117
|
||||||
msgid "Searching for supporters."
|
msgid "Searching for supporters."
|
||||||
msgstr "Auf Unterstützersuche."
|
msgstr "Auf Unterstützersuche."
|
||||||
|
|
||||||
#: application/models.py:118
|
#: application/models.py:119
|
||||||
msgid "Not yet permitted."
|
msgid "Not yet permitted."
|
||||||
msgstr "Noch nicht zugelassen."
|
msgstr "Noch nicht zugelassen."
|
||||||
|
|
||||||
#: application/models.py:120
|
#: application/models.py:121
|
||||||
msgid "Not yet permitted changes."
|
msgid "Not yet permitted changes."
|
||||||
msgstr "Noch nicht zugelassene Änderungen."
|
msgstr "Noch nicht zugelassene Änderungen."
|
||||||
|
|
||||||
#: application/models.py:181
|
#: application/models.py:181
|
||||||
#, python-format
|
#, python-format
|
||||||
|
msgid "Version %s modified"
|
||||||
|
msgstr "Version %s bearbeitet"
|
||||||
|
|
||||||
|
#: application/models.py:190
|
||||||
|
#, python-format
|
||||||
msgid "Version %s created"
|
msgid "Version %s created"
|
||||||
msgstr "Version %s erstellt"
|
msgstr "Version %s erstellt"
|
||||||
|
|
||||||
#: application/models.py:190
|
#: application/models.py:199
|
||||||
msgid "Supporters removed"
|
msgid "Supporters removed"
|
||||||
msgstr "Unterstützer/innen gelöscht"
|
msgstr "Unterstützer/innen gelöscht"
|
||||||
|
|
||||||
#: application/models.py:199
|
#: application/models.py:208
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Status reseted to: %s"
|
msgid "Status reseted to: %s"
|
||||||
msgstr "Status zurückgesetzt auf: %s"
|
msgstr "Status zurückgesetzt auf: %s"
|
||||||
|
|
||||||
#: application/models.py:212 application/views.py:149
|
#: application/models.py:221 application/views.py:157
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: +%s"
|
msgid "Supporter: +%s"
|
||||||
msgstr "Unterstützer/in: +%s"
|
msgstr "Unterstützer/in: +%s"
|
||||||
|
|
||||||
#: application/models.py:222 application/views.py:160
|
#: application/models.py:231 application/views.py:168
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Supporter: -%s"
|
msgid "Supporter: -%s"
|
||||||
msgstr "Unterstützer/in: -%s"
|
msgstr "Unterstützer/in: -%s"
|
||||||
|
|
||||||
#: application/models.py:238
|
#: application/models.py:247
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Number set: %s"
|
msgid "Number set: %s"
|
||||||
msgstr "Nummer gesetzt: %s"
|
msgstr "Nummer gesetzt: %s"
|
||||||
|
|
||||||
#: application/models.py:251
|
#: application/models.py:260
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s permitted"
|
msgid "Version %s permitted"
|
||||||
msgstr "Version %s zugelassen"
|
msgstr "Version %s zugelassen"
|
||||||
|
|
||||||
#: application/models.py:265
|
#: application/models.py:274
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version %s not permitted"
|
msgid "Version %s not permitted"
|
||||||
msgstr "Version %s nicht zugelassen"
|
msgstr "Version %s nicht zugelassen"
|
||||||
|
|
||||||
#: application/models.py:291
|
#: application/models.py:300
|
||||||
msgid "Status modified"
|
msgid "Status modified"
|
||||||
msgstr "Status geändert"
|
msgstr "Status geändert"
|
||||||
|
|
||||||
#: application/models.py:407
|
#: application/models.py:419
|
||||||
msgid "Poll created"
|
msgid "Poll created"
|
||||||
msgstr "Abstimmung erstellt"
|
msgstr "Abstimmung erstellt"
|
||||||
|
|
||||||
#: application/views.py:102
|
#: application/views.py:110
|
||||||
msgid "You have not the necessary rights to create or edit applications."
|
msgid "You have not the necessary rights to create or edit applications."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu "
|
"Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu "
|
||||||
"bearbeiten."
|
"bearbeiten."
|
||||||
|
|
||||||
#: application/views.py:107
|
#: application/views.py:115
|
||||||
msgid "You can not edit this application. You are not the submitter."
|
msgid "You can not edit this application. You are not the submitter."
|
||||||
msgstr "Sie dürfen keine Anträge von anderen bearbeiten."
|
msgstr "Sie dürfen keine Anträge von anderen bearbeiten."
|
||||||
|
|
||||||
#: application/views.py:162
|
#: application/views.py:170
|
||||||
msgid "New application was successfully created."
|
msgid "New application was successfully created."
|
||||||
msgstr "Neuer Antrag wurde erfolgreich angelegt."
|
msgstr "Neuer Antrag wurde erfolgreich angelegt."
|
||||||
|
|
||||||
#: application/views.py:164
|
#: application/views.py:172
|
||||||
msgid "Application was successfully modified."
|
msgid "Application was successfully modified."
|
||||||
msgstr "Antrag wurde erfolgreich geändert."
|
msgstr "Antrag wurde erfolgreich geändert."
|
||||||
|
|
||||||
#: application/views.py:176
|
#: application/views.py:184
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Do you really want to edit this application? The supporters will "
|
"Attention: Do you really want to edit this application? The supporters will "
|
||||||
"<b>not</b> be removed automatically because you can manage applications. "
|
"<b>not</b> be removed automatically because you can manage applications. "
|
||||||
@ -579,7 +597,7 @@ msgstr ""
|
|||||||
"werden <b>nicht</b> automatisch entfernt, da Sie Anträge verwalten dürfen. "
|
"werden <b>nicht</b> automatisch entfernt, da Sie Anträge verwalten dürfen. "
|
||||||
"Prüfen Sie, ob die Unterstützungen noch gültig sind."
|
"Prüfen Sie, ob die Unterstützungen noch gültig sind."
|
||||||
|
|
||||||
#: application/views.py:178
|
#: application/views.py:186
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Attention: Do you really want to edit this application? All <b>%s</b> "
|
"Attention: Do you really want to edit this application? All <b>%s</b> "
|
||||||
@ -588,86 +606,140 @@ msgstr ""
|
|||||||
"Wollen Sie den Antrag wirklich ändern? Alle <b>%s</b> Unterstützer/innen "
|
"Wollen Sie den Antrag wirklich ändern? Alle <b>%s</b> Unterstützer/innen "
|
||||||
"werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen."
|
"werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen."
|
||||||
|
|
||||||
#: application/views.py:208
|
#: application/views.py:216
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You can not delete application <b>%s</b>."
|
msgid "You can not delete application <b>%s</b>."
|
||||||
msgstr "Sie können Antrag <b>%s</b> nicht löschen."
|
msgstr "Sie können Antrag <b>%s</b> nicht löschen."
|
||||||
|
|
||||||
#: application/views.py:214
|
#: application/views.py:222
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Application <b>%s</b> was successfully deleted."
|
msgid "Application <b>%s</b> was successfully deleted."
|
||||||
msgstr "Antrag <b>%s</b> wurde erfolgreich gelöscht."
|
msgstr "Antrag <b>%s</b> wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: application/views.py:230
|
#: application/views.py:238
|
||||||
msgid "Application number was successfully set."
|
msgid "Application number was successfully set."
|
||||||
msgstr "Antragsnummer wurde erfolgreich gesetzt."
|
msgstr "Antragsnummer wurde erfolgreich gesetzt."
|
||||||
|
|
||||||
#: application/views.py:246
|
#: application/views.py:254
|
||||||
msgid "Application was successfully permitted."
|
msgid "Application was successfully permitted."
|
||||||
msgstr "Antrag wurde erfolgreich zugelassen."
|
msgstr "Antrag wurde erfolgreich zugelassen."
|
||||||
|
|
||||||
#: application/views.py:259
|
#: application/views.py:267
|
||||||
msgid "Application was successfully rejected."
|
msgid "Application was successfully rejected."
|
||||||
msgstr "Antrag wurde erfolgreich verworfen."
|
msgstr "Antrag wurde erfolgreich verworfen."
|
||||||
|
|
||||||
#: application/views.py:273
|
#: application/views.py:281
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Application status was set to: <b>%s</b>."
|
msgid "Application status was set to: <b>%s</b>."
|
||||||
msgstr "Antragsstatus wurde gesetzt auf: <b>%s</b>"
|
msgstr "Antragsstatus wurde gesetzt auf: <b>%s</b>"
|
||||||
|
|
||||||
#: application/views.py:287
|
#: application/views.py:295
|
||||||
msgid "Application status was reset."
|
msgid "Application status was reset."
|
||||||
msgstr "Antragsstatus wurde zurückgesetzt."
|
msgstr "Antragsstatus wurde zurückgesetzt."
|
||||||
|
|
||||||
#: application/views.py:301
|
#: application/views.py:309
|
||||||
msgid "You have support the application successfully."
|
msgid "You have support the application successfully."
|
||||||
msgstr "Sie haben den Antrag erfolgreich unterstützt."
|
msgstr "Sie haben den Antrag erfolgreich unterstützt."
|
||||||
|
|
||||||
#: application/views.py:315
|
#: application/views.py:323
|
||||||
msgid "You have unsupport the application successfully."
|
msgid "You have unsupport the application successfully."
|
||||||
msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen."
|
msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen."
|
||||||
|
|
||||||
#: application/views.py:329
|
#: application/views.py:344
|
||||||
msgid "New vote was successfully created."
|
msgid "New vote was successfully created."
|
||||||
msgstr "Neue Abstimmung erfolgreich angelegt."
|
msgstr "Neue Abstimmung erfolgreich angelegt."
|
||||||
|
|
||||||
#: application/views.py:345
|
#: application/views.py:360
|
||||||
msgid "Poll was successfully deleted."
|
msgid "Poll was successfully deleted."
|
||||||
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
msgstr "Abstimmung wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: application/views.py:347
|
#: application/views.py:362
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "the %s. poll"
|
msgid "the %s. poll"
|
||||||
msgstr "die %s. Abstimmung"
|
msgstr "die %s. Abstimmung"
|
||||||
|
|
||||||
#: application/views.py:377 assignment/views.py:220
|
#: application/views.py:392 assignment/views.py:227
|
||||||
msgid "Votes are successfully saved."
|
msgid "Votes are successfully saved."
|
||||||
msgstr "Stimmen erfolgreich gespeichert."
|
msgstr "Stimmen erfolgreich gespeichert."
|
||||||
|
|
||||||
#: application/views.py:401
|
#: application/views.py:416
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version <b>%s</b> accepted."
|
msgid "Version <b>%s</b> accepted."
|
||||||
msgstr "Version <b>%s</b> akzeptiert."
|
msgstr "Version <b>%s</b> akzeptiert."
|
||||||
|
|
||||||
#: application/views.py:403
|
#: application/views.py:418
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to permit version <b>%s</b>?"
|
msgid "Do you really want to permit version <b>%s</b>?"
|
||||||
msgstr "Soll Version <b>%s</b> wirklich zugelassen werden?"
|
msgstr "Soll Version <b>%s</b> wirklich zugelassen werden?"
|
||||||
|
|
||||||
#: application/views.py:413
|
#: application/views.py:428
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Version <b>%s</b> rejected."
|
msgid "Version <b>%s</b> rejected."
|
||||||
msgstr "Version <b>%s</b> zurückgewiesen."
|
msgstr "Version <b>%s</b> zurückgewiesen."
|
||||||
|
|
||||||
#: application/views.py:415
|
#: application/views.py:430
|
||||||
msgid "ERROR by rejecting the version."
|
msgid "ERROR by rejecting the version."
|
||||||
msgstr "FEHLER beim Zurückweisen der Version."
|
msgstr "FEHLER beim Zurückweisen der Version."
|
||||||
|
|
||||||
#: application/views.py:417
|
#: application/views.py:432
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to reject version <b>%s</b>?"
|
msgid "Do you really want to reject version <b>%s</b>?"
|
||||||
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
|
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
|
||||||
|
|
||||||
|
#: application/views.py:441 participant/views.py:272
|
||||||
|
msgid ""
|
||||||
|
"The import function is available for the superuser (without user profile) "
|
||||||
|
"only."
|
||||||
|
msgstr ""
|
||||||
|
"Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar."
|
||||||
|
|
||||||
|
#: application/views.py:458 application/views.py:462 application/views.py:468
|
||||||
|
#: application/views.py:471
|
||||||
|
#, python-format
|
||||||
|
msgid "Ignoring malformed line %d in import file."
|
||||||
|
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
|
||||||
|
|
||||||
|
#: application/views.py:520
|
||||||
|
#, python-format
|
||||||
|
msgid "%d application was successfully imported."
|
||||||
|
msgid_plural "%d applications were successfully imported."
|
||||||
|
msgstr[0] "%d Antrag wurde erfolgreich importiert."
|
||||||
|
msgstr[1] "%d Anträge wurden erfolgreich importiert."
|
||||||
|
|
||||||
|
#: application/views.py:523
|
||||||
|
#, python-format
|
||||||
|
msgid "%d application was successfully modified."
|
||||||
|
msgid_plural "%d applications were successfully modified."
|
||||||
|
msgstr[0] "%d Antrag wurde erfolgreich geändert."
|
||||||
|
msgstr[1] "%d Anträge wurden erfolgreich geändert."
|
||||||
|
|
||||||
|
#: application/views.py:526
|
||||||
|
#, python-format
|
||||||
|
msgid "%d new user was added."
|
||||||
|
msgid_plural "%d new users were added."
|
||||||
|
msgstr[0] "%d neuer Nutzer wurde erstellt."
|
||||||
|
msgstr[1] "%d neue Nutzer wurden erstellt."
|
||||||
|
|
||||||
|
#: application/views.py:530
|
||||||
|
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:534
|
||||||
|
msgid ""
|
||||||
|
"Attention: Existing applications will be modified if you import new "
|
||||||
|
"applications with the same number."
|
||||||
|
msgstr ""
|
||||||
|
"Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit "
|
||||||
|
"identischer Nummer importieren."
|
||||||
|
|
||||||
|
#: application/views.py:535
|
||||||
|
msgid ""
|
||||||
|
"Attention: Importing an application without a number multiple times will "
|
||||||
|
"create duplicates."
|
||||||
|
msgstr ""
|
||||||
|
"Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate "
|
||||||
|
"entstehen."
|
||||||
|
|
||||||
#: application/templates/application/base_application.html:6
|
#: application/templates/application/base_application.html:6
|
||||||
#: application/templates/application/overview.html:2
|
#: application/templates/application/overview.html:2
|
||||||
#: application/templates/application/overview.html:6
|
#: application/templates/application/overview.html:6
|
||||||
@ -685,7 +757,12 @@ msgstr "Alle Anträge"
|
|||||||
msgid "New application"
|
msgid "New application"
|
||||||
msgstr "Neuer Antrag"
|
msgstr "Neuer Antrag"
|
||||||
|
|
||||||
#: application/templates/application/base_application.html:12
|
#: application/templates/application/base_application.html:11
|
||||||
|
#: application/templates/application/import.html:2
|
||||||
|
msgid "Import applications"
|
||||||
|
msgstr "Anträge importieren"
|
||||||
|
|
||||||
|
#: application/templates/application/base_application.html:13
|
||||||
msgid "Print all applications"
|
msgid "Print all applications"
|
||||||
msgstr "Alle Anträge drucken"
|
msgstr "Alle Anträge drucken"
|
||||||
|
|
||||||
@ -697,6 +774,25 @@ msgstr "Antrag bearbeiten"
|
|||||||
msgid "required"
|
msgid "required"
|
||||||
msgstr "erforderlich"
|
msgstr "erforderlich"
|
||||||
|
|
||||||
|
#: application/templates/application/import.html:6
|
||||||
|
msgid "Select a CSV file to import applications!"
|
||||||
|
msgstr "Wählen Sie eine CSV-Datei zum Importieren von Anträgen aus!"
|
||||||
|
|
||||||
|
#: application/templates/application/import.html:8
|
||||||
|
msgid ""
|
||||||
|
"(Required comma separated values: <code>number, title, text, reason, "
|
||||||
|
"first_name, last_name</code> - <code>number</code> and <code>reason</code> "
|
||||||
|
"are optional and may be empty)"
|
||||||
|
msgstr ""
|
||||||
|
"(Erfordert kommaseparierte Werte: <code>Nummer, Titel, Text, Begründung, "
|
||||||
|
"Vorname, Nachname</code> - <code>Nummer</code> und <code>Begründung</code> "
|
||||||
|
"sind optional und können auch leer sein)"
|
||||||
|
|
||||||
|
#: application/templates/application/import.html:12
|
||||||
|
#: participant/templates/participant/import.html:12
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "Importiern"
|
||||||
|
|
||||||
#: application/templates/application/overview.html:8
|
#: application/templates/application/overview.html:8
|
||||||
#: assignment/templates/assignment/overview.html:8
|
#: assignment/templates/assignment/overview.html:8
|
||||||
#: participant/templates/participant/overview.html:9
|
#: participant/templates/participant/overview.html:9
|
||||||
@ -850,70 +946,76 @@ msgstr "Setze Nummer"
|
|||||||
msgid "New agenda item"
|
msgid "New agenda item"
|
||||||
msgstr "Neuer Tagesordnungseintrag"
|
msgstr "Neuer Tagesordnungseintrag"
|
||||||
|
|
||||||
#: application/templates/application/view.html:165
|
#: application/templates/application/view.html:167
|
||||||
|
#: assignment/templates/assignment/view.html:48
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Show agenda item"
|
||||||
|
msgstr "Neuer Tagesordnungseintrag"
|
||||||
|
|
||||||
|
#: application/templates/application/view.html:172
|
||||||
msgid "Result after vote"
|
msgid "Result after vote"
|
||||||
msgstr "Ergebnis nach der Abstimmung"
|
msgstr "Ergebnis nach der Abstimmung"
|
||||||
|
|
||||||
#: application/templates/application/view.html:179
|
#: application/templates/application/view.html:186
|
||||||
msgid "Result after debate"
|
msgid "Result after debate"
|
||||||
msgstr "Ergebnis nach der Debatte"
|
msgstr "Ergebnis nach der Debatte"
|
||||||
|
|
||||||
#: application/templates/application/view.html:190
|
#: application/templates/application/view.html:197
|
||||||
msgid "Withdrawed by Submitter"
|
msgid "Withdrawed by Submitter"
|
||||||
msgstr "Zurückgezogen durch Antragsteller/in"
|
msgstr "Zurückgezogen durch Antragsteller/in"
|
||||||
|
|
||||||
#: application/templates/application/view.html:196
|
#: application/templates/application/view.html:203
|
||||||
msgid "For Administration only:"
|
msgid "For Administration only:"
|
||||||
msgstr "Nur zur Administration:"
|
msgstr "Nur zur Administration:"
|
||||||
|
|
||||||
#: application/templates/application/view.html:198
|
#: application/templates/application/view.html:205
|
||||||
msgid "Reset"
|
msgid "Reset"
|
||||||
msgstr "Zurücksetzen"
|
msgstr "Zurücksetzen"
|
||||||
|
|
||||||
#: application/templates/application/view.html:216
|
#: application/templates/application/view.html:223
|
||||||
#: application/templates/application/view.html:244
|
#: application/templates/application/view.html:251
|
||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr "Version"
|
msgstr "Version"
|
||||||
|
|
||||||
#: application/templates/application/view.html:219
|
#: application/templates/application/view.html:226
|
||||||
msgid "Show newest Version"
|
msgid "Show newest Version"
|
||||||
msgstr "Neuste Version anzeigen"
|
msgstr "Neuste Version anzeigen"
|
||||||
|
|
||||||
#: application/templates/application/view.html:221
|
#: application/templates/application/view.html:228
|
||||||
msgid "Show permitted Version"
|
msgid "Show permitted Version"
|
||||||
msgstr "Zugelassene Version anzeigen"
|
msgstr "Zugelassene Version anzeigen"
|
||||||
|
|
||||||
#: application/templates/application/view.html:239
|
#: application/templates/application/view.html:246
|
||||||
msgid "Version History"
|
msgid "Version History"
|
||||||
msgstr "Versionshistorie"
|
msgstr "Versionshistorie"
|
||||||
|
|
||||||
#: application/templates/application/view.html:245
|
#: application/templates/application/view.html:252
|
||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr "Zeit"
|
msgstr "Zeit"
|
||||||
|
|
||||||
#: application/templates/application/view.html:256
|
#: application/templates/application/view.html:263
|
||||||
msgid "Version accepted"
|
msgid "Version accepted"
|
||||||
msgstr "Version akzeptiert"
|
msgstr "Version akzeptiert"
|
||||||
|
|
||||||
#: application/templates/application/view.html:259
|
#: application/templates/application/view.html:266
|
||||||
msgid "Accept Version"
|
msgid "Accept Version"
|
||||||
msgstr "Zugelassene Version"
|
msgstr "Zugelassene Version"
|
||||||
|
|
||||||
#: application/templates/application/view.html:262
|
#: application/templates/application/view.html:269
|
||||||
msgid "Reject Version"
|
msgid "Reject Version"
|
||||||
msgstr "Verion zurückweisen"
|
msgstr "Verion zurückweisen"
|
||||||
|
|
||||||
#: application/templates/application/view.html:266
|
#: application/templates/application/view.html:273
|
||||||
msgid "Version rejected"
|
msgid "Version rejected"
|
||||||
msgstr "Version zurückgewiesen"
|
msgstr "Version zurückgewiesen"
|
||||||
|
|
||||||
#: application/templates/application/view.html:276
|
|
||||||
#: application/templates/application/view.html:283
|
#: application/templates/application/view.html:283
|
||||||
#: application/templates/application/view.html:290
|
#: application/templates/application/view.html:290
|
||||||
|
#: application/templates/application/view.html:297
|
||||||
msgid "unchanged"
|
msgid "unchanged"
|
||||||
msgstr "unverändert"
|
msgstr "unverändert"
|
||||||
|
|
||||||
#: application/templates/application/view.html:299
|
#: application/templates/application/view.html:306
|
||||||
msgid "Log"
|
msgid "Log"
|
||||||
msgstr "Log"
|
msgstr "Log"
|
||||||
|
|
||||||
@ -967,84 +1069,84 @@ msgstr "<b>%s</b> ist bereits ein/e Kandidat/in."
|
|||||||
msgid "%s is no candidate"
|
msgid "%s is no candidate"
|
||||||
msgstr "%s ist kein/e Kandidat/in"
|
msgstr "%s ist kein/e Kandidat/in"
|
||||||
|
|
||||||
#: assignment/views.py:61
|
#: assignment/views.py:62
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Candidate <b>%s</b> was nominated successfully."
|
msgid "Candidate <b>%s</b> was nominated successfully."
|
||||||
msgstr "Kandidat/in <b>%s</b> wurde erfolgreich vorgeschlagen."
|
msgstr "Kandidat/in <b>%s</b> wurde erfolgreich vorgeschlagen."
|
||||||
|
|
||||||
#: assignment/views.py:109
|
#: assignment/views.py:110
|
||||||
msgid "New election was successfully created."
|
msgid "New election was successfully created."
|
||||||
msgstr "Neue Wahl wurde erfolgreich angelegt."
|
msgstr "Neue Wahl wurde erfolgreich angelegt."
|
||||||
|
|
||||||
#: assignment/views.py:111
|
#: assignment/views.py:112
|
||||||
msgid "Election was successfully modified."
|
msgid "Election was successfully modified."
|
||||||
msgstr "Wahl wurde erfolgreich geändert."
|
msgstr "Wahl wurde erfolgreich geändert."
|
||||||
|
|
||||||
#: assignment/views.py:129
|
#: assignment/views.py:130
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Election <b>%s</b> was successfully deleted."
|
msgid "Election <b>%s</b> was successfully deleted."
|
||||||
msgstr "Wahl <b>%s</b> wurde erfolgreich gelöscht."
|
msgstr "Wahl <b>%s</b> wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: assignment/views.py:142
|
#: assignment/views.py:143
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Election status was set to: <b>%s</b>."
|
msgid "Election status was set to: <b>%s</b>."
|
||||||
msgstr "Wahlstatus wurde gesetzt auf: <b>%s</b>."
|
msgstr "Wahlstatus wurde gesetzt auf: <b>%s</b>."
|
||||||
|
|
||||||
#: assignment/views.py:153
|
#: assignment/views.py:154
|
||||||
msgid "You have set your candidature successfully."
|
msgid "You have set your candidature successfully."
|
||||||
msgstr "Sie haben Ihre Kandidatur erfolgreich gesetzt."
|
msgstr "Sie haben Ihre Kandidatur erfolgreich gesetzt."
|
||||||
|
|
||||||
#: assignment/views.py:158
|
#: assignment/views.py:159
|
||||||
msgid "You can't candidate. Your user account is only for administration."
|
msgid "You can't candidate. Your user account is only for administration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie können nicht kandidieren. Ihr Nutzerkonto ist nur zur Administration."
|
"Sie können nicht kandidieren. Ihr Nutzerkonto ist nur zur Administration."
|
||||||
|
|
||||||
#: assignment/views.py:166
|
#: assignment/views.py:167
|
||||||
msgid "You have withdrawn your candidature successfully."
|
msgid "You have withdrawn your candidature successfully."
|
||||||
msgstr "Sie haben Ihre Kandidatur erfolgreich zurückgezogen."
|
msgstr "Sie haben Ihre Kandidatur erfolgreich zurückgezogen."
|
||||||
|
|
||||||
#: assignment/views.py:177
|
#: assignment/views.py:178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Candidate <b>%s</b> was withdrawn successfully."
|
msgid "Candidate <b>%s</b> was withdrawn successfully."
|
||||||
msgstr "Die Kandidatur von <b>%s</b> wurde erfolgreich zurückgezogen."
|
msgstr "Die Kandidatur von <b>%s</b> wurde erfolgreich zurückgezogen."
|
||||||
|
|
||||||
#: assignment/views.py:180
|
#: assignment/views.py:181
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Do you really want to withdraw <b>%s</b> from the election?"
|
msgid "Do you really want to withdraw <b>%s</b> from the election?"
|
||||||
msgstr "Soll <b>%s</b> wirklich von der Wahl zurückgezogen werden?"
|
msgstr "Soll <b>%s</b> wirklich von der Wahl zurückgezogen werden?"
|
||||||
|
|
||||||
#: assignment/views.py:189
|
#: assignment/views.py:196
|
||||||
msgid "New ballot was successfully created."
|
msgid "New ballot was successfully created."
|
||||||
msgstr "Neuer Wahlgang erfolgreich angelegt."
|
msgstr "Neuer Wahlgang erfolgreich angelegt."
|
||||||
|
|
||||||
#: assignment/views.py:244
|
#: assignment/views.py:251
|
||||||
msgid "Poll successfully set to published."
|
msgid "Poll successfully set to published."
|
||||||
msgstr "Abstimmung wurde erfolgreich veröffentlicht."
|
msgstr "Abstimmung wurde erfolgreich veröffentlicht."
|
||||||
|
|
||||||
#: assignment/views.py:246
|
#: assignment/views.py:253
|
||||||
msgid "Poll successfully set to unpublished."
|
msgid "Poll successfully set to unpublished."
|
||||||
msgstr "Abstimmung wurde erfolgreich unveröffentlicht."
|
msgstr "Abstimmung wurde erfolgreich unveröffentlicht."
|
||||||
|
|
||||||
#: assignment/views.py:248
|
#: assignment/views.py:255
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Poll ID %d does not exist."
|
msgid "Poll ID %d does not exist."
|
||||||
msgstr "Abstimmungs-ID %d existiert nicht."
|
msgstr "Abstimmungs-ID %d existiert nicht."
|
||||||
|
|
||||||
#: assignment/views.py:258
|
#: assignment/views.py:265
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "The %s. ballot was successfully deleted."
|
msgid "The %s. ballot was successfully deleted."
|
||||||
msgstr "Der %s. Wahlgang wurde erfolgreich gelöscht."
|
msgstr "Der %s. Wahlgang wurde erfolgreich gelöscht."
|
||||||
|
|
||||||
#: assignment/views.py:260
|
#: assignment/views.py:267
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "the %s. ballot"
|
msgid "the %s. ballot"
|
||||||
msgstr "der %s. Wahlgang"
|
msgstr "der %s. Wahlgang"
|
||||||
|
|
||||||
#: assignment/views.py:272
|
#: assignment/views.py:279
|
||||||
msgid "not elected"
|
msgid "not elected"
|
||||||
msgstr "nicht gewählt"
|
msgstr "nicht gewählt"
|
||||||
|
|
||||||
#: assignment/views.py:275 utils/pdf.py:623
|
#: assignment/views.py:282 utils/pdf.py:623
|
||||||
msgid "elected"
|
msgid "elected"
|
||||||
msgstr "gewählt"
|
msgstr "gewählt"
|
||||||
|
|
||||||
@ -1126,36 +1228,36 @@ msgstr "Status ändern"
|
|||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Abschließen"
|
msgstr "Abschließen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:61
|
#: assignment/templates/assignment/view.html:68
|
||||||
msgid "Remove candidate"
|
msgid "Remove candidate"
|
||||||
msgstr "Kandidate/in entfernen"
|
msgstr "Kandidate/in entfernen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:79
|
#: assignment/templates/assignment/view.html:86
|
||||||
msgid "Withdraw self candidature"
|
msgid "Withdraw self candidature"
|
||||||
msgstr "Eigene Kandidatur zurückziehen"
|
msgstr "Eigene Kandidatur zurückziehen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:86
|
#: assignment/templates/assignment/view.html:93
|
||||||
msgid "Self candidature"
|
msgid "Self candidature"
|
||||||
msgstr "Selbst kandidieren"
|
msgstr "Selbst kandidieren"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:98
|
#: assignment/templates/assignment/view.html:105
|
||||||
msgid "Add new participant"
|
msgid "Add new participant"
|
||||||
msgstr "Neue/n Teilnehmer/in hinzufügen"
|
msgstr "Neue/n Teilnehmer/in hinzufügen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:136
|
#: assignment/templates/assignment/view.html:143
|
||||||
msgid "Unpublish results"
|
msgid "Unpublish results"
|
||||||
msgstr "Ergebnisse unveröffentlichen"
|
msgstr "Ergebnisse unveröffentlichen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:140
|
#: assignment/templates/assignment/view.html:147
|
||||||
msgid "Publish results"
|
msgid "Publish results"
|
||||||
msgstr "Ergebnisse veröffentlichen"
|
msgstr "Ergebnisse veröffentlichen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:142
|
#: assignment/templates/assignment/view.html:149
|
||||||
msgid "Delete Poll"
|
msgid "Delete Poll"
|
||||||
msgstr "Abstimmung löschen"
|
msgstr "Abstimmung löschen"
|
||||||
|
|
||||||
#: assignment/templates/assignment/view.html:151
|
#: assignment/templates/assignment/view.html:158
|
||||||
#: assignment/templates/assignment/view.html:225
|
#: assignment/templates/assignment/view.html:232
|
||||||
msgid "New ballot"
|
msgid "New ballot"
|
||||||
msgstr "Neuer Wahlgang"
|
msgstr "Neuer Wahlgang"
|
||||||
|
|
||||||
@ -1167,10 +1269,6 @@ msgstr "Vorname"
|
|||||||
msgid "Last name"
|
msgid "Last name"
|
||||||
msgstr "Nachname"
|
msgstr "Nachname"
|
||||||
|
|
||||||
#: participant/forms.py:72
|
|
||||||
msgid "CSV File"
|
|
||||||
msgstr "CSV-Datei"
|
|
||||||
|
|
||||||
#: participant/models.py:22 participant/templates/participant/overview.html:14
|
#: participant/models.py:22 participant/templates/participant/overview.html:14
|
||||||
msgid "Not specified"
|
msgid "Not specified"
|
||||||
msgstr "Nicht angegeben"
|
msgstr "Nicht angegeben"
|
||||||
@ -1271,13 +1369,6 @@ msgstr "Gruppe <b>%s</b> wurde erfolgreich gelöscht."
|
|||||||
msgid "User settings successfully saved."
|
msgid "User settings successfully saved."
|
||||||
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
|
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
|
||||||
|
|
||||||
#: participant/views.py:272
|
|
||||||
msgid ""
|
|
||||||
"The import function is available for the superuser (without user profile) "
|
|
||||||
"only."
|
|
||||||
msgstr ""
|
|
||||||
"Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar."
|
|
||||||
|
|
||||||
#: participant/views.py:311
|
#: participant/views.py:311
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d new participants were successfully imported."
|
msgid "%d new participants were successfully imported."
|
||||||
@ -1417,10 +1508,6 @@ msgstr ""
|
|||||||
"(Erfordert kommaseparierte Werte: <code>Vorname, Nachname, Geschlecht, "
|
"(Erfordert kommaseparierte Werte: <code>Vorname, Nachname, Geschlecht, "
|
||||||
"Gruppe, Typ, Amt</code>)"
|
"Gruppe, Typ, Amt</code>)"
|
||||||
|
|
||||||
#: participant/templates/participant/import.html:12
|
|
||||||
msgid "Import"
|
|
||||||
msgstr "Importiern"
|
|
||||||
|
|
||||||
#: participant/templates/participant/login.html:5
|
#: participant/templates/participant/login.html:5
|
||||||
#: participant/templates/participant/login.html:13
|
#: participant/templates/participant/login.html:13
|
||||||
#: participant/templates/participant/login.html:43 templates/base.html:26
|
#: participant/templates/participant/login.html:43 templates/base.html:26
|
||||||
|
Loading…
Reference in New Issue
Block a user