This commit is contained in:
Emanuel Schuetze 2012-07-19 14:55:58 +02:00
commit 189d0bf5e1
10 changed files with 52 additions and 261 deletions

View File

@ -1,60 +0,0 @@
{% extends "beamer.html" %}
{% load tags %}
{% block title %}{{ block.super }} - {{ item.title }}{% endblock %}
{% block content %}
<div id="sidebar">
<div class="box">
<p><b>{%trans "Status" %}:</b><br>
{% if item.application.status != "pub" %}
{%trans item.application.get_status_display %}
<br>
{% else %}
{% for note in item.application.notes %}
{{ note }}
{% endfor %}
{% endif %}
</p>
<p><b>{% trans "Submitter" %}:</b><br>
{{ item.application.submitter.profile }}</p>
{% with item.application.poll_set.all as polls %}
{% if polls|length > 0 and polls.0.has_vote %}
<p><b>{% trans "Poll result" %}:</b></p>
{% for p in polls %}
{% if p.has_vote %}
{% if polls|length > 1 %}
{{forloop.counter}}. {% trans "Vote" %}:<br>
{% endif %}
{% for option in p.options %}
<img src="/static/images/icons/voting-yes.png" title="{% trans 'Yes' %}"> {{ option.yes }} <br>
<img src="/static/images/icons/voting-no.png" title="{% trans 'No' %}"> {{ option.no }} <br>
<img src="/static/images/icons/voting-abstention.png" title="{% trans 'Abstention' %}"> {{ option.undesided }}<br>
<img src="/static/images/icons/voting-invalid.png" title="{% trans 'Invalid' %}"> {{ p.votesinvalidf }}<br>
<div style="border-top: 1px solid; padding-top: 5px; margin: 5px 0; width: 10em;">
<img src="/static/images/icons/voting-total.png" title="{% trans 'Votes cast' %}"> {{ p.votescastf }}
</div>
{% endfor %}
<br>
{% else %}
{% if poll|length == 1 %}
<i>{% trans "No poll results available." %}</i>
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endwith %}
</div>
</div>
<h1>{% trans "Application No." %} {{ item.application.number }}</h1>
<b>{{ item.title }}</b>
<p>
<div class="text">{{ item.application.public_version.text|linebreaks }}</div>
{% if item.application.public_version.reason %}
<br>
<div class="reason"><p><b>{% trans "Reason" %}:</b></p>
{{ item.application.public_version.reason|linebreaks }}</div>
{% endif %}
</p>
{% endblock %}

View File

