Automated merge with ssh://oshahn.de/openslides

This commit is contained in:
Oskar Hahn 2011-09-05 09:08:20 +02:00
commit 90991f62e7
31 changed files with 326 additions and 280 deletions

View File

@ -176,9 +176,9 @@ class Item(InheritanceCastModel):
class Meta:
permissions = (
('can_view_agenda', "Can see the agenda"),
('can_manage_agenda', "Can manage the agenda and its items"),
('can_see_beamer', "Can see the Beamer"),
('can_see_agenda', "Can see agenda"),
('can_manage_agenda', "Can manage agenda"),
('can_see_projector', "Can see projector"),
)

View File

@ -8,9 +8,9 @@
<ul>
<li class="{% if request.path == url_itemoverview %}selected{% endif %}"><a href="{% url item_overview %}">{%trans "All items" %}</a></li>
{% if perms.agenda.can_manage_agenda %}
<li class="{% active request '/item/new/' %}"><a href="{% url item_new 'ItemText' %}">{%trans "New item" %}</a></li>
<li class="{% active request '/agenda/new/' %}"><a href="{% url item_new 'ItemText' %}">{%trans "New item" %}</a></li>
{% endif %}
{% if perms.agenda.can_see_beamer %}
{% if perms.agenda.can_see_projector %}
<li><a href="{% url item_beamer %}"><img src="/static/images/icons/view-presentation.png"> {%trans 'Beamer view' %}</a></li>
{% endif %}
</ul>

View File

