Added participant and version config page. Moved system settings to general. Some style work.
This commit is contained in:
parent
195ddddf7e
commit
95d5929449
@ -2,7 +2,7 @@
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% trans "Configuration" %}{% endblock %}
|
||||
{% block title %}{{ block.super }} - {% trans "Agenda settings" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{%trans "Agenda settings" %}</h1>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% trans "Configuration" %}{% endblock %}
|
||||
{% block title %}{{ block.super }} - {% trans "Application settings" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{%trans "Application settings" %}</h1>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% trans "Configuration" %}{% endblock %}
|
||||
{% block title %}{{ block.super }} - {% trans "Election settings" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{%trans "Election settings" %}</h1>
|
||||
|
@ -17,15 +17,10 @@ from utils.forms import CssClassMixin
|
||||
from models import config
|
||||
|
||||
|
||||
class SystemConfigForm(Form, CssClassMixin):
|
||||
system_url = CharField(widget=TextInput(), required=False, label=_("System URL"))
|
||||
system_welcometext = CharField(widget=Textarea(), required=False, label=_("Welcome text (for password PDF)"))
|
||||
system_enable_anonymous = BooleanField(required=False, label=_("Access for anonymous / guest users"), help_text=_("Allow access for guest users"))
|
||||
|
||||
|
||||
class EventConfigForm(Form, CssClassMixin):
|
||||
class GeneralConfigForm(Form, CssClassMixin):
|
||||
event_name = CharField(widget=TextInput(),label=_("Event name"), max_length=30)
|
||||
event_description = CharField(widget=TextInput(),label=_("Short description of event"), max_length=100, required=False)
|
||||
event_date = CharField(widget=TextInput(), required=False, label=_("Event date"))
|
||||
event_location = CharField(widget=TextInput(), required=False, label=_("Event location"))
|
||||
event_organizer = CharField(widget=TextInput(), required=False, label=_("Event organizer"))
|
||||
system_enable_anonymous = BooleanField(required=False, label=_("Allow access for anonymous guest users") )
|
||||
|
@ -81,8 +81,6 @@ def default_config(sender, key, **kwargs):
|
||||
return {
|
||||
'event_name': 'OpenSlides',
|
||||
'event_description': 'Presentation and voting system',
|
||||
'system_url': 'http://127.0.0.1:8000',
|
||||
'system_welcometext': 'Welcome to OpenSlides!',
|
||||
}.get(key)
|
||||
|
||||
|
||||
|
@ -2,12 +2,40 @@
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% trans "Configuration" %}{% endblock %}
|
||||
{% block title %}{{ block.super }} - {% trans "General settings" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{%trans "General settings" %}</h1>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<fieldset>
|
||||
<legend>{%trans "Event" %}</legend>
|
||||
{% for field in form %}
|
||||
{% if "id_event" in field.label_tag %}
|
||||
<p>
|
||||
{{ field.errors }}
|
||||
{{ field.required }}
|
||||
{{ field.label_tag }}
|
||||
{{ field }}
|
||||
{{ field.help_text }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
<p></p>
|
||||
<fieldset style="width: 410px;">
|
||||
<legend>{%trans "System" %}</legend>
|
||||
{% for field in form %}
|
||||
{% if "id_system" in field.label_tag %}
|
||||
<p>
|
||||
{{ field.errors }}
|
||||
{{ field.required }}
|
||||
{{ field.label_tag }}
|
||||
{{ field }}
|
||||
{{ field.help_text }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon ok">{%trans 'Save' %}</span>
|
||||
|
@ -23,14 +23,15 @@ from utils.utils import template, permission_required
|
||||
from utils.views import FormView, TemplateView
|
||||
from utils.template import Tab
|
||||
|
||||
from forms import SystemConfigForm, EventConfigForm
|
||||
from forms import GeneralConfigForm
|
||||
|
||||
|
||||
from models import config
|
||||
|
||||
|
||||
class GeneralConfig(FormView):
|
||||
permission_required = 'config.can_manage_config'
|
||||
form_class = EventConfigForm
|
||||
form_class = GeneralConfigForm
|
||||
template_name = 'config/general.html'
|
||||
|
||||
def get_initial(self):
|
||||
@ -40,6 +41,7 @@ class GeneralConfig(FormView):
|
||||
'event_date': config['event_date'],
|
||||
'event_location': config['event_location'],
|
||||
'event_organizer': config['event_organizer'],
|
||||
'system_enable_anonymous': config['system_enable_anonymous'],
|
||||
}
|
||||
|
||||
def form_valid(self, form):
|
||||
@ -48,39 +50,6 @@ class GeneralConfig(FormView):
|
||||
config['event_date'] = form.cleaned_data['event_date']
|
||||
config['event_location'] = form.cleaned_data['event_location']
|
||||
config['event_organizer'] = form.cleaned_data['event_organizer']
|
||||
messages.success(self.request, _('General settings successfully saved.'))
|
||||
return super(GeneralConfig, self).form_valid(form)
|
||||
|
||||
def form_invalid(self, form):
|
||||
messages.error(self.request, _('Please check the form for errors.'))
|
||||
return super(Config, self).form_invalid(form)
|
||||
|
||||
|
||||
class VersionConfig(TemplateView):
|
||||
permission_required = 'config.can_manage_config'
|
||||
template_name = 'config/version.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(VersionConfig, self).get_context_data(**kwargs)
|
||||
context['version'] = get_version()
|
||||
return context
|
||||
|
||||
|
||||
class Config(FormView):
|
||||
permission_required = 'config.can_manage_config'
|
||||
form_class = SystemConfigForm
|
||||
template_name = 'config/config.html'
|
||||
|
||||
def get_initial(self):
|
||||
return {
|
||||
'system_url': config['system_url'],
|
||||
'system_welcometext': config['system_welcometext'],
|
||||
'system_enable_anonymous': config['system_enable_anonymous'],
|
||||
}
|
||||
|
||||
def form_valid(self, form):
|
||||
config['system_url'] = form.cleaned_data['system_url']
|
||||
config['system_welcometext'] = form.cleaned_data['system_welcometext']
|
||||
if form.cleaned_data['system_enable_anonymous']:
|
||||
config['system_enable_anonymous'] = True
|
||||
# check for Anonymous group and (re)create it as needed
|
||||
@ -96,8 +65,18 @@ class Config(FormView):
|
||||
messages.success(self.request, _('Anonymous access enabled. Please modify the "Anonymous" group to fit your required permissions.'))
|
||||
else:
|
||||
config['system_enable_anonymous'] = False
|
||||
messages.success(self.request, _('System settings successfully saved.'))
|
||||
return super(Config, self).form_valid(form)
|
||||
messages.success(self.request, _('General settings successfully saved.'))
|
||||
return super(GeneralConfig, self).form_valid(form)
|
||||
|
||||
|
||||
class VersionConfig(TemplateView):
|
||||
permission_required = 'config.can_manage_config'
|
||||
template_name = 'config/version.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(VersionConfig, self).get_context_data(**kwargs)
|
||||
context['version'] = get_version()
|
||||
return context
|
||||
|
||||
|
||||
def register_tab(request):
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-04-15 10:06+0200\n"
|
||||
"POT-Creation-Date: 2012-04-15 12:24+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -43,9 +43,10 @@ msgstr "Titel"
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
#: agenda/models.py:41
|
||||
msgid "Transcript"
|
||||
msgstr ""
|
||||
#: agenda/models.py:41 participant/models.py:37
|
||||
#: participant/templates/participant/overview.html:69
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: agenda/models.py:42
|
||||
msgid "Closed"
|
||||
@ -68,8 +69,8 @@ msgstr "Darf die Tagesordung verwalten"
|
||||
msgid "Agenda Item"
|
||||
msgstr "Tagesordnungseintrag"
|
||||
|
||||
#: agenda/models.py:142 agenda/slides.py:7 agenda/views.py:190
|
||||
#: agenda/views.py:191 agenda/views.py:220
|
||||
#: agenda/models.py:142 agenda/slides.py:7 agenda/views.py:185
|
||||
#: agenda/views.py:186 agenda/views.py:215
|
||||
#: agenda/templates/agenda/base_agenda.html:9
|
||||
#: agenda/templates/agenda/overview.html:8
|
||||
#: agenda/templates/agenda/overview.html:42
|
||||
@ -79,17 +80,17 @@ msgstr "Tagesordnungseintrag"
|
||||
msgid "Agenda"
|
||||
msgstr "Tagesordnung"
|
||||
|
||||
#: agenda/views.py:165
|
||||
#: agenda/views.py:160
|
||||
#, python-format
|
||||
msgid "Item <b>%s</b> and his children were successfully deleted."
|
||||
msgstr "Eintrag <b>%s</b> und seine Kindelemente wurde erfolgreich gelöscht."
|
||||
|
||||
#: agenda/views.py:171 utils/views.py:191
|
||||
#: agenda/views.py:166 utils/views.py:191
|
||||
#, python-format
|
||||
msgid "Item <b>%s</b> was successfully deleted."
|
||||
msgstr "Eintrag <b>%s</b> wurde erfolgreich gelöscht."
|
||||
|
||||
#: agenda/views.py:175 agenda/views.py:177
|
||||
#: agenda/views.py:170 agenda/views.py:172
|
||||
#: agenda/templates/agenda/overview.html:48 application/views.py:706
|
||||
#: application/views.py:750 application/templates/application/view.html:80
|
||||
#: application/templates/projector/Application.html:34
|
||||
@ -101,7 +102,7 @@ msgstr "Eintrag <b>%s</b> wurde erfolgreich gelöscht."
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
#: agenda/views.py:175 agenda/views.py:177
|
||||
#: agenda/views.py:170 agenda/views.py:172
|
||||
#: agenda/templates/agenda/overview.html:49 application/views.py:706
|
||||
#: application/views.py:751 application/templates/application/view.html:81
|
||||
#: application/templates/projector/Application.html:35
|
||||
@ -111,17 +112,17 @@ msgstr "Ja"
|
||||
msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: agenda/views.py:177
|
||||
#: agenda/views.py:172
|
||||
msgid "Yes, with all child items."
|
||||
msgstr "Ja, mit allen Kindelementen."
|
||||
|
||||
#: agenda/views.py:183 agenda/views.py:185 participant/views.py:187
|
||||
#: participant/views.py:281 utils/utils.py:47 utils/views.py:200
|
||||
#: agenda/views.py:178 agenda/views.py:180 participant/views.py:188
|
||||
#: participant/views.py:282 utils/utils.py:47 utils/views.py:200
|
||||
#, python-format
|
||||
msgid "Do you really want to delete <b>%s</b>?"
|
||||
msgstr "Soll <b>%s</b> wirklich gelöscht werden?"
|
||||
|
||||
#: agenda/views.py:213
|
||||
#: agenda/views.py:208
|
||||
msgid "Agenda settings successfully saved."
|
||||
msgstr "Tagesordnungs-Einstellungen erfolgreich gespeichert."
|
||||
|
||||
@ -133,16 +134,7 @@ msgstr "Alle Einträge"
|
||||
msgid "New item"
|
||||
msgstr "Neuer Eintrag"
|
||||
|
||||
#: agenda/templates/agenda/config.html:5
|
||||
#: application/templates/application/config.html:5
|
||||
#: assignment/templates/assignment/config.html:5 config/views.py:94
|
||||
#: config/templates/config/base_config.html:7
|
||||
#: config/templates/config/config.html:5
|
||||
#: config/templates/config/general.html:5
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: agenda/templates/agenda/config.html:8
|
||||
#: agenda/templates/agenda/config.html:5 agenda/templates/agenda/config.html:8
|
||||
msgid "Agenda settings"
|
||||
msgstr "Tagesordnungs-Einstellungen"
|
||||
|
||||
@ -153,8 +145,8 @@ msgstr "Tagesordnungs-Einstellungen"
|
||||
#: assignment/templates/assignment/config.html:13
|
||||
#: assignment/templates/assignment/edit.html:17
|
||||
#: assignment/templates/assignment/poll_view.html:53
|
||||
#: config/templates/config/config.html:14
|
||||
#: config/templates/config/general.html:13
|
||||
#: config/templates/config/general.html:41
|
||||
#: participant/templates/participant/config.html:13
|
||||
#: participant/templates/participant/edit.html:21
|
||||
#: participant/templates/participant/group_edit.html:17
|
||||
#: participant/templates/participant/settings.html:18
|
||||
@ -170,8 +162,8 @@ msgstr "Speichern"
|
||||
#: assignment/templates/assignment/config.html:17
|
||||
#: assignment/templates/assignment/edit.html:24
|
||||
#: assignment/templates/assignment/poll_view.html:60
|
||||
#: config/templates/config/config.html:18
|
||||
#: config/templates/config/general.html:17
|
||||
#: config/templates/config/general.html:45
|
||||
#: participant/templates/participant/config.html:17
|
||||
#: participant/templates/participant/edit.html:28
|
||||
#: participant/templates/participant/group_edit.html:24
|
||||
#: participant/templates/participant/import.html:26
|
||||
@ -186,7 +178,7 @@ msgid "Item"
|
||||
msgstr "Eintrag"
|
||||
|
||||
#: agenda/templates/agenda/edit.html:8
|
||||
#: agenda/templates/agenda/item_row.html:24
|
||||
#: agenda/templates/agenda/item_row.html:23
|
||||
msgid "Edit item"
|
||||
msgstr "Eintrag bearbeiten"
|
||||
|
||||
@ -206,11 +198,7 @@ msgstr "Übernehmen"
|
||||
msgid "Item closed"
|
||||
msgstr "Eintrag erledigt"
|
||||
|
||||
#: agenda/templates/agenda/item_row.html:22
|
||||
msgid "Show projector preview"
|
||||
msgstr "Beamer-Vorschau anzeigen"
|
||||
|
||||
#: agenda/templates/agenda/item_row.html:25
|
||||
#: agenda/templates/agenda/item_row.html:24
|
||||
msgid "Delete item"
|
||||
msgstr "Eintrag löschen"
|
||||
|
||||
@ -467,8 +455,8 @@ msgid "Application was successfully modified."
|
||||
msgstr "Antrag wurde erfolgreich geändert."
|
||||
|
||||
#: application/views.py:198 application/views.py:597 assignment/views.py:129
|
||||
#: config/views.py:53 participant/views.py:164 participant/views.py:266
|
||||
#: participant/views.py:295 participant/views.py:453 utils/views.py:153
|
||||
#: participant/views.py:165 participant/views.py:267 participant/views.py:296
|
||||
#: participant/views.py:454 utils/views.py:153
|
||||
msgid "Please check the form for errors."
|
||||
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
|
||||
|
||||
@ -571,7 +559,7 @@ msgstr "FEHLER beim Zurückweisen der Version."
|
||||
msgid "Do you really want to reject version <b>%s</b>?"
|
||||
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
|
||||
|
||||
#: application/views.py:493 participant/views.py:311
|
||||
#: application/views.py:493 participant/views.py:312
|
||||
msgid ""
|
||||
"The import function is available for the superuser (without user profile) "
|
||||
"only."
|
||||
@ -579,7 +567,7 @@ msgstr ""
|
||||
"Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar."
|
||||
|
||||
#: application/views.py:524 application/views.py:528 application/views.py:534
|
||||
#: application/views.py:537 participant/views.py:380
|
||||
#: application/views.py:537 participant/views.py:381
|
||||
#, python-format
|
||||
msgid "Ignoring malformed line %d in import file."
|
||||
msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert."
|
||||
@ -605,11 +593,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:593 participant/views.py:449
|
||||
#: application/views.py:593 participant/views.py:450
|
||||
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:595 participant/views.py:451
|
||||
#: application/views.py:595 participant/views.py:452
|
||||
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 "
|
||||
@ -726,6 +714,7 @@ msgstr "Anträge importieren"
|
||||
msgid "Print all applications"
|
||||
msgstr "Alle Anträge drucken"
|
||||
|
||||
#: application/templates/application/config.html:5
|
||||
#: application/templates/application/config.html:8
|
||||
msgid "Application settings"
|
||||
msgstr "Antrags-Einstellungen"
|
||||
@ -942,7 +931,9 @@ msgid "Reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: application/templates/application/view.html:220
|
||||
#: application/templates/application/view.html:248
|
||||
#: application/templates/application/view.html:248 config/models.py:120
|
||||
#: config/templates/config/version.html:5
|
||||
#: config/templates/config/version.html:8
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
@ -972,7 +963,7 @@ msgstr "Zugelassene Version"
|
||||
|
||||
#: application/templates/application/view.html:266
|
||||
msgid "Reject Version"
|
||||
msgstr "Verion zurückweisen"
|
||||
msgstr "Version zurückweisen"
|
||||
|
||||
#: application/templates/application/view.html:270
|
||||
msgid "Version rejected"
|
||||
@ -1211,6 +1202,7 @@ msgstr "Neue Wahl"
|
||||
msgid "Print all elections"
|
||||
msgstr "Alle Wahlen drucken"
|
||||
|
||||
#: assignment/templates/assignment/config.html:5
|
||||
#: assignment/templates/assignment/config.html:8
|
||||
msgid "Election settings"
|
||||
msgstr "Wahl-Einstellungen"
|
||||
@ -1332,73 +1324,70 @@ msgid "No ballots available."
|
||||
msgstr "Keine Wahlgänge vorhanden."
|
||||
|
||||
#: config/forms.py:21
|
||||
msgid "System URL"
|
||||
msgstr "System URL"
|
||||
|
||||
#: config/forms.py:22
|
||||
msgid "Welcome text (for password PDF)"
|
||||
msgstr "Willkommenstext (für Passwort-PDF-Liste)"
|
||||
|
||||
#: config/forms.py:23
|
||||
msgid "Access for anonymous / guest users"
|
||||
msgstr "Zugriff für anonyme oder Gast-Nutzer"
|
||||
|
||||
#: config/forms.py:23
|
||||
msgid "Allow access for guest users"
|
||||
msgstr "Zugriff für Gast-Nutzer aktivieren"
|
||||
|
||||
#: config/forms.py:27
|
||||
msgid "Event name"
|
||||
msgstr "Veranstaltungsname"
|
||||
|
||||
#: config/forms.py:28
|
||||
#: config/forms.py:22
|
||||
msgid "Short description of event"
|
||||
msgstr "Kurzbeschreibung der Veranstaltung"
|
||||
|
||||
#: config/forms.py:29
|
||||
#: config/forms.py:23
|
||||
msgid "Event date"
|
||||
msgstr "Veranstaltungszeitraum"
|
||||
|
||||
#: config/forms.py:30
|
||||
#: config/forms.py:24
|
||||
msgid "Event location"
|
||||
msgstr "Veranstaltungsort"
|
||||
|
||||
#: config/forms.py:31
|
||||
#: config/forms.py:25
|
||||
msgid "Event organizer"
|
||||
msgstr "Veranstalter"
|
||||
|
||||
#: config/forms.py:26
|
||||
msgid "Allow access for anonymous guest users"
|
||||
msgstr "Erlaube Zugriff für anonyme Gast-Nutzer"
|
||||
|
||||
#: config/models.py:33
|
||||
msgid "Can manage configuration"
|
||||
msgstr "Darf die Konfiguration verwalten"
|
||||
|
||||
#: config/models.py:106
|
||||
#: config/models.py:103
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: config/views.py:49
|
||||
msgid "General settings successfully saved."
|
||||
msgstr "Allgemeine Einstellungen erfolgreich gespeichert."
|
||||
|
||||
#: config/views.py:84
|
||||
#: config/views.py:65
|
||||
msgid ""
|
||||
"Anonymous access enabled. Please modify the \"Anonymous\" group to fit your "
|
||||
"required permissions."
|
||||
msgstr ""
|
||||
"Anonymer Zugriff aktiviert. Bitte setzen Sie die Rechte der Gruppe "
|
||||
"Anonymer Zugriff aktiviert. Bitte setzen Sie die Rechte der Benutzerrolle "
|
||||
"\"Anonymous\" passend zum gewünschten Zugriffslevel."
|
||||
|
||||
#: config/views.py:87
|
||||
msgid "System settings successfully saved."
|
||||
msgstr "Systemeinstellungen erfolgreich gespeichert."
|
||||
#: config/views.py:68
|
||||
msgid "General settings successfully saved."
|
||||
msgstr "Allgemeine Einstellungen erfolgreich gespeichert."
|
||||
|
||||
#: config/templates/config/config.html:8
|
||||
msgid "System settings"
|
||||
msgstr "System-Einstellungen"
|
||||
#: config/views.py:85 config/templates/config/base_config.html:7
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#: config/templates/config/general.html:5
|
||||
#: config/templates/config/general.html:8
|
||||
msgid "General settings"
|
||||
msgstr "Allgemeine Einstellungen"
|
||||
|
||||
#: config/templates/config/general.html:11
|
||||
msgid "Event"
|
||||
msgstr "Veranstaltung"
|
||||
|
||||
#: config/templates/config/general.html:26 templates/base.html:28
|
||||
msgid "Welcome"
|
||||
msgstr "Willkommen"
|
||||
|
||||
#: config/templates/config/version.html:10
|
||||
msgid "OpenSlides Version"
|
||||
msgstr "OpenSlides Version"
|
||||
|
||||
#: participant/forms.py:27
|
||||
msgid "Keep applications, try to reassign submitter"
|
||||
msgstr "Anträge beibehalten, versuchen Antragssteller erneut zuzuweisen"
|
||||
@ -1423,6 +1412,15 @@ msgstr "Nachname"
|
||||
msgid "For existing applications"
|
||||
msgstr "Bei existierenden Anträgen"
|
||||
|
||||
#: participant/forms.py:89
|
||||
msgid "System URL"
|
||||
msgstr "System URL"
|
||||
|
||||
#: participant/forms.py:95
|
||||
#, fuzzy
|
||||
msgid "Welcome text"
|
||||
msgstr "Willkommen"
|
||||
|
||||
#: participant/models.py:22 participant/templates/participant/overview.html:23
|
||||
msgid "Male"
|
||||
msgstr "Männlich"
|
||||
@ -1465,10 +1463,6 @@ msgstr "Typ"
|
||||
msgid "Committee"
|
||||
msgstr "Amt"
|
||||
|
||||
#: participant/models.py:37 participant/templates/participant/overview.html:69
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: participant/models.py:38
|
||||
msgid "First Password"
|
||||
msgstr "Erst-Passwort"
|
||||
@ -1481,63 +1475,63 @@ msgstr "Darf die Teilnehmer/inen sehen"
|
||||
msgid "Can manage participant"
|
||||
msgstr "Darf die Teilnehmer/inen verwalten"
|
||||
|
||||
#: participant/views.py:156
|
||||
#: participant/views.py:157
|
||||
msgid "New participant was successfully created."
|
||||
msgstr "Neue/r Teilnehmer/in wurde erfolgreich angelegt."
|
||||
|
||||
#: participant/views.py:158
|
||||
#: participant/views.py:159
|
||||
msgid "Participant was successfully modified."
|
||||
msgstr "Teilnehmer/in wurde erfolgreich geändert."
|
||||
|
||||
#: participant/views.py:185
|
||||
#: participant/views.py:186
|
||||
#, python-format
|
||||
msgid "Participant <b>%s</b> was successfully deleted."
|
||||
msgstr "Teilnehmer/in <b>%s</b> wurde erfolgreich gelöscht."
|
||||
|
||||
#: participant/views.py:198
|
||||
#: participant/views.py:199
|
||||
#, python-format
|
||||
msgid "Participant %d does not exist."
|
||||
msgstr "Teilnehmer/in %d existiert nicht."
|
||||
|
||||
#: participant/views.py:244
|
||||
#: participant/views.py:245
|
||||
#, python-format
|
||||
msgid "Group name \"%s\" is reserved for internal use."
|
||||
msgstr "Der Gruppenname \"%s\" ist für interne Verwendung reserviert."
|
||||
|
||||
#: participant/views.py:258
|
||||
#: participant/views.py:259
|
||||
msgid "New group was successfully created."
|
||||
msgstr "Neue Gruppe wurde erfolgreich angelegt."
|
||||
|
||||
#: participant/views.py:260
|
||||
#: participant/views.py:261
|
||||
msgid "Group was successfully modified."
|
||||
msgstr "Gruppe wurde erfolgreich geändert."
|
||||
|
||||
#: participant/views.py:279
|
||||
#: participant/views.py:280
|
||||
#, python-format
|
||||
msgid "Group <b>%s</b> was successfully deleted."
|
||||
msgstr "Gruppe <b>%s</b> wurde erfolgreich gelöscht."
|
||||
|
||||
#: participant/views.py:293
|
||||
#: participant/views.py:294
|
||||
msgid "User settings successfully saved."
|
||||
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
|
||||
|
||||
#: participant/views.py:363
|
||||
#: participant/views.py:364
|
||||
msgid "Supporters removed after user import."
|
||||
msgstr "Unterstützer/innen nach Benutzerimport zurückgesetzt."
|
||||
|
||||
#: participant/views.py:416
|
||||
#: participant/views.py:417
|
||||
#, python-format
|
||||
msgid "Reassigned to \"%s\" after (re)importing users."
|
||||
msgstr "Nach Benutzerimport erneut \"%s\" zugeordnet."
|
||||
|
||||
#: participant/views.py:419 participant/views.py:433
|
||||
#: participant/views.py:420 participant/views.py:434
|
||||
#, 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:436
|
||||
#: participant/views.py:437
|
||||
#, 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!"
|
||||
@ -1546,26 +1540,26 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
"%d Anträge konnten nicht neu zugewiesen werden und benötigen ein Review!"
|
||||
|
||||
#: participant/views.py:439
|
||||
#: participant/views.py:440
|
||||
#, 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:442
|
||||
#: participant/views.py:443
|
||||
#, 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:446
|
||||
#: participant/views.py:447
|
||||
#, python-format
|
||||
msgid "%d new participants were successfully imported."
|
||||
msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert."
|
||||
|
||||
#: participant/views.py:455
|
||||
#: participant/views.py:456
|
||||
msgid ""
|
||||
"Attention: All existing participants will be removed if you import new "
|
||||
"participants."
|
||||
@ -1573,12 +1567,12 @@ msgstr ""
|
||||
"Achtung: Alle existierenden Teilnehmer/innen werden gelöscht, wenn Sie neue "
|
||||
"Teilnehmer/innen importieren."
|
||||
|
||||
#: participant/views.py:457
|
||||
#: participant/views.py:458
|
||||
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:458
|
||||
#: participant/views.py:459
|
||||
msgid ""
|
||||
"Attention: Applications which can't be mapped to new users will be set to "
|
||||
"'Needs Review'."
|
||||
@ -1586,17 +1580,17 @@ msgstr ""
|
||||
"Achtung: Anträge welche keinem Nutzer zugeordnet werden können bekommen "
|
||||
"automatisch den Status \"Benötigt Review\"."
|
||||
|
||||
#: participant/views.py:470
|
||||
#: participant/views.py:471
|
||||
#, python-format
|
||||
msgid "The Password for <b>%s</b> was successfully reset."
|
||||
msgstr "Das Passwort für <b>%s</b> wurde erfolgreich zurückgesetzt."
|
||||
|
||||
#: participant/views.py:472
|
||||
#: participant/views.py:473
|
||||
#, python-format
|
||||
msgid "Do you really want to reset the password for <b>%s</b>?"
|
||||
msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?"
|
||||
|
||||
#: participant/views.py:480
|
||||
#: participant/views.py:481
|
||||
#: participant/templates/participant/base_participant.html:12
|
||||
#: participant/templates/participant/overview.html:6
|
||||
#: participant/templates/participant/overview.html:16
|
||||
@ -1605,6 +1599,11 @@ msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?"
|
||||
msgid "Participants"
|
||||
msgstr "Teilnehmer/innen"
|
||||
|
||||
#: participant/views.py:502
|
||||
#, fuzzy
|
||||
msgid "Participants settings successfully saved."
|
||||
msgstr "Wahl-Einstellungen wurden erfolgreich gespeichert."
|
||||
|
||||
#: participant/templates/participant/base_participant.html:15
|
||||
msgid "All participants"
|
||||
msgstr "Alle Teilnehmer/innen"
|
||||
@ -1637,6 +1636,12 @@ msgstr "Teilnehmerliste drucken"
|
||||
msgid "Print first time passwords"
|
||||
msgstr "Erst-Passwörter drucken"
|
||||
|
||||
#: participant/templates/participant/config.html:5
|
||||
#: participant/templates/participant/config.html:8
|
||||
#, fuzzy
|
||||
msgid "Participant settings"
|
||||
msgstr "Teilnehmer/innen"
|
||||
|
||||
#: participant/templates/participant/edit.html:5
|
||||
msgid "Participant"
|
||||
msgstr "Teilnehmer/in"
|
||||
@ -1694,11 +1699,11 @@ msgstr ""
|
||||
|
||||
#: participant/templates/participant/login.html:8
|
||||
#: participant/templates/participant/login.html:16
|
||||
#: participant/templates/participant/login.html:45 templates/base.html:29
|
||||
#: participant/templates/participant/login.html:45 templates/base.html:30
|
||||
msgid "Login"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: participant/templates/participant/login.html:21 templates/base.html:55
|
||||
#: participant/templates/participant/login.html:21 templates/base.html:56
|
||||
msgid "Close this notification"
|
||||
msgstr "Meldung ausblenden"
|
||||
|
||||
@ -1870,22 +1875,18 @@ msgstr "Seite nicht gefunden."
|
||||
msgid "Server Error"
|
||||
msgstr "Serverfehler"
|
||||
|
||||
#: templates/base.html:19
|
||||
#: templates/base.html:20
|
||||
msgid "Home"
|
||||
msgstr "Startseite"
|
||||
|
||||
#: templates/base.html:25
|
||||
#: templates/base.html:26
|
||||
msgid "Logout"
|
||||
msgstr "Abmelden"
|
||||
|
||||
#: templates/base.html:26
|
||||
#: templates/base.html:27
|
||||
msgid "User Settings"
|
||||
msgstr "Benutzereinstellungen"
|
||||
|
||||
#: templates/base.html:27
|
||||
msgid "Welcome"
|
||||
msgstr "Willkommen"
|
||||
|
||||
#: utils/pdf.py:189
|
||||
msgid "%Y-%m-%d %H:%Mh"
|
||||
msgstr "%d.%m.%Y %H:%Mh"
|
||||
@ -1942,6 +1943,10 @@ msgstr "verfügbare Posten"
|
||||
msgid "Sorry, you have no rights to see this page."
|
||||
msgstr "Bedaure, Sie haben keine Berechtigung diese Seite zu sehen."
|
||||
|
||||
#: utils/views.py:207
|
||||
#: utils/views.py:219
|
||||
msgid "undefined-filename"
|
||||
msgstr "undefinierter-dateiname"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Access for guest users"
|
||||
#~ msgstr "Zugriff für Gast-Nutzer aktivieren"
|
||||
|
@ -10,7 +10,7 @@
|
||||
:license: GNU GPL, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, MultipleChoiceField, ModelMultipleChoiceField, ChoiceField, BooleanField
|
||||
from django.forms import Form, ModelForm, CharField, EmailField, FileField, FileInput, TextInput, Textarea, 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 _
|
||||
@ -80,3 +80,18 @@ class UsersettingsForm(UserEditForm, CssClassMixin):
|
||||
class UserImportForm(Form, CssClassMixin):
|
||||
csvfile = FileField(widget=FileInput(attrs={'size':'50'}), label=_("CSV File"))
|
||||
application_handling = ChoiceField(required=True, choices=USER_APPLICATION_IMPORT_OPTIONS, label=_("For existing applications"))
|
||||
|
||||
|
||||
class ConfigForm(Form, CssClassMixin):
|
||||
participant_pdf_system_url = CharField(
|
||||
widget=TextInput(),
|
||||
required=False,
|
||||
label=_("System URL"),
|
||||
help_text="Printed in PDF of first time passwords only.",
|
||||
)
|
||||
participant_pdf_welcometext = CharField(
|
||||
widget=Textarea(),
|
||||
required=False,
|
||||
label=_("Welcome text"),
|
||||
help_text="Printed in PDF of first time passwords only.",
|
||||
)
|
||||
|
@ -68,3 +68,15 @@ class Profile(models.Model):
|
||||
('can_see_participant', _("Can see participant", fixstr=True)),
|
||||
('can_manage_participant', _("Can manage participant", fixstr=True)),
|
||||
)
|
||||
|
||||
|
||||
from django.dispatch import receiver
|
||||
from openslides.config.signals import default_config_value
|
||||
|
||||
|
||||
@receiver(default_config_value, dispatch_uid="participant_default_config")
|
||||
def default_config(sender, key, **kwargs):
|
||||
return {
|
||||
'participant_pdf_system_url': 'http://example.com:8000',
|
||||
'participant_pdf_welcometext': 'Welcome to OpenSlides!',
|
||||
}.get(key)
|
||||
|
@ -2,19 +2,18 @@
|
||||
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% trans "Configuration" %}{% endblock %}
|
||||
{% block title %}{{ block.super }} - {% trans "Participant settings" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{%trans "System settings" %}</h1>
|
||||
<h1>{%trans "Participant settings" %}</h1>
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
|
||||
<p>
|
||||
<button class="button" type="submit">
|
||||
<span class="icon ok">{%trans 'Save' %}</span>
|
||||
</button>
|
||||
<a href='{% url config_config %}'>
|
||||
<button class="button" type="button" onclick="window.location='{% url config_config %}'">
|
||||
<a href='{% url config_application %}'>
|
||||
<button class="button" type="button" onclick="window.location='{% url config_application %}'">
|
||||
<span class="icon cancel">{%trans 'Cancel' %}</span>
|
||||
</button>
|
||||
</a>
|
@ -36,12 +36,13 @@ from participant.models import Profile
|
||||
from participant.api import gen_username, gen_password
|
||||
from participant.forms import (UserNewForm, UserEditForm, ProfileForm,
|
||||
UsersettingsForm, UserImportForm, GroupForm,
|
||||
AdminPasswordChangeForm)
|
||||
AdminPasswordChangeForm, ConfigForm)
|
||||
from application.models import Application
|
||||
from utils.utils import (template, permission_required, gen_confirm_form,
|
||||
ajax_request, decodedict, encodedict)
|
||||
from utils.pdf import print_userlist, print_passwords
|
||||
from utils.template import Tab
|
||||
from utils.views import FormView
|
||||
from config.models import config
|
||||
|
||||
from django.db.models import Avg, Max, Min, Count
|
||||
@ -482,3 +483,21 @@ def register_tab(request):
|
||||
permission=request.user.has_perm('participant.can_see_participant') or request.user.has_perm('participant.can_manage_participant'),
|
||||
selected=selected,
|
||||
)
|
||||
|
||||
|
||||
class Config(FormView):
|
||||
permission_required = 'config.can_manage_config'
|
||||
form_class = ConfigForm
|
||||
template_name = 'participant/config.html'
|
||||
|
||||
def get_initial(self):
|
||||
return {
|
||||
'participant_pdf_system_url': config['participant_pdf_system_url'],
|
||||
'participant_pdf_welcometext': config['participant_pdf_welcometext'],
|
||||
}
|
||||
|
||||
def form_valid(self, form):
|
||||
config['participant_pdf_system_url'] = form.cleaned_data['participant_pdf_system_url']
|
||||
config['participant_pdf_welcometext'] = form.cleaned_data['participant_pdf_welcometext']
|
||||
messages.success(self.request, _('Participants settings successfully saved.'))
|
||||
return super(Config, self).form_valid(form)
|
@ -456,6 +456,12 @@ form input:after {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Fieldsets */
|
||||
fieldset {
|
||||
width: 0px;
|
||||
padding: 0 60px 0 20px;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul {
|
||||
list-style:none outside none;
|
||||
|
@ -261,8 +261,8 @@ def print_passwords(request):
|
||||
story = [Spacer(0,0*cm)]
|
||||
|
||||
data= []
|
||||
system_url = config["system_url"]
|
||||
system_welcometext = config["system_welcometext"]
|
||||
participant_pdf_system_url = config["participant_pdf_system_url"]
|
||||
participant_pdf_welcometext = config["participant_pdf_welcometext"]
|
||||
for user in User.objects.all().order_by('last_name'):
|
||||
try:
|
||||
user.get_profile()
|
||||
@ -274,12 +274,12 @@ def print_passwords(request):
|
||||
cell.append(Paragraph(_("User: %s") % (user.username), stylesheet['Ballot_option']))
|
||||
cell.append(Paragraph(_("Password: %s") % (user.profile.firstpassword), stylesheet['Ballot_option']))
|
||||
cell.append(Spacer(0,0.5*cm))
|
||||
cell.append(Paragraph(_("URL: %s") % (system_url), stylesheet['Ballot_option']))
|
||||
cell.append(Paragraph(_("URL: %s") % (participant_pdf_system_url), stylesheet['Ballot_option']))
|
||||
cell.append(Spacer(0,0.5*cm))
|
||||
cell2 = []
|
||||
cell2.append(Spacer(0,0.8*cm))
|
||||
if system_welcometext is not None:
|
||||
cell2.append(Paragraph(system_welcometext.replace('\r\n','<br/>'), stylesheet['Ballot_subtitle']))
|
||||
if participant_pdf_welcometext is not None:
|
||||
cell2.append(Paragraph(participant_pdf_welcometext.replace('\r\n','<br/>'), stylesheet['Ballot_subtitle']))
|
||||
|
||||
data.append([cell,cell2])
|
||||
except Profile.DoesNotExist:
|
||||
|
Loading…
Reference in New Issue
Block a user