@ -1,105 +0,0 @@
{% extends "beamer.html" %}
{% block title %}{{ block.super }} - #{{ item.title }}{% endblock %}
{% block header %}
<link type="text/css" rel="stylesheet" media="all" href="/static/styles/assignment.css" />
<script type="text/javascript" src="/static/javascript/assignment.js"></script>
{% endblock %}
{% block content %}
<h1>{% trans "Election" %}: {{ item.assignment }}</h1>
{% if item.assignment.status != "fin" %}
<div id="sidebar">
<div class="box">
<p><b>{% trans "Status" %}:</b><br>
{% trans item.assignment.get_status_display %}</p>
{% if item.assignment.status == "sea" or item.assignment.status == "vot" %}
<p><b>{% trans "Number of available posts" %}:</b><br>
{{ item.assignment.posts }}</p>
{% endif %}
</div>
</div>
{% endif %}
{% if not item.assignment.profile.exists %}
<p>
<div class="text">{{ item.assignment.description|linebreaks }}</div>
</p>
{% endif %}
{% if item.assignment.profile.exists and item.assignment.status != "fin" %}
<h3>{% trans "Candidates" %}</h3>
<ol>
{% for profile in item.assignment.profile.all|dictsort:"user.first_name" %}
<li>{{ profile }} </li>
{% empty %}
<li style="list-style: none outside none;">
<i>{% trans "No candidates available." %}</i>
</li>
{% endfor %}
</ol>
<p><br></p>
{% endif %}
{% with polls|first as firstpoll %}
{% if polls.count > 0 and firstpoll.published %}
<h3>{% trans "Election results" %}</h3>
<table>
<tr>
<th>{% trans "Candidates" %}</th>
{% for poll in item.assignment.poll_set.all %}
{% if poll.published %}
<th><nobr>{{forloop.counter}}. {% trans "ballot" %}</nobr></th>
{% endif %}
{% endfor %}
</tr>
{% for vote in votes %}
<tr class="{% cycle 'odd' '' %}">
{% with vote|first as candidate %}
<td class="candidate {% if candidate.1 %}elected{% endif %}">
{% if candidate.1 %}
<a class="elected"><img src="/static/images/icons/voting-yes.png" title="{% trans 'Candidate is elected' %}"></a>
{% endif %}
{{ candidate.0 }}
</td>
{% for v in vote|last %}
<td style="white-space:nowrap;" {% if candidate.1 %}class="elected"{% endif %}>{% if v %}
{% if v|length == 3 %}
<img src="/static/images/icons/voting-yes.png" title="{% trans 'Yes' %}"> {% if v.0 %}{{ v.0 }}{% else %}&empty;{% endif %}<br>
<img src="/static/images/icons/voting-no.png" title="{% trans 'No' %}"> {% if v.1 %}{{ v.1 }}{% else %}&empty;{% endif %}<br>
<img src="/static/images/icons/voting-abstention.png" title="{% trans 'Abstention' %}"> {% if v.2 %}{{ v.2 }}{% else %}&empty;{% endif %}<br>
{% else %}
{% if v != "-" %}<img src="/static/images/icons/voting-yes.png" title="{% trans 'Yes' %}">{% endif %}
{{ v }}
{% endif %}
{% endif %}
</td>
{% endfor %}
{% endwith %}
</tr>
{% empty %}
<tr>
<td {% if item.assignment.profile.exist %}colspan="2"{% endif %}><i>{% trans "No ballots available." %}</i></td>
</tr>
{% endfor %}
<tr>
<td>{%trans 'Invalid votes' %}</td>
{% for p in polls %}
{% if p.published %}
<td style="white-space:nowrap;"><img src="/static/images/icons/voting-invalid.png" title="{% trans 'Invalid' %}"> {{ p.votesinvalidf }}</td>
{% endif %}
{% endfor %}
</tr>
<tr class="total">
<td><b>{%trans 'Votes cast' %}</b></td>
{% for p in polls %}
{% if p.published %}
<td style="white-space:nowrap;"><img src="/static/images/icons/voting-total.png" title="{% trans 'Votes cast' %}"> <b>{{ p.votescastf }}</b></td>
{% endif %}
{% endfor %}
</tr>
</table>
{% endif %}
{% endwith %}
<br>
{% endblock %}

View File

@ -1,19 +0,0 @@
{% extends "beamer.html" %}
{% block title %}{{ block.super }} - {{ item.title }}{% endblock %}
{% block content %}
{%trans "Poll about" %}:
<h1>{{ item.title }}</h1>
<table>
{% for option in item.poll.get_options %}
<tr>
<td>{{ option }}</td>
<td>{{ option.voteyes }}</td>
{% if item.poll.optiondecision %}
<td>{{ option.voteno }}</td>
<td>{{ option.voteundesided }}</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% endblock %}

View File

@ -1,10 +0,0 @@
{% extends "beamer.html" %}
{% block title %}{{ block.super }} - {{ item.title }}{% endblock %}
{% block content %}
{% if item.text %}
<h1>{{ item.title }}</h1>
{{ item.text|safe|linebreaks }}
{% else %}
<div class="item_fullscreen">{{ item.title }}</div>
{% endif %}
{% endblock %}

View File