@ -10,13 +10,13 @@
<p>{%trans "Choose item type:" %}</p>
<p>
<a href="{% url item_new 'ItemText' %}"
{% ifequal request.path '/item/new/ItemText/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
{% ifequal request.path '/agenda/new/ItemText/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
>{%trans "Item of Text" %}</a> |
<a href="{% url item_new 'ItemApplication' %}"
{% ifequal request.path '/item/new/ItemApplication/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
{% ifequal request.path '/agenda/new/ItemApplication/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
>{%trans "Item of Application" %}</a> |
<a href="{% url item_new 'ItemAssignment' %}"
{% ifequal request.path '/item/new/ItemAssignment/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
{% ifequal request.path '/agenda/new/ItemAssignment/' %}style='font-size:15px; font-weight:bold;'{% endifequal %}
>{%trans "Item of Election" %}</a>
</p>
{% endif %}

View File

@ -37,7 +37,7 @@
{% block content %}
<h1>{% trans "Agenda" %}</h1>
{% if items %}
<form action="/item/" method="post">{% csrf_token %}
<form action="/agenda/" method="post">{% csrf_token %}
{% if perms.agenda.can_manage_agenda %}
<div id="changed-order-message" style="display:none" class="notification warning">
<em>{% trans "Do you want to save the changed order of agenda items?" %}<br>
@ -45,9 +45,9 @@
<input type="button" onclick="window.location.href='{% url item_overview %}';" value="{%trans 'No' %}">
</em>
</div>
<a class="beamer_edit" href="{% url beamer_bigger %}"><img src="/static/images/icons/zoom-in.png"></a> <a class="beamer_edit" href="{% url beamer_smaller %}"><img src="/static/images/icons/zoom-out.png"></a>
<a class="beamer_edit" href="{% url beamer_up %}"><img src="/static/images/icons/go-up.png"></a> <a class="beamer_edit" href="{% url beamer_down %}"><img src="/static/images/icons/go-down.png"></a> <br>
{% endif %}
<a class="beamer_edit" href="{% url beamer_bigger %}">+</a> <a class="beamer_edit" href="{% url beamer_smaller %}">-</a> <br>
<a class="beamer_edit" href="{% url beamer_up %}">+</a> <a class="beamer_edit" href="{% url beamer_down %}">-</a> <br>
<table id="menu-overview" class="agendatable">
<tr>
<th style="width: 1px;">{% trans "Beamer" %}</th>
@ -60,7 +60,7 @@
<th class="tabledrag-hide">{% trans "Weight" %}</th>
{% endif %}
</tr>
<tr id="item_row_0"{% if overview %} class="activeline"{% else %}{% if perms.agenda.can_manage_agenda %} class="inactiveline"{% endif %}{% endif %}>
<tr id="item_row_0" class="topline {% if overview %} activeline {% else %}{% if perms.agenda.can_manage_agenda %} inactiveline {% endif %}{% endif %}">
<td class="select">
{% if perms.agenda.can_manage_agenda %}
<a href="{% url item_activate 0 %}" class="activate_link">
@ -68,7 +68,7 @@
</a>
{% endif %}
</td>
<td><i>{% trans "Agenda" %} ({{ items|length }} {% trans "items" %}<span id="hiddencount"></span>)</i></td>
<td><b>{% trans "Agenda" %} ({{ items|length }} {% trans "items" %}<span id="hiddencount"></span>)</b></td>
{% if perms.agenda.can_manage_agenda %}
<td></td>
{% endif %}

View File

@ -119,7 +119,7 @@ class ViewTest(TestCase):
response = c.get('/beamer/')
self.assertEqual(response.status_code, 200)
response = c.get('/item/%d/' % self.item1.id)
response = c.get('/agenda/%d/' % self.item1.id)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['item'], self.item1.cast())
self.assertEqual(response.templates[0].name, 'beamer/ItemText.html')
@ -127,26 +127,26 @@ class ViewTest(TestCase):
def testActivate(self):
c = self.adminClient
response = c.get('/item/%d/activate/' % self.item1.id)
response = c.get('/agenda/%d/activate/' % self.item1.id)
self.assertEqual(response.status_code, 302)
self.assertTrue(self.item1.active)
self.assertFalse(self.item2.active)
self.assertFalse(is_summary())
response = c.get('/item/%d/activate/summary/' % self.item2.id)
response = c.get('/agenda/%d/activate/summary/' % self.item2.id)
self.assertEqual(response.status_code, 302)
self.assertTrue(self.item2.active)
self.assertFalse(self.item1.active)
self.assertTrue(is_summary())
response = c.get('/item/%d/activate/' % 0)
response = c.get('/agenda/%d/activate/' % 0)
self.assertEqual(response.status_code, 302)
self.assertFalse(self.item2.active)
self.assertFalse(self.item1.active)
with self.assertRaises(Item.DoesNotExist):
get_active_item()
response = c.get('/item/%d/activate/' % 10000)
response = c.get('/agenda/%d/activate/' % 10000)
self.assertEqual(response.status_code, 302)
self.assertFalse(self.item2.active)
self.assertFalse(self.item1.active)
@ -154,40 +154,40 @@ class ViewTest(TestCase):
def testClose(self):
c = self.adminClient
response = c.get('/item/%d/close/' % self.item1.id)
response = c.get('/agenda/%d/close/' % self.item1.id)
self.refreshItems()
self.assertEqual(response.status_code, 302)
self.assertTrue(Item.objects.get(pk=self.item1.id).closed)
response = c.get('/item/%d/open/' % self.item1.id)
response = c.get('/agenda/%d/open/' % self.item1.id)
self.refreshItems()
self.assertEqual(response.status_code, 302)
self.assertFalse(self.item1.closed)
response = c.get('/item/%d/open/' % 1000)
response = c.get('/agenda/%d/open/' % 1000)
self.refreshItems()
self.assertEqual(response.status_code, 302)
def testEdit(self):
c = self.adminClient
response = c.get('/item/%d/edit/' % self.item1.id)
response = c.get('/agenda/%d/edit/' % self.item1.id)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['form'].instance, self.item1.cast())
response = c.get('/item/%d/edit/' % 1000)
response = c.get('/agenda/%d/edit/' % 1000)
self.assertEqual(response.status_code, 302)
data = {'title': 'newitem1', 'text': 'item1-text', 'weight':'0'}
response = c.post('/item/%d/edit/' % self.item1.id, data)
response = c.post('/agenda/%d/edit/' % self.item1.id, data)
self.assertEqual(response.status_code, 302)
self.refreshItems()
self.assertEqual(self.item1.cast().title, 'newitem1')
self.assertEqual(self.item1.cast().text, 'item1-text')
data = {'title': '', 'text': 'item1-text', 'weight': '0'}
response = c.post('/item/%d/edit/' % self.item1.id, data)
response = c.post('/agenda/%d/edit/' % self.item1.id, data)
self.assertEqual(response.status_code, 200)
self.refreshItems()
self.assertEqual(self.item1.cast().title, 'newitem1')

View File

@ -18,43 +18,43 @@ urlpatterns = patterns('agenda.views',
url(r'^$', 'overview'),
url(r'^item/$', 'overview',
url(r'^agenda/$', 'overview',
name='item_overview'),
url(r'^item/(?P<item_id>\d+)/$', 'view',
url(r'^agenda/(?P<item_id>\d+)/$', 'view',
name='item_view'),
url(r'^item/(?P<item_id>\d+)/activate/$', 'set_active',
url(r'^agenda/(?P<item_id>\d+)/activate/$', 'set_active',
name='item_activate'),
url(r'^item/(?P<item_id>\d+)/activate/summary/$', 'set_active',
url(r'^agenda/(?P<item_id>\d+)/activate/summary/$', 'set_active',
{'summary': True},\
name='item_activate_summary'),
url(r'^item/(?P<item_id>\d+)/close/$', 'set_closed', {'closed': True},
url(r'^agenda/(?P<item_id>\d+)/close/$', 'set_closed', {'closed': True},
name='item_close'),
url(r'^item/(?P<item_id>\d+)/open/$', 'set_closed', {'closed': False},
url(r'^agenda/(?P<item_id>\d+)/open/$', 'set_closed', {'closed': False},
name='item_open'),
url(r'^item/(?P<item_id>\d+)/edit/$', 'edit',
url(r'^agenda/(?P<item_id>\d+)/edit/$', 'edit',
name='item_edit'),
url(r'^item/new/$', 'edit',
url(r'^agenda/new/$', 'edit',
name='item_new_default'),
url(r'^item/new/(?P<form>ItemText|ItemApplication|ItemPoll|'
url(r'^agenda/new/(?P<form>ItemText|ItemApplication|ItemPoll|'
r'ItemAssignment)/$', 'edit',
name='item_new'),
url(r'^item/new/(?P<form>ItemText|ItemApplication|ItemPoll|'
url(r'^agenda/new/(?P<form>ItemText|ItemApplication|ItemPoll|'
r'ItemAssignment)/(?P<default>\d+)/$', 'edit',
name='item_new_default'),
url(r'^item/(?P<item_id>\d+)/del/$', 'delete',
url(r'^agenda/(?P<item_id>\d+)/del/$', 'delete',
name='item_delete'),
url(r'^item/print/$', 'print_agenda',
url(r'^agenda/print/$', 'print_agenda',
name='print_agenda'),
url(r'^beamer/bigger$', 'beamer_edit', {'direction': 'bigger'}, name='beamer_bigger'),

View File

@ -47,7 +47,7 @@ def view(request, item_id):
context_instance=RequestContext(request))
@permission_required('agenda.can_see_beamer')
@permission_required('agenda.can_see_projector')
def beamer(request):
"""
Shows a active Slide.
@ -126,11 +126,10 @@ def assignment_votes(item):
else:
tmplist.append("-")
votes.append(tmplist)
return votes
@permission_required('agenda.can_view_agenda')
@permission_required('agenda.can_see_agenda')
@template('agenda/overview.html')
def overview(request):
"""

View File

@ -396,10 +396,10 @@ class Application(models.Model):
class Meta:
permissions = (
('can_view_application', _("Can see applications")),
('can_insert_application', _("Can insert new applications")),
('can_support_application', _("Can support applications")),
('can_manage_application', _("Can manage applications")),
('can_see_application', "Can see application"),
('can_create_application', "Can create application"),
('can_support_application', "Can support application"),
('can_manage_application', "Can manage application"),
)

View File

@ -6,7 +6,7 @@
<h4>{%trans "Applications" %}</h4>
<ul>
<li class="{% if request.path == url_applicationoverview %}selected{% endif %}"><a href="{% url application_overview %}">{%trans "All applications" %}</a></li>
{% if perms.application.can_insert_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>
{% endif %}
<li><a href="{% url print_applications %}"><img src="/static/images/icons/application-pdf.png"> {%trans 'Print all applications' %}</a></li>

View File

@ -29,7 +29,7 @@
<th><a href="?sort=number{% if 'number' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Number" %}</a></th>
<th><a href="?sort=aversion__title{% if 'aversion__title' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Application title" %}</a></th>
{% if min_supporters > 0 %}
<th><a href="?sort=supporter{% if 'supporter' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Number of supporters" %}*</a></th>
<th><a href="?sort=supporter{% if 'supporter' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Number of supporters" %}</a></th>
{% endif %}
<th><a href="?sort=status{% if 'status' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Status" %}</a></th>
<th><a href="?sort=submitter{% if 'submitter' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Submitter" %}</a></th>

View File

@ -211,7 +211,7 @@
{% else %}
<i>[no number]</i>
{% endif %}</h1>
{% trans "Revision" %} {{ application.aid }}
{% trans "Version" %} {{ application.aid }}
<h2>{{ application.title }}</h2>
@ -227,11 +227,12 @@
{% if application.versions|length > 1 %}
<h2>{% trans "Revisions" %}:</h2>
<h2>{% trans "Version History" %}:</h2>
<table class="table valigntop">
<table class="table valigntop" style="width: auto;">
<tr>
<th>#</th>
<th></th>
<th>{% trans "Version" %}</th>
<th>{% trans "Time" %}</th>
<th>{% trans "Title" %}</th>
<th>{% trans "Text" %}</th>
@ -240,7 +241,7 @@
</tr>
{% for revision in application.versions %}
<tr class="{% cycle 'odd' '' %}">
<td>{{ revision.aid }}
<td style="white-space:nowrap;">
{% if application.status != "pub" %}
{% if revision == application.permitted %}
<img title="{%trans 'Version accepted' %}" src="/static/images/icons/task-accepted.png">
@ -257,6 +258,7 @@
{% endif %}
{% endif %}
</td>
<td>{{ revision.aid }}</td>
<td><i>{{ revision.time }}</i></td>
<td>
{% ifchanged %}

View File

@ -27,7 +27,7 @@ from openslides.utils.pdf import print_application, print_application_poll
from openslides.system.api import config_get
@permission_required('application.can_view_application')
@permission_required('application.can_see_application')
@template('application/overview.html')
def overview(request):
"""
@ -61,7 +61,7 @@ def overview(request):
}
@permission_required('application.can_view_application')
@permission_required('application.can_see_application')
@template('application/view.html')
def view(request, application_id):
"""
@ -91,8 +91,8 @@ def edit(request, application_id=None):
is_manager = False
if not is_manager \
and not request.user.has_perm('application.can_insert_application'):
messages.error(request, _("You have not the necessary rights to edit or insert applications."))
and not request.user.has_perm('application.can_create_application'):
messages.error(request, _("You have not the necessary rights to create or edit applications."))
return redirect(reverse('application_overview'))
if application_id is not None:
application = Application.objects.get(id=application_id)
@ -163,7 +163,7 @@ def edit(request, application_id=None):
'application': application,
}
@permission_required('application.can_manage_application')
@template('application/view.html')
def delete(request, application_id):
"""
@ -362,7 +362,6 @@ def view_poll(request, poll_id):
def permit_version(request, aversion_id):
aversion = AVersion.objects.get(pk=aversion_id)
application = aversion.application
if request.method == 'POST':
application.accept_version(aversion)
messages.success(request, _("Version <b>%s</b> accepted.") % (aversion.aid))
@ -375,9 +374,12 @@ def permit_version(request, aversion_id):
def reject_version(request, aversion_id):
aversion = AVersion.objects.get(pk=aversion_id)
application = aversion.application
if application.reject_version(aversion):
messages.success(request, _("Version rejected") )
if request.method == 'POST':
if application.reject_version(aversion):
messages.success(request, _("Version <b>%s</b> rejected.") % (aversion.aid))
else:
messages.error(request, _("ERROR by rejecting the version.") )
else:
messages.error(request, _("ERROR by rejecting the Version") )
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]))

View File

@ -130,9 +130,8 @@ class Assignment(models.Model):
class Meta:
permissions = (
('can_view_assignment', "Can see the assignments"),
('can_nominate_other', "Can nominate another person"
" for a election"),
('can_nominate_self', "Can nominate hisself for a election"),
('can_manage_assignment', "Can manage assignments"),
('can_see_assignment', "Can see assignment"),
('can_nominate_other', "Can nominate another person"),
('can_nominate_self', "Can nominate themselves"),
('can_manage_assignment', "Can manage assignment"),
)

View File

@ -91,7 +91,7 @@
{% for field in form %}
<label>{{ field.label }}:</label>
<nobr>{{ field }}
{% if perms.participant.can_view_participants and perms.participant.can_manage_participants %}
{% if perms.participant.can_see_participant and perms.participant.can_manage_participant %}
<a href="{% url user_new %}"><img src="/static/images/icons/list-add-user.png" title="{% trans 'Add new participant' %}"></a>
{% endif %}
</nobr>

View File

@ -25,7 +25,7 @@ from utils.pdf import print_assignment_poll
from participant.models import Profile
@permission_required('assignment.can_view_assignment')
@permission_required('assignment.can_see_assignment')
@template('assignment/overview.html')
def get_overview(request):
query = Assignment.objects
@ -46,7 +46,7 @@ def get_overview(request):
}
@permission_required('assignment.can_view_assignment')
@permission_required('assignment.can_see_assignment')
@template('assignment/view.html')
def view(request, assignment_id=None):
form = None

View File

@ -19,7 +19,7 @@ TEMPLATE_DEBUG = DEBUG
AUTH_PROFILE_MODULE = 'participant.Profile'
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/item/'
LOGIN_REDIRECT_URL = '/agenda/'
ADMINS = (
# ('Your Name', 'your_email@domain.com'),

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-09-03 19:22+0200\n"
"POT-Creation-Date: 2011-09-04 17:46+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"
@ -32,7 +32,7 @@ msgstr "Englisch"
#: application/templates/application/view.html:73
#: assignment/templates/assignment/poll_view.html:15
#: assignment/templates/assignment/view.html:159 poll/forms.py:45
#: utils/pdf.py:328 utils/pdf.py:368 utils/utils.py:35
#: utils/pdf.py:382 utils/pdf.py:424 utils/utils.py:35
msgid "Yes"
msgstr "Ja"
@ -47,11 +47,11 @@ msgstr "Ja, mit allen Kindelementen."
#: application/templates/application/view.html:74
#: assignment/templates/assignment/poll_view.html:16
#: assignment/templates/assignment/view.html:160 poll/forms.py:46
#: utils/pdf.py:329 utils/pdf.py:368 utils/utils.py:35
#: utils/pdf.py:383 utils/pdf.py:424 utils/utils.py:35
msgid "No"
msgstr "Nein"
#: agenda/api.py:67 participant/views.py:129 participant/views.py:207
#: agenda/api.py:67 participant/views.py:131 participant/views.py:209
#: utils/utils.py:40
#, python-format
msgid "Do you really want to delete <b>%s</b>?"
@ -62,7 +62,7 @@ msgid "Parent item"
msgstr "Elternelement"
#: agenda/models.py:35 application/forms.py:23
#: application/templates/application/view.html:235
#: application/templates/application/view.html:237
msgid "Title"
msgstr "Titel"
@ -70,7 +70,7 @@ msgstr "Titel"
msgid "Closed"
msgstr "Abgeschlossen"
#: agenda/models.py:37 agenda/templates/agenda/overview.html:58
#: agenda/models.py:37 agenda/templates/agenda/overview.html:60
msgid "Weight"
msgstr "Gewichtung"
@ -84,80 +84,79 @@ msgid "No Form for itemtype %s"
msgstr "Kein Formular für Eintrag %s"
#: agenda/models.py:189 application/forms.py:24
#: application/templates/application/view.html:236 poll/models.py:108
#: application/templates/application/view.html:238 poll/models.py:108
msgid "Text"
msgstr "Text"
#: agenda/models.py:199 agenda/templates/agenda/overview.html:105
#: agenda/models.py:199 agenda/templates/agenda/overview.html:109
#: agenda/templates/beamer/ItemApplication.html:5
#: application/templates/application/edit.html:2
#: application/templates/application/poll_view.html:8
#: application/templates/application/poll_view.html:16
#: application/templates/application/view.html:2
#: application/templates/application/view.html:208 poll/models.py:23
#: poll/models.py:110 system/templates/system/general.html:13 utils/pdf.py:263
#: utils/pdf.py:265 utils/pdf.py:297 utils/pdf.py:305 utils/pdf.py:315
#: utils/pdf.py:323
#: poll/models.py:110 system/templates/system/general.html:13 utils/pdf.py:314
#: utils/pdf.py:316 utils/pdf.py:349 utils/pdf.py:357 utils/pdf.py:368
#: utils/pdf.py:377
msgid "Application"
msgstr "Antrag"
#: agenda/models.py:206 agenda/templates/agenda/overview.html:118
#: agenda/models.py:206 agenda/templates/agenda/overview.html:122
#: agenda/templates/beamer/ItemAssignment.html:4
#: assignment/templates/assignment/edit.html:2 poll/models.py:24
#: utils/pdf.py:346 utils/pdf.py:354
#: utils/pdf.py:401 utils/pdf.py:410
msgid "Election"
msgstr "Wahl"
#: agenda/models.py:213 agenda/templates/beamer/ItemApplication.html:20
#: assignment/templates/assignment/poll_view.html:2 poll/models.py:111
#: utils/pdf.py:315
#: utils/pdf.py:368
msgid "Poll"
msgstr "Abstimmung"
#: agenda/views.py:74 agenda/templates/agenda/base_agenda.html:7
#: agenda/templates/agenda/overview.html:3
#: agenda/templates/agenda/overview.html:38
#: agenda/templates/agenda/overview.html:67
#: agenda/templates/agenda/overview.html:71
#: agenda/templates/beamer/overview.html:3
#: agenda/templates/beamer/overview.html:10 templates/403.html:8
#: templates/404.html:8 templates/500.html:8 templates/base.html:48
#: utils/pdf.py:201 utils/pdf.py:206
#: agenda/templates/beamer/overview.html:10 templates/base.html:37
#: utils/pdf.py:207 utils/pdf.py:212
msgid "Agenda"
msgstr "Tagesordnung"
#: agenda/views.py:158 agenda/views.py:174 agenda/views.py:197
#: agenda/views.py:174 agenda/views.py:192 agenda/views.py:215
#, python-format
msgid "Item ID %d does not exist."
msgstr "Eintrag %d existiert nicht."
#: agenda/views.py:211
#: agenda/views.py:229
msgid "New item was successfully created."
msgstr "Neuer Eintrag erfolgreich angelegt."
#: agenda/views.py:213
#: agenda/views.py:231
msgid "Agenda item created"
msgstr "Tagesordnungseintrag angelegt"
#: agenda/views.py:215
#: agenda/views.py:233
msgid "Item was successfully modified."
msgstr "Eintrag wurde erfolgreich geändert."
#: agenda/views.py:217
#: agenda/views.py:235
msgid "Agenda item modified"
msgstr "Tagesordnungseintrag geändert"
#: agenda/views.py:223 participant/views.py:108 participant/views.py:192
#: participant/views.py:221 participant/views.py:269 system/views.py:31
#: system/views.py:57
#: agenda/views.py:241 participant/views.py:108 participant/views.py:194
#: participant/views.py:223 participant/views.py:271 system/views.py:32
#: system/views.py:59
msgid "Please check the form for errors."
msgstr "Bitte kontrollieren Sie das Formular nach Fehlern."
#: agenda/views.py:257
#: agenda/views.py:275
#, 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:263
#: agenda/views.py:281
#, python-format
msgid "Item <b>%s</b> was successfully deleted."
msgstr "Eintrag <b>%s</b> wurde erfolgreich gelöscht."
@ -176,12 +175,12 @@ msgid "Beamer view"
msgstr "Beameransicht"
#: agenda/templates/agenda/edit.html:2
#: agenda/templates/agenda/overview.html:52
#: agenda/templates/agenda/overview.html:54
msgid "Item"
msgstr "Eintrag"
#: agenda/templates/agenda/edit.html:6
#: agenda/templates/agenda/overview.html:130
#: agenda/templates/agenda/overview.html:134
msgid "Edit item"
msgstr "Eintrag bearbeiten"
@ -243,51 +242,51 @@ msgstr "Abbrechen"
msgid "Do you want to save the changed order of agenda items?"
msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?"
#: agenda/templates/agenda/overview.html:51
#: agenda/templates/agenda/overview.html:53
msgid "Beamer"
msgstr "Beamer"
#: agenda/templates/agenda/overview.html:54
#: agenda/templates/agenda/overview.html:56
#: participant/templates/participant/overview.html:23
#: participant/templates/participant/overview.html:45 utils/pdf.py:230
#: participant/templates/participant/overview.html:46 utils/pdf.py:237
msgid "Type"
msgstr "Typ"
#: agenda/templates/agenda/overview.html:56
#: agenda/templates/agenda/overview.html:58
#: assignment/templates/assignment/overview.html:24
#: participant/templates/participant/overview.html:51
#: participant/templates/participant/overview.html:50
msgid "Actions"
msgstr "Aktionen"
#: agenda/templates/agenda/overview.html:67
#: agenda/templates/agenda/overview.html:71
msgid "items"
msgstr "Einträge"
#: agenda/templates/agenda/overview.html:73
#: agenda/templates/agenda/overview.html:77
msgid "Print agenda"
msgstr "Tagesordnung drucken"
#: agenda/templates/agenda/overview.html:110
#: agenda/templates/agenda/overview.html:114
msgid "Poll of Application"
msgstr "Antragsabstimmung"
#: agenda/templates/agenda/overview.html:113
#: agenda/templates/agenda/overview.html:117
msgid "Poll of Election"
msgstr "Wahlen"
#: agenda/templates/agenda/overview.html:127
#: agenda/templates/agenda/overview.html:131
msgid "Show beamer preview"
msgstr "Beamer-Vorschau anzeigen"
#: agenda/templates/agenda/overview.html:131
#: agenda/templates/agenda/overview.html:135
msgid "Delete item"
msgstr "Eintrag löschen"
#: agenda/templates/agenda/overview.html:138
#: agenda/templates/agenda/overview.html:142
msgid "Select item overview"
msgstr "Wähle Eintragsübersicht"
#: agenda/templates/agenda/overview.html:158
#: agenda/templates/agenda/overview.html:162
msgid "No items available."
msgstr "Keine Einträge vorhanden."
@ -298,8 +297,8 @@ msgstr "Keine Einträge vorhanden."
#: application/templates/application/view.html:34
#: assignment/templates/assignment/overview.html:10
#: assignment/templates/assignment/overview.html:22
#: assignment/templates/assignment/view.html:8 utils/pdf.py:280
#: utils/pdf.py:282
#: assignment/templates/assignment/view.html:8 utils/pdf.py:331
#: utils/pdf.py:333
msgid "Status"
msgstr "Status"
@ -312,7 +311,7 @@ msgstr "Abstimmungsergebnis"
#: application/templates/application/view.html:75
#: assignment/templates/assignment/poll_view.html:17
#: assignment/templates/assignment/view.html:161 poll/forms.py:35
#: poll/forms.py:47 utils/pdf.py:330 utils/pdf.py:368
#: poll/forms.py:47 utils/pdf.py:384 utils/pdf.py:424
msgid "Abstention"
msgstr "Enthaltung"
@ -321,8 +320,8 @@ msgid "No poll results available."
msgstr "Keine Abstimmungen vorhanden."
#: agenda/templates/beamer/ItemApplication.html:44 application/forms.py:25
#: application/templates/application/view.html:219
#: application/templates/application/view.html:238 utils/pdf.py:268
#: application/templates/application/view.html:220
#: application/templates/application/view.html:240 utils/pdf.py:319
msgid "Reason"
msgstr "Begründung"
@ -351,7 +350,7 @@ msgstr "Wahlergebnisse"
#: agenda/templates/beamer/ItemAssignment.html:42
#: assignment/templates/assignment/poll_view.html:6
#: assignment/templates/assignment/view.html:119 utils/pdf.py:357
#: assignment/templates/assignment/view.html:119 utils/pdf.py:413
msgid "ballot"
msgstr "Wahlgang"
@ -405,7 +404,7 @@ msgid "Rejected (not permitted)"
msgstr "Verworfen (nicht zulässig)"
#: application/models.py:44 application/templates/application/overview.html:35
#: application/templates/application/view.html:9 utils/pdf.py:270
#: application/templates/application/view.html:9 utils/pdf.py:321
msgid "Submitter"
msgstr "Antragsteller"
@ -413,85 +412,69 @@ msgstr "Antragsteller"
msgid "Supporters"
msgstr "Unterstützer"
#: application/models.py:106
#: application/models.py:105
msgid "Searching for supporters."
msgstr "Auf Unterstützersuche."
#: application/models.py:108
#: application/models.py:107
msgid "Not yet permitted."
msgstr "Noch nicht zugelassen."
#: application/models.py:110
#: application/models.py:109
msgid "Not yet permitted changes."
msgstr "Noch nicht zugelassene Änderungen."
#: application/models.py:154
#: application/models.py:155
#, python-format
msgid "Version %s created"
msgstr "Version %s erstellt"
#: application/models.py:163
#: application/models.py:164
msgid "Supporters removed"
msgstr "Unterstützer gelöscht"
#: application/models.py:172
#: application/models.py:173
#, python-format
msgid "Status reseted to: %s"
msgstr "Status zurückgesetzt auf: %s"
#: application/models.py:185
#: application/models.py:186
#, python-format
msgid "Supporter: +%s"
msgstr "Unterstützer: +%s"
#: application/models.py:195
#: application/models.py:196
#, python-format
msgid "Supporter: -%s"
msgstr "Unterstützer: -%s"
#: application/models.py:211
#: application/models.py:212
#, python-format
msgid "Number set: %s"
msgstr "Nummer gesetzt: %s"
#: application/models.py:224
#: application/models.py:225
#, python-format
msgid "Version %s permitted"
msgstr "Version %s zugelassen"
#: application/models.py:238
#: application/models.py:239
#, python-format
msgid "Version %s not permitted"
msgstr "Version %s nicht zugelassen"
#: application/models.py:264
#: application/models.py:265
msgid "Status modified"
msgstr "Status geändert"
#: application/models.py:375
#: application/models.py:381
msgid "Poll created"
msgstr "Abstimmung erstellt"
#: application/models.py:393
msgid "Can see applications"
msgstr "Anträge anzeigen"
#: application/models.py:394
msgid "Can insert new applications"
msgstr "Anträge anlegen"
#: application/models.py:395
msgid "Can support applications"
msgstr "Anträge unterstützen"
#: application/models.py:396
msgid "Can manage applications"
msgstr "Anträge verwalten"
#: application/views.py:95
msgid "You have not the necessary rights to edit or insert applications."
msgid "You have not the necessary rights to create or edit applications."
msgstr ""
"Sie haben nicht die nötigen Rechte um Anträge einzureichen oder zu "
"Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu "
"bearbeiten."
#: application/views.py:100
@ -581,27 +564,33 @@ msgstr "die %s. Abstimmung"
msgid "Votes are successfully saved."
msgstr "Stimmen erfolgreich gespeichert."
#: application/views.py:366
msgid "Version accepted"
msgstr "Version akzeptiert"
#: application/views.py:367
#, python-format
msgid "Version <b>%s</b> accepted."
msgstr "Version <b>%s</b> akzeptiert."
#: application/views.py:368
msgid "ERROR by accepting the Version"
msgstr "FEHLER beim Akzeptieren der Version"
#: application/views.py:377
msgid "Version rejected"
msgstr "Version zurückgewiesen"
#: application/views.py:369
#, python-format
msgid "Do you really want to permit version <b>%s</b>?"
msgstr "Soll Version <b>%s</b> wirklich zugelassen werden?"
#: application/views.py:379
msgid "ERROR by rejecting the Version"
msgid "Version <b>%s</b> rejected."
msgstr "Version <b>%s</b> zurückgewiesen."
#: application/views.py:381
#, fuzzy
msgid "ERROR by rejecting the version."
msgstr "FEHLER beim Zurückweisen der Version"
#: application/views.py:383
msgid "Do you really want to reject version <b>%s</b>?"
msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
#: application/templates/application/base_application.html:6
#: application/templates/application/overview.html:2
#: application/templates/application/overview.html:6 templates/403.html:12
#: templates/404.html:12 templates/500.html:12 templates/base.html:52
#: utils/pdf.py:287 utils/pdf.py:294
#: application/templates/application/overview.html:6 templates/base.html:41
#: utils/pdf.py:339 utils/pdf.py:346
msgid "Applications"
msgstr "Anträge"
@ -675,7 +664,7 @@ msgstr "Abstimmung drucken"
#: application/templates/application/poll_view.html:16
#: application/templates/application/poll_view.html:19
#: application/templates/application/view.html:65 utils/pdf.py:326
#: application/templates/application/view.html:65 utils/pdf.py:380
msgid "Vote"
msgstr "Abstimmung"
@ -812,21 +801,42 @@ msgstr "Nur zur Administration:"
msgid "Reset"
msgstr "Zurücksetzen"
#: application/templates/application/view.html:229
msgid "Revisions"
msgstr "Überarbeitungen"
#: application/templates/application/view.html:214
#: application/templates/application/view.html:235
msgid "Version"
msgstr "Version"
#: application/templates/application/view.html:234
#: application/templates/application/view.html:230
msgid "Version History"
msgstr "Versionshistorie"
#: application/templates/application/view.html:236
msgid "Time"
msgstr "Zeit"
#: application/templates/application/view.html:259
#: application/templates/application/view.html:266
#: application/templates/application/view.html:273
#: application/templates/application/view.html:247
msgid "Version accepted"
msgstr "Version akzeptiert"
#: application/templates/application/view.html:250
msgid "Accept Version"
msgstr "Zugelassene Version"
#: application/templates/application/view.html:253
msgid "Reject Version"
msgstr "Verion zurückweisen"
#: application/templates/application/view.html:257
msgid "Version rejected"
msgstr "Version zurückgewiesen"
#: application/templates/application/view.html:267
#: application/templates/application/view.html:274
#: application/templates/application/view.html:281
msgid "unchanged"
msgstr "unverändert"
#: application/templates/application/view.html:282
#: application/templates/application/view.html:290
msgid "Log"
msgstr "Log"
@ -951,8 +961,7 @@ msgstr "gewählt"
#: assignment/templates/assignment/base_assignment.html:11
#: assignment/templates/assignment/overview.html:2
#: assignment/templates/assignment/overview.html:5
#: assignment/templates/assignment/overview.html:20 templates/403.html:16
#: templates/404.html:16 templates/500.html:16 templates/base.html:56
#: assignment/templates/assignment/overview.html:20 templates/base.html:45
msgid "Elections"
msgstr "Wahlen"
@ -981,7 +990,7 @@ msgstr "Wahl löschen"
msgid "No assignments available."
msgstr "Keine Wahlen vorhanden."
#: assignment/templates/assignment/poll_view.html:7 utils/pdf.py:357
#: assignment/templates/assignment/poll_view.html:7 utils/pdf.py:413
msgid "candidate"
msgid_plural "candidates"
msgstr[0] "Kandidat"
@ -1036,15 +1045,15 @@ msgstr "Abstimmung löschen"
msgid "New ballot"
msgstr "Neuer Wahlgang"
#: participant/forms.py:23
#: participant/forms.py:23 participant/forms.py:34
msgid "First name"
msgstr "Vorname"
#: participant/forms.py:24
#: participant/forms.py:24 participant/forms.py:35
msgid "Last name"
msgstr "Nachname"
#: participant/forms.py:64
#: participant/forms.py:72
msgid "CSV File"
msgstr "CSV-Datei"
@ -1053,12 +1062,10 @@ msgid "Not specified"
msgstr "Nicht angegeben"
#: participant/models.py:22 participant/templates/participant/overview.html:11
#: participant/templates/participant/overview.html:60
msgid "Male"
msgstr "Männlich"
#: participant/models.py:23 participant/templates/participant/overview.html:12
#: participant/templates/participant/overview.html:62
msgid "Female"
msgstr "Weiblich"
@ -1079,12 +1086,11 @@ msgid "Staff"
msgstr "Mitarbeiter"
#: participant/models.py:33 participant/templates/participant/overview.html:10
#: participant/templates/participant/overview.html:43
msgid "Gender"
msgstr "Geschlecht"
#: participant/models.py:34 participant/templates/participant/overview.html:16
#: participant/templates/participant/overview.html:44 utils/pdf.py:230
#: participant/templates/participant/overview.html:43 utils/pdf.py:237
msgid "Group"
msgstr "Gruppe"
@ -1093,7 +1099,7 @@ msgid "Typ"
msgstr "Typ"
#: participant/models.py:36 participant/templates/participant/overview.html:30
#: participant/templates/participant/overview.html:46 utils/pdf.py:230
#: participant/templates/participant/overview.html:44 utils/pdf.py:237
msgid "Committee"
msgstr "Amt"
@ -1109,54 +1115,54 @@ msgstr "Neuer Teilnehmer wurde erfolgreich angelegt."
msgid "Participant was successfully modified."
msgstr "Teilnehmer wurde erfolgreich geändert."
#: participant/views.py:127
#: participant/views.py:129
#, python-format
msgid "Participant <b>%s</b> was successfully deleted."
msgstr "Teilnehmer <b>%s</b> wurde erfolgreich gelöscht."
#: participant/views.py:139
#: participant/views.py:141
#, python-format
msgid "Participant <b>%s</b> is now a normal user."
msgstr "Teilnehmer <b>%s</b> ist jetzt ein normaler Nutzer."
#: participant/views.py:143
#: participant/views.py:145
#, python-format
msgid "Participant <b>%s</b> is now administrator."
msgstr "Teilnehmer <b>%s</b> ist jetzt ein Administrator."
#: participant/views.py:153
#: participant/views.py:155
#, python-format
msgid "Participant <b>%s</b> was successfully deactivated."
msgstr "Teilnehmer <b>%s</b> wurde erfolgreich deaktiviert."
#: participant/views.py:157
#: participant/views.py:159
#, python-format
msgid "Participant <b>%s</b> was successfully activated."
msgstr "Teilnehmer <b>%s</b> wurde erfolgreich aktiviert."
#: participant/views.py:184
#: participant/views.py:186
msgid "New group was successfully created."
msgstr "Neue Gruppe wurde erfolgreich angelegt."
#: participant/views.py:186
#: participant/views.py:188
msgid "Group was successfully modified."
msgstr "Gruppe wurde erfolgreich geändert."
#: participant/views.py:205
#: participant/views.py:207
#, python-format
msgid "Group <b>%s</b> was successfully deleted."
msgstr "Gruppe <b>%s</b> wurde erfolgreich gelöscht."
#: participant/views.py:219
#: participant/views.py:221
msgid "User settings successfully saved."
msgstr "Nutzereinstellungen wurden erfolgreich gespeichert."
#: participant/views.py:267
#: participant/views.py:269
#, python-format
msgid "%d new participants were successfully imported."
msgstr "%d neue Teilnehmer wurden erfolgreich importiert."
#: participant/views.py:271
#: participant/views.py:273
msgid ""
"Attention: All existing participants will be removed if you import new "
"participants."
@ -1164,20 +1170,19 @@ msgstr ""
"Achtung: Alle existierenden Teilnehmer werden gelöscht, wenn Sie neue "
"Teilnehmer importieren."
#: participant/views.py:290
#: participant/views.py:292
#, 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:292
#: participant/views.py:294
#, 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/templates/participant/base_participant.html:6
#: participant/templates/participant/overview.html:2
#: participant/templates/participant/overview.html:5 templates/403.html:20
#: templates/404.html:20 templates/500.html:20 templates/base.html:60
#: participant/templates/participant/overview.html:5 templates/base.html:49
msgid "Participants"
msgstr "Teilnehmer"
@ -1204,20 +1209,23 @@ msgid "Print participant list"
msgstr "Teilnehmerliste drucken"
#: participant/templates/participant/base_participant.html:16
#: participant/templates/participant/import.html:12
msgid "Import"
msgstr "Import"
msgid "Import participant"
msgstr "Teilnehmer importieren"
#: participant/templates/participant/base_participant.html:17
msgid "Generate first passwords"
msgstr "Erste Passwörter generieren"
#: participant/templates/participant/base_participant.html:18
msgid "Print password list"
msgstr "Passwortliste drucken"
#: participant/templates/participant/edit.html:2 poll/models.py:109
msgid "Participant"
msgstr "Teilnehmer"
#: participant/templates/participant/edit.html:6
#: participant/templates/participant/overview.html:74
#: participant/templates/participant/overview.html:66
msgid "Edit participant"
msgstr "Teilnehmer bearbeiten"
@ -1255,7 +1263,7 @@ msgid "Delete group"
msgstr "Benutzergruppe löschen"
#: participant/templates/participant/group_overview.html:20
#: participant/templates/participant/overview.html:91
#: participant/templates/participant/overview.html:83
msgid "No participants available."
msgstr "Keine Teilnehmer vorhanden."
@ -1275,13 +1283,17 @@ msgstr ""
"(Erfordert kommaseparierte Werte: <code>Nachname, Vorname, E-Mail, "
"Geschlecht, 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:13
#: participant/templates/participant/login.html:43 templates/base.html:26
msgid "Login"
msgstr "Anmelden"
#: participant/templates/participant/login.html:18 templates/base.html:77
#: participant/templates/participant/login.html:18 templates/base.html:66
msgid "Close this notification"
msgstr "Meldung ausblenden"
@ -1298,15 +1310,15 @@ msgstr "Mitarbeiter"
msgid "guest"
msgstr "Gast"
#: participant/templates/participant/overview.html:41 utils/pdf.py:230
#: participant/templates/participant/overview.html:41 utils/pdf.py:237
msgid "First Name"
msgstr "Vorname"
#: participant/templates/participant/overview.html:42 utils/pdf.py:230
#: participant/templates/participant/overview.html:42 utils/pdf.py:237
msgid "Last Name"
msgstr "Nachname"
#: participant/templates/participant/overview.html:47
#: participant/templates/participant/overview.html:47 utils/pdf.py:287
msgid "Username"
msgstr "Nutzername"
@ -1318,23 +1330,23 @@ msgstr "E-Mail"
msgid "Last Login"
msgstr "Letzer Login"
#: participant/templates/participant/overview.html:75
#: participant/templates/participant/overview.html:67
msgid "Delete participant"
msgstr "Teilnehmer löschen"
#: participant/templates/participant/overview.html:77
#: participant/templates/participant/overview.html:69
msgid "Participiant is activated. Click to deactivate!"
msgstr "Teilnehmer ist aktiviert. Zum Deaktivieren klicken!"
#: participant/templates/participant/overview.html:79
#: participant/templates/participant/overview.html:71
msgid "Participiant is deactivated. Click to activate!"
msgstr "Teilnehmer ist deaktiviert, Zum Aktivieren klicken!"
#: participant/templates/participant/overview.html:82
#: participant/templates/participant/overview.html:74
msgid "Administrator. Click to get normal user!"
msgstr "Administrator. Klicken, um normaler Nutzer zu werden!"
#: participant/templates/participant/overview.html:84
#: participant/templates/participant/overview.html:76
msgid "Normal user. Click to get administrator!"
msgstr "Normaler Nutzer. Klicken, um Administrator zu werden!"
@ -1366,50 +1378,53 @@ msgstr "Mehrheit"
msgid "No options"
msgstr "Keine Wahlmöglichkeiten"
#: system/forms.py:21
msgid "User registration"
msgstr "Benutzerregistrierung"
#: system/forms.py:22
msgid "System URL"
msgstr "System URL"
#: system/forms.py:27
#: system/forms.py:23
msgid "Welcome text (for password PDF)"
msgstr "Willkommenstext (für Passwort-PDF-Liste)"
#: system/forms.py:30
msgid "Event name"
msgstr "Veranstaltungsname"
#: system/forms.py:28
#: system/forms.py:31
msgid "Short description of event"
msgstr "Kurzbeschreibung der Veranstaltung"
#: system/forms.py:29
#: system/forms.py:32
msgid "Event date"
msgstr "Veranstaltungszeitraum"
#: system/forms.py:30
#: system/forms.py:33
msgid "Event location"
msgstr "Veranstaltungsort"
#: system/forms.py:31
#: system/forms.py:34
msgid "Event organizer"
msgstr "Veranstalter"
#: system/forms.py:37
#: system/forms.py:40
msgid "Number of (minimum) required supporters for a application"
msgstr "Mindestanzahl erforderlicher Unterstützer für einen Antrag"
#: system/forms.py:38
#: system/forms.py:41
msgid "Application preamble"
msgstr "Antragseinleitung"
#: system/views.py:29
#: system/views.py:30
msgid "System settings successfully saved."
msgstr "Systemeinstellungen erfolgreich gespeichert."
#: system/views.py:55
#: system/views.py:57
msgid "General settings successfully saved."
msgstr "Allgemeine Einstellungen erfolgreich gespeichert."
#: system/templates/system/base_system.html:7
#: system/templates/system/general.html:2
#: system/templates/system/system.html:2 templates/403.html:24
#: templates/404.html:24 templates/500.html:24 templates/base.html:64
#: system/templates/system/system.html:2 templates/base.html:53
msgid "Configuration"
msgstr "Konfiguration"
@ -1418,19 +1433,20 @@ msgstr "Konfiguration"
msgid "General"
msgstr "Allgemein"
#: system/templates/system/general.html:8
msgid "Event"
msgstr "Veranstaltung"
#: system/templates/system/base_system.html:10
#: system/templates/system/system.html:5
msgid "System"
msgstr "System"
#: templates/404.html:33
#: system/templates/system/general.html:8
msgid "Event"
msgstr "Veranstaltung"
#: templates/404.html:10
msgid "Page not found."
msgstr "Seite nicht gefunden."
#: templates/500.html:33
#: templates/500.html:9
msgid "Server Error"
msgstr "Serverfehler"
@ -1450,42 +1466,64 @@ msgstr "Einstellungen"
msgid "Welcome"
msgstr "Willkommen"
#: templates/base.html:31
msgid "Language"
msgstr "Sprache"
#: utils/pdf.py:165 utils/pdf.py:271
#: utils/pdf.py:170 utils/pdf.py:322
msgid "%Y-%m-%d %H:%Mh"
msgstr "%d.%m.%Y %H:%Mh"
#: utils/pdf.py:178
#: utils/pdf.py:183
msgid "Printed"
msgstr "Gedruckt am"
#: utils/pdf.py:188 utils/pdf.py:196
#: utils/pdf.py:193 utils/pdf.py:201
msgid "Page"
msgstr "Seite"
#: utils/pdf.py:223
#: utils/pdf.py:230
msgid "Participant-list"
msgstr "Teilnehmerliste"
#: utils/pdf.py:228
#: utils/pdf.py:235
msgid "List of Participants"
msgstr "Teilnehmerliste"
#: utils/pdf.py:271
msgid "passwords"
msgstr "Passwörter"
#: utils/pdf.py:284
msgid "Your Account for OpenSlides"
msgstr "Ihr Zugang für OpenSlides"
#: utils/pdf.py:285
msgid "for"
msgstr "für"
#: utils/pdf.py:288
msgid "Password"
msgstr "Passwort"
#: utils/pdf.py:290
msgid "URL"
msgstr "URL"
#: utils/pdf.py:322
msgid "Created"
msgstr "Erstellt am"
#: utils/pdf.py:275
#: utils/pdf.py:326
msgid "Supporter"
msgstr "Unterstützer"
#: utils/pdf.py:357
#: utils/pdf.py:413
msgid "available posts"
msgstr "verfügbare Posten"
#: utils/utils.py:72
msgid "Sorry, you have no rights to see this page."
msgstr "Bedaure, Sie haben keine Berechtigung diese Seite zu sehen."
#~ msgid "Revision"
#~ msgstr "Überarbeitungen"
#~ msgid "Revisions"
#~ msgstr "Überarbeitungen"

View File

@ -50,8 +50,8 @@ class Profile(models.Model):
class Meta:
permissions = (
('can_view_participants', "Can see the list of participants"),
('can_manage_participants', "Can manage the participant list"),
('can_see_participant', "Can see participant"),
('can_manage_participant', "Can manage participant"),
)
def set_first_user_passwords():

View File

@ -5,17 +5,17 @@
{% url user_overview as url_useroverview %}
<h4 class="sectiontitle">{%trans "Participants" %}</h4>
<ul>
{% if perms.participant.can_view_participants %}
{% if perms.participant.can_see_participant %}
<li class="{% if request.path == url_useroverview %}selected{% endif %}"><a href="{% url user_overview %}">{%trans "All participants" %}</a></li>
{% endif %}
{% if perms.participant.can_manage_participants %}
{% if perms.participant.can_manage_participant %}
<li class="{% active request '/user/new' %}"><a href="{% url user_new %}">{%trans "New participant" %}</a></li>
<li><a href="{% url user_group_overview %}">{%trans "All user groups" %}</a></li>
<li><a href="{% url user_group_new %}">{%trans "New user group" %}</a></li>
<li><a href="{% url user_print %}"><img src="/static/images/icons/application-pdf.png"> {%trans 'Print participant list' %}</a></li>
<li><a href="{% url user_import %}"> {%trans 'Import' %}</a></li>
<li><a href="{% url user_import %}"> {%trans 'Import participant' %}</a></li>
<li><a href="{% url user_gen_passwords %}">{% trans 'Generate first passwords' %}</a></li>
<li><a href="{% url print_passwords %}"><img src="/static/images/icons/application-pdf.png">{% trans 'Print password list' %}</a></li>
<li><a href="{% url print_passwords %}"><img src="/static/images/icons/application-pdf.png"> {% trans 'Print password list' %}</a></li>
{% endif %}
</ul>
{% endblock %}

View File

@ -42,7 +42,7 @@
<th><a href="?sort=last_name{% if 'last_name' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Last Name" %}</a></th>
<th><a href="?sort=group{% if 'group' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Group" %}</a></th>
<th><a href="?sort=committee{% if 'committee' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Committee" %}</a></th>
{% if perms.participant.can_manage_participants %}
{% if perms.participant.can_manage_participant %}
<th><a href="?sort=type{% if 'type' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Type" %}</a></th>
<th><a href="?sort=username{% if 'username' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Username" %}</a></th>
<th><a href="?sort=email{% if 'email' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Email" %}</a></th>
@ -56,7 +56,7 @@
<td>{{ user.last_name }}</td>
<td>{{ user.profile.group }}</td>
<td>{{ user.profile.committee }}</td>
{% if perms.participant.can_manage_participants %}
{% if perms.participant.can_manage_participant %}
<td>{{ user.profile.type }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>

View File

@ -30,7 +30,7 @@ from utils.pdf import print_userlist, print_passwords
from django.db.models import Avg, Max, Min, Count
@permission_required('participant.can_view_participants')
@permission_required('participant.can_see_participant')
@template('participant/overview.html')
def get_overview(request):
query = User.objects
@ -69,7 +69,7 @@ def get_overview(request):
'committees': committees,
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('participant/edit.html')
def edit(request, user_id=None):
"""
@ -120,7 +120,7 @@ def edit(request, user_id=None):
'edituser': user,
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('confirm.html')
def user_delete(request, user_id):
user = User.objects.get(pk=user_id)
@ -131,7 +131,7 @@ def user_delete(request, user_id):
gen_confirm_form(request, _('Do you really want to delete <b>%s</b>?') % user, reverse('user_delete', args=[user_id]))
return redirect(reverse('user_overview'))
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('confirm.html')
def user_set_superuser(request, user_id):
user = User.objects.get(pk=user_id)
@ -145,7 +145,7 @@ def user_set_superuser(request, user_id):
messages.success(request, _('Participant <b>%s</b> is now administrator.') % user)
return redirect(reverse('user_overview'))
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('confirm.html')
def user_set_active(request, user_id):
user = User.objects.get(pk=user_id)
@ -159,7 +159,7 @@ def user_set_active(request, user_id):
messages.success(request, _('Participant <b>%s</b> was successfully activated.') % user)
return redirect(reverse('user_overview'))
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('participant/group_overview.html')
def get_group_overview(request):
groups = Group.objects.all()
@ -167,7 +167,7 @@ def get_group_overview(request):
'groups': groups,
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('participant/group_edit.html')
def group_edit(request, group_id=None):
if group_id is not None:
@ -199,7 +199,7 @@ def group_edit(request, group_id=None):
'group': group,
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
def group_delete(request, group_id):
group = Group.objects.get(pk=group_id)
if request.method == 'POST':
@ -231,7 +231,7 @@ def user_settings(request):
'edituser': request.user,
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
@template('participant/import.html')
def user_import(request):
try:
@ -277,13 +277,13 @@ def user_import(request):
}
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
def gen_passwords(request):
set_first_user_passwords()
return redirect(reverse('user_overview'))
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
def reset_password(request, user_id):
user = User.objects.get(pk=user_id)
if request.method == 'POST':

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 B

View File

@ -42,7 +42,7 @@ function hideClosedSlides(hide) {
hideLine($(this));
});
hidden = $('#menu-overview tr:hidden').size();
$('#hiddencount').text(' ' + hidden + ' davon verborgen.');
$('#hiddencount').text(', davon ' + hidden + ' verborgen.');
} else {
$('#menu-overview tr').show();
$('#hidelink').attr('title','hide');

View File

@ -253,6 +253,10 @@ tr.total td {
border-top: 1px solid #333333;
background-color: #e3e3e3;
}
tr.topline td {
border-bottom: 1px solid #333333;
background-color: #e3e3e3;
}
/* Links and Images */

View File

@ -29,5 +29,5 @@ class Config(models.Model):
class Meta:
permissions = (
('can_manage_system', "Can manage the system"),
('can_manage_system', "Can manage system configuration"),
)

View File

@ -31,20 +31,20 @@
<div id="mainmenu">
{% block mainmenu %}
<ul>
{% if perms.agenda.can_view_agenda or perms.agenda.can_manage_agenda %}
<li class="{% active request '/item' %}
{% if perms.agenda.can_see_agenda or perms.agenda.can_manage_agenda %}
<li class="{% active request '/agenda' %}
{% if request.path == '/'%}selected{% endif %}">
<a href="{% url item_overview %}" title="">{%trans "Agenda" %}</a></li>
{% endif %}
{% if perms.application.can_view_application or perms.application.can_insert_application or perms.application.can_support_application or perms.application.can_manage_application %}
{% if perms.application.can_see_application or perms.application.can_create_application or perms.application.can_support_application or perms.application.can_manage_application %}
<li class="{% active request '/application' %}">
<a href="{% url application_overview %}" title="">{%trans "Applications" %}</a></li>
{% endif %}
{% if perms.assignment.can_view_assignment or perms.assignment.can_nominate_other or perms.assignment.can_nominate_self or perms.assignment.can_manage_assignment %}
{% if perms.assignment.can_see_assignment or perms.assignment.can_nominate_other or perms.assignment.can_nominate_self or perms.assignment.can_manage_assignment %}
<li class="{% active request '/assignment' %}">
<a href="{% url assignment_overview %}" title="">{%trans "Elections" %}</a></li>
{% endif %}
{% if perms.participant.can_view_participants or perms.participant.can_manage_participants %}
{% if perms.participant.can_see_participant or perms.participant.can_manage_participant %}
<li class="{% active request '/participant' %}">
<a href="{% url user_overview %}" title="">{%trans "Participants" %}</a></li>
{% endif %}

View File

@ -201,7 +201,7 @@ def laterPages(canvas, doc):
canvas.drawString(10*cm, 1*cm, _("Page")+" %s" % doc.page)
canvas.restoreState()
@permission_required('agenda.can_view_agenda')
@permission_required('agenda.can_see_agenda')
def print_agenda(request):
response = HttpResponse(mimetype='application/pdf')
filename = u'filename=%s.pdf;' % _("Agenda")
@ -210,21 +210,23 @@ def print_agenda(request):
story = [Spacer(1,3*cm)]
doc.title = _("Agenda")
# print item list
items = children_list(Item.objects.filter(parent=None).order_by('weight'))
for item in items:
if item.hidden is False:
# print all items
# print all items"
if item.parents:
story.append(Paragraph(item.title, stylesheet['Subitem']))
space = ""
for p in item.parents:
space += "&nbsp;&nbsp;&nbsp;"
story.append(Paragraph(space+item.title, stylesheet['Subitem']))
else:
story.append(Paragraph(item.title, stylesheet['Item']))
doc.build(story, onFirstPage=firstPage, onLaterPages=laterPages)
return response
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
def print_userlist(request):
response = HttpResponse(mimetype='application/pdf')
filename = u'filename=%s.pdf;' % _("Participant-list")
@ -265,7 +267,7 @@ def print_userlist(request):
doc.build(story, onFirstPage=firstPage, onLaterPages=laterPages)
return response
@permission_required('participant.can_manage_participants')
@permission_required('participant.can_manage_participant')
def print_passwords(request):
response = HttpResponse(mimetype='application/pdf')
filename = u'filename=%s.pdf;' % _("passwords")
@ -281,7 +283,7 @@ def print_passwords(request):
user.get_profile()
cell = []
cell.append(Spacer(0,0.8*cm))
cell.append(Paragraph(_("Your Password for OpenSlides"), stylesheet['Ballot_title']))
cell.append(Paragraph(_("Your Account for OpenSlides"), stylesheet['Ballot_title']))
cell.append(Paragraph("%s %s %s" % (_("for"), user.first_name, user.last_name), stylesheet['Ballot_subtitle']))
cell.append(Spacer(0,0.5*cm))
cell.append(Paragraph("%s: %s" % (_("Username"), user.username), stylesheet['Ballot_option']))
@ -308,7 +310,7 @@ def print_passwords(request):
doc.build(story)
return response
@permission_required('application.can_view_application')
@permission_required('application.can_see_application')
def get_application(application, story):
if application.number is None:
story.append(Paragraph(_("Application")+" #[-]", stylesheet['Heading1']))
@ -333,7 +335,7 @@ def get_application(application, story):
story.append(Paragraph(_("Status")+": %s" % (application.get_status_display()), stylesheet['Italic']))
return story
@permission_required('application.can_view_application')
@permission_required('application.can_see_application')
def print_application(request, application_id=None):
response = HttpResponse(mimetype='application/pdf')
filename = u'filename=%s.pdf;' % _("Applications")