@ -1,17 +0,0 @@
{% extends "beamer.html" %}
{% block title %}{{ block.super }} -
{% if title %} {{ title }} {% else %} {%trans "Agenda" %} {% endif %}
{% endblock %}
{% block content %}
{% if title %}
<h1>{{ title }}</h1>
{% else %}
<h1>{%trans "Agenda" %}</h1>
{% endif %}
<ul class="itemlist">
{% for item in items %}
<li{% if item.closed %} class="closed"{% endif %}>{{ item }}</li>
{% endfor %}
</ul>
{% endblock %}

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenSlides 1.x\n" "Project-Id-Version: OpenSlides 1.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-19 08:19+0200\n" "POT-Creation-Date: 2012-07-19 11:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n" "Last-Translator: Emanuel Schuetze <emanuel@intevation.de>\n"
"Language-Team: German\n" "Language-Team: German\n"
@ -156,28 +156,22 @@ msgstr "Neuer Eintrag"
msgid "Agenda as PDF" msgid "Agenda as PDF"
msgstr "Tagesordnung als PDF" msgstr "Tagesordnung als PDF"
#: agenda/templates/agenda/base_agenda.html:19 #: agenda/templates/agenda/base_agenda.html:26
#: projector/templates/projector/base_projector.html:20
#: templates/front_page.html:25
msgid "Projector view"
msgstr "Projektor-Ansicht"
#: agenda/templates/agenda/base_agenda.html:31
msgid "View item" msgid "View item"
msgstr "Eintrag anzeigen" msgstr "Eintrag anzeigen"
#: agenda/templates/agenda/base_agenda.html:36 #: agenda/templates/agenda/base_agenda.html:31
#: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:16 #: agenda/templates/agenda/edit.html:8 agenda/templates/agenda/edit.html:16
#: agenda/templates/agenda/item_row.html:49 #: agenda/templates/agenda/item_row.html:49
msgid "Edit item" msgid "Edit item"
msgstr "Eintrag bearbeiten" msgstr "Eintrag bearbeiten"
#: agenda/templates/agenda/base_agenda.html:38 #: agenda/templates/agenda/base_agenda.html:33
#: agenda/templates/agenda/item_row.html:50 #: agenda/templates/agenda/item_row.html:50
msgid "Delete item" msgid "Delete item"
msgstr "Eintrag löschen" msgstr "Eintrag löschen"
#: agenda/templates/agenda/base_agenda.html:43 #: agenda/templates/agenda/base_agenda.html:38
msgid "Show item" msgid "Show item"
msgstr "Eintrag projizieren" msgstr "Eintrag projizieren"
@ -492,7 +486,7 @@ msgstr "Version %d zugelassen"
#: application/models.py:109 #: application/models.py:109
#, python-format #, python-format
msgctxt "Rejected means not permitted" msgctxt "Rejected meens not permittd"
msgid "Version %d rejected" msgid "Version %d rejected"
msgstr "Version %d verworfen" msgstr "Version %d verworfen"
@ -741,9 +735,10 @@ msgstr "Soll Version <b>%s</b> wirklich zurückgewiesen werden?"
#: application/views.py:563 participant/views.py:395 #: application/views.py:563 participant/views.py:395
msgid "" msgid ""
"The import function is available for the admin (without user profile) only." "The import function is available for the superuser (without user profile) "
"only."
msgstr "" msgstr ""
"Die Importfunktion ist nur für den Admin (ohne Nutzerprofil) verfügbar." "Die Importfunktion ist nur für den 'superuser' (ohne Nutzerprofil) verfügbar."
#: application/views.py:594 application/views.py:598 application/views.py:604 #: application/views.py:594 application/views.py:598 application/views.py:604
#: application/views.py:607 participant/views.py:464 #: application/views.py:607 participant/views.py:464
@ -826,7 +821,7 @@ msgid "Status"
msgstr "Status" msgstr "Status"
#: application/views.py:792 application/templates/application/view.html:217 #: application/views.py:792 application/templates/application/view.html:217
#: application/templates/application/view.html:247 config/models.py:131 #: application/templates/application/view.html:247 config/models.py:133
#: config/templates/config/version.html:5 #: config/templates/config/version.html:5
#: config/templates/config/version.html:8 #: config/templates/config/version.html:8
#: config/templates/config/version.html:11 #: config/templates/config/version.html:11
@ -1267,8 +1262,9 @@ msgid "No ballots available."
msgstr "Keine Wahlgänge vorhanden." msgstr "Keine Wahlgänge vorhanden."
#: application/templates/projector/ItemPoll.html:4 #: application/templates/projector/ItemPoll.html:4
#, fuzzy
msgid "Poll about" msgid "Poll about"
msgstr "Abstimmung über" msgstr "Abstimmungsergebnis"
#: assignment/forms.py:35 #: assignment/forms.py:35
msgid "Nominate a participant" msgid "Nominate a participant"
@ -1685,6 +1681,10 @@ msgstr "Startseite"
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: participant/__init__.py:3
msgid "Participant"
msgstr "Teilnehmer"
#: participant/forms.py:24 #: participant/forms.py:24
msgid "Keep applications, try to reassign submitter" msgid "Keep applications, try to reassign submitter"
msgstr "Anträge beibehalten, versuchen Antragssteller erneut zuzuweisen" msgstr "Anträge beibehalten, versuchen Antragssteller erneut zuzuweisen"
@ -1756,7 +1756,7 @@ msgstr "Mitarbeiter"
msgid "Guest" msgid "Guest"
msgstr "Gast" msgstr "Gast"
#: participant/models.py:39 participant/views.py:608 #: participant/models.py:39 participant/views.py:605
#: participant/templates/participant/overview.html:29 #: participant/templates/participant/overview.html:29
#: participant/templates/participant/overview.html:67 #: participant/templates/participant/overview.html:67
msgid "Group" msgid "Group"
@ -1778,7 +1778,7 @@ msgstr "Nur zum Filtern der Benutzerliste."
msgid "Typ" msgid "Typ"
msgstr "Typ" msgstr "Typ"
#: participant/models.py:46 participant/views.py:609 #: participant/models.py:46 participant/views.py:606
#: participant/templates/participant/overview.html:44 #: participant/templates/participant/overview.html:44
#: participant/templates/participant/overview.html:69 #: participant/templates/participant/overview.html:69
msgid "Committee" msgid "Committee"
@ -1931,18 +1931,11 @@ msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?"
#: participant/views.py:571 #: participant/views.py:571
#, python-format #, python-format
msgid "" msgid "The password for the user %(user)s is %(password)s. Please change it"
"Installation was successfully! Use %(user)s (password: %(password)s) for "
"first login.<br><strong>Important:</strong> Please change the password after "
"first login! Otherwise this message still appears for everyone and could be "
"a security risk."
msgstr "" msgstr ""
"Die Installation war erfolgreich! Bitte %(user)s (Passwort: %(password)s) " "Das Passwort für den Benutzer %(user)s ist %(password)s. Bitte ändere es"
"für die erste Anmeldung verwenden.<br><strong>Wichtig:</strong> Bitte ändern "
"Sie das Passwort direkt nach der erster Anmeldung! Andernfalls erscheint "
"diese Nachricht für alle Teilnehmer/innen und wäre ein Sicherheitsrisiko."
#: participant/views.py:591 #: participant/views.py:588
#: participant/templates/participant/base_participant.html:12 #: participant/templates/participant/base_participant.html:12
#: participant/templates/participant/overview.html:7 #: participant/templates/participant/overview.html:7
#: participant/templates/participant/overview.html:17 #: participant/templates/participant/overview.html:17
@ -1950,56 +1943,56 @@ msgstr ""
msgid "Participants" msgid "Participants"
msgstr "Teilnehmer/innen" msgstr "Teilnehmer/innen"
#: participant/views.py:604 #: participant/views.py:601
msgid "Participant-list" msgid "Participant-list"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:605 #: participant/views.py:602
msgid "List of Participants" msgid "List of Participants"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:608 participant/templates/participant/overview.html:66 #: participant/views.py:605 participant/templates/participant/overview.html:66
msgid "Last Name" msgid "Last Name"
msgstr "Nachname" msgstr "Nachname"
#: participant/views.py:608 participant/templates/participant/overview.html:65 #: participant/views.py:605 participant/templates/participant/overview.html:65
msgid "First Name" msgid "First Name"
msgstr "Vorname" msgstr "Vorname"
#: participant/views.py:608 participant/templates/participant/overview.html:36 #: participant/views.py:605 participant/templates/participant/overview.html:36
#: participant/templates/participant/overview.html:68 #: participant/templates/participant/overview.html:68
msgid "Type" msgid "Type"
msgstr "Typ" msgstr "Typ"
#: participant/views.py:645 #: participant/views.py:642
msgid "Participant-passwords" msgid "Participant-passwords"
msgstr "Teilnehmer-Passwoerter" msgstr "Teilnehmer-Passwoerter"
#: participant/views.py:664 #: participant/views.py:661
msgid "Account for OpenSlides" msgid "Account for OpenSlides"
msgstr "Zugang für OpenSlides" msgstr "Zugang für OpenSlides"
#: participant/views.py:666 #: participant/views.py:663
#, python-format #, python-format
msgid "for %s" msgid "for %s"
msgstr "für %s" msgstr "für %s"
#: participant/views.py:669 #: participant/views.py:666
#, python-format #, python-format
msgid "User: %s" msgid "User: %s"
msgstr "Nutzername: %s" msgstr "Nutzername: %s"
#: participant/views.py:671 #: participant/views.py:668
#, python-format #, python-format
msgid "Password: %s" msgid "Password: %s"
msgstr "Passwort: %s" msgstr "Passwort: %s"
#: participant/views.py:674 #: participant/views.py:671
#, python-format #, python-format
msgid "URL: %s" msgid "URL: %s"
msgstr "URL: %s" msgstr "URL: %s"
#: participant/views.py:719 #: participant/views.py:716
msgid "Participants settings successfully saved." msgid "Participants settings successfully saved."
msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert." msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert."
@ -2187,6 +2180,11 @@ msgstr "Projektor"
msgid "Overview" msgid "Overview"
msgstr "Übersicht" msgstr "Übersicht"
#: projector/templates/projector/base_projector.html:20
#: templates/front_page.html:25
msgid "Projector view"
msgstr "Projektor-Ansicht"
#: projector/templates/projector/control.html:20 #: projector/templates/projector/control.html:20
msgid "Adjust projector view" msgid "Adjust projector view"
msgstr "Projektor-Ansicht anpassen" msgstr "Projektor-Ansicht anpassen"

View File

@ -0,0 +1,3 @@
from django.utils.translation import ugettext_noop
NAME = ugettext_noop('Participant')

View File

@ -41,7 +41,7 @@
$(this).hide("fast"); $(this).hide("fast");
}); });
</script> </script>
<form method="post" action="{% url user_login %}"> <form method="post" action="{% url user_login %}{% if next %}?next={{ next }}{% endif %}">
{% csrf_token %} {% csrf_token %}
<table> <table>
<tr> <tr>

View File

@ -565,21 +565,22 @@ def reset_password(request, user_id):
def login(request): def login(request):
extra_content = {}
try: try:
admin = User.objects.get(pk=1) admin = User.objects.get(pk=1)
if admin.check_password(config['admin_password']): if admin.check_password(config['admin_password']):
first_time_message = _("Installation was successfully! Use %(user)s " extra_content['first_time_message'] = _(
"(password: %(password)s) for first login.<br>" "Installation was successfully! Use %(user)s "
"<strong>Important:</strong> Please change the password after " "(password: %(password)s) for first login.<br>"
"first login! Otherwise this message still appears for everyone " "<strong>Important:</strong> Please change the password after "
"and could be a security risk.") % { "first login! Otherwise this message still appears for everyone "
"and could be a security risk.") % {
'user': html_strong(admin.username), 'user': html_strong(admin.username),
'password': html_strong(config['admin_password'])} 'password': html_strong(config['admin_password'])}
else: extra_content['next'] = reverse('password_change')
first_time_message = None
except User.DoesNotExist: except User.DoesNotExist:
first_time_message = None pass
return django_login(request, template_name='participant/login.html', extra_context={'first_time_message': first_time_message}) return django_login(request, template_name='participant/login.html', extra_context=extra_content)
def register_tab(request): def register_tab(request):