This commit is contained in:
Emanuel Schuetze 2012-07-21 22:05:51 +02:00
commit b9c48f602e
54 changed files with 942 additions and 687 deletions

14
AUTHORS
View File

@ -1,7 +1,7 @@
Authors of OpenSlides in chronological order of first contribution: Authors of OpenSlides in chronological order of first contribution:
Emanuel Schütze <emanuel@intevation.de> Emanuel Schütze <emanuel@intevation.de>
Oskar Hahn <mail@oshahn.de> Oskar Hahn <mail@oshahn.de>
Norman Jäckel <mail@normanjaeckel.de> Norman Jäckel <mail@normanjaeckel.de>
René Köcher <shirk@bitspin.org> René Köcher <shirk@bitspin.org>
Andy Kittner <andkit@gmx.net> Andy Kittner <andkit@gmx.net>

114
CHANGELOG
View File

@ -1,57 +1,57 @@
CHANGELOG of OpenSlides CHANGELOG of OpenSlides
http://openslides.org http://openslides.org
Version 1.2 (unreleased) Version 1.2 (unreleased)
[http://dev.openslides.org/milestone/1.2] [http://dev.openslides.org/milestone/1.2]
Version 1.1 (2011-11-15) Version 1.1 (2011-11-15)
[http://dev.openslides.org/milestone/1.1] [http://dev.openslides.org/milestone/1.1]
Agenda: Agenda:
- [Feature] Agenda overview: New item-done-column for all non-manager (#7) - [Feature] Agenda overview: New item-done-column for all non-manager (#7)
- [Feature] Allow HTML-Tags in agenda item of text (#12) - [Feature] Allow HTML-Tags in agenda item of text (#12)
- [Feature] Split up hidden agenda items in new agenda table section (#13) - [Feature] Split up hidden agenda items in new agenda table section (#13)
Projector: Projector:
- [Feature] Assignment projector view layout improvements (#9) - [Feature] Assignment projector view layout improvements (#9)
- [Bugfix] Zoom problem for sidebar div in beamer view (#5) - [Bugfix] Zoom problem for sidebar div in beamer view (#5)
- [Bugfix] Blue 'candidate elected line' not visible in projector ajax view (#6) - [Bugfix] Blue 'candidate elected line' not visible in projector ajax view (#6)
- [Bugfix] Assignment projector view: Show results for elected candidates only (#11) - [Bugfix] Assignment projector view: Show results for elected candidates only (#11)
- [Bugfix] Missing beamer scaling (#2) - [Bugfix] Missing beamer scaling (#2)
- [Bugfix] Assigment projector view: Removed empty character for no results cell. (#10) - [Bugfix] Assigment projector view: Removed empty character for no results cell. (#10)
Applications: Applications:
- [Feature] Import applications (#55) - [Feature] Import applications (#55)
- [Feature] Support trivial changes to an application (#56) - [Feature] Support trivial changes to an application (#56)
- [Bugfix] Order submitter and supporter form fields by full name (#53) - [Bugfix] Order submitter and supporter form fields by full name (#53)
- [Bugfix] Application: Show profile instead of submitter username (#15) - [Bugfix] Application: Show profile instead of submitter username (#15)
- [Bugfix] "Application: Only check enough supports in status ""pub""" (#16) - [Bugfix] "Application: Only check enough supports in status ""pub""" (#16)
Elections: Elections:
- [Feature] New button to show agenda item of selected application/assignment (#54) - [Feature] New button to show agenda item of selected application/assignment (#54)
- [Feature] Open add-user-url in new tab. (#32) - [Feature] Open add-user-url in new tab. (#32)
Applications/Elections: Applications/Elections:
- [Feature] Show voting results in percent (#48) - [Feature] Show voting results in percent (#48)
Participants: Participants:
- [Feature] Filter displayed permissions in group editor (#59) - [Feature] Filter displayed permissions in group editor (#59)
- [Feature] Generate password after user creation automatically (#58) - [Feature] Generate password after user creation automatically (#58)
- [Bugfix] Encoding error (#1) - [Bugfix] Encoding error (#1)
- [Bugfix] List of participants (pdf) link not visible for users with see-particiants-permissions (#3) - [Bugfix] List of participants (pdf) link not visible for users with see-particiants-permissions (#3)
- [Bugfix] Use user.profile.get_type_display() instead of user.profile.type (#4) - [Bugfix] Use user.profile.get_type_display() instead of user.profile.type (#4)
PDF: PDF:
- [Feature] Mark elected candidates in PDF (#31) - [Feature] Mark elected candidates in PDF (#31)
- [Feature] New config option to set title and preamble text for application and assignment pdf (#33) - [Feature] New config option to set title and preamble text for application and assignment pdf (#33)
- [Feature] New config option to set number of ballots in PDF (#26) - [Feature] New config option to set number of ballots in PDF (#26)
- [Bugfix] Assignment ballot pdf: Wrong line break in group name with brackets (#8) - [Bugfix] Assignment ballot pdf: Wrong line break in group name with brackets (#8)
- [Bugfix] Print available candidates in assignment pdf (#14) - [Bugfix] Print available candidates in assignment pdf (#14)
- [Bugfix] "Show ""undocumented"" for result ""-2"" in application and assignment pdf" (#17) - [Bugfix] "Show ""undocumented"" for result ""-2"" in application and assignment pdf" (#17)
Other: Other:
- [Feature] Rights for anonymous (#45) - [Feature] Rights for anonymous (#45)
- [Feature] Show counter for limited speaking time (#52) - [Feature] Show counter for limited speaking time (#52)
- [Feature] Reorderd config tab subpages (#61) - [Feature] Reorderd config tab subpages (#61)
- [Localize] i18n German: Use gender-specific strings (#51) - [Localize] i18n German: Use gender-specific strings (#51)
- [Bugfix] <button> inside <a> tag not working in IE (#57) - [Bugfix] <button> inside <a> tag not working in IE (#57)
- [Bugfix] Change default sort for tables of applications, assignments, participants (#27) - [Bugfix] Change default sort for tables of applications, assignments, participants (#27)
Version 1.0 (2011-09-12) Version 1.0 (2011-09-12)
[http://dev.openslides.org/milestone/1.0] [http://dev.openslides.org/milestone/1.0]

20
INSTALL
View File

@ -16,9 +16,14 @@ I. Installation on Windows (32/64bit)
1. Install requirements: 1. Install requirements:
OpenSlides requires following programs, which should be OpenSlides requires following programs, which should be
installed first: Python Programming Language 2.7, installed first:
Setuptools, ReportLab Toolkit, Python Imaging Library (PIL), + Python Programming Language 2 (>= 2.5),
Django and django-mptt: + Setuptools
+ ReportLab Toolkit
+ Python Imaging Library (PIL)
+ Django
+ django-mptt
a) Download and run 32bit MSI installer from http://www.python.org/: a) Download and run 32bit MSI installer from http://www.python.org/:
@ -80,9 +85,9 @@ II. Installation on GNU/Linux and MacOSX
OpenSlides requires following programs, which should be OpenSlides requires following programs, which should be
installed first: installed first:
+ Python Programming Language 2 (>= 2.5), + Python Programming Language 2 (>= 2.5)
+ virtualenv (>= 1.4.1), + virtualenv (>= 1.4.1)
+ ReportLab Toolkit and + ReportLab Toolkit
+ Python Imaging Library (PIL) + Python Imaging Library (PIL)
E.g. for ubuntu run: E.g. for ubuntu run:
@ -114,7 +119,7 @@ II. Installation on GNU/Linux and MacOSX
4. Activate the virtual environment: 4. Activate the virtual environment:
$ . .venv/bin/activate $ source .venv/bin/activate
5. Install the required python-packages: 5. Install the required python-packages:
@ -143,4 +148,3 @@ II. Installation on GNU/Linux and MacOSX
To restart OpenSlides after closing the terminal activate the To restart OpenSlides after closing the terminal activate the
virtual environment (see 4.) before starting the server (see 6.). virtual environment (see 4.) before starting the server (see 6.).

678
LICENSE
View File

@ -1,339 +1,339 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
Preamble Preamble
The licenses for most software are designed to take away your The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to the GNU Lesser General Public License instead.) You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things. in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights. anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it. distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their source code. And you must show them these terms so they know their
rights. rights.
We protect your rights with two steps: (1) copyright the software, and We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy, (2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software. distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original that any problems introduced by others will not reflect on the original
authors' reputations. authors' reputations.
Finally, any free program is threatened constantly by software Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all. patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains 0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below, under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program" refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law: means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it, that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you". the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program). Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does. Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's 1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty; notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License and give any other recipients of the Program a copy of this License
along with the Program. along with the Program.
You may charge a fee for the physical act of transferring a copy, and You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee. you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion 2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1 distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions: above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change. stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License. parties under the terms of this License.
c) If the modified program normally reads commands interactively c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on does not normally print such an announcement, your work based on
the Program is not required to print an announcement.) the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it. entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or exercise the right to control the distribution of derivative or
collective works based on the Program. collective works based on the Program.
In addition, mere aggregation of another work not based on the Program In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under a storage or distribution medium does not bring the other work under
the scope of this License. the scope of this License.
3. You may copy and distribute the Program (or a work based on it, 3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following: Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or, 1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or, customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such received the program in object code or executable form with such
an offer, in accord with Subsection b above.) an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component operating system on which the executable runs, unless that component
itself accompanies the executable. itself accompanies the executable.
If distribution of executable or object code is made by offering If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not distribution of the source code, even though third parties are not
compelled to copy the source along with the object code. compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License. void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such this License will not have their licenses terminated so long as such
parties remain in full compliance. parties remain in full compliance.
5. You are not required to accept this License, since you have not 5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying all its terms and conditions for copying, distributing or modifying
the Program or works based on it. the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the 6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein. restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to You are not responsible for enforcing compliance by third parties to
this License. this License.
7. If, as a consequence of a court judgment or allegation of patent 7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues), infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program. refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other apply and the section as a whole is intended to apply in other
circumstances. circumstances.
It is not the purpose of this section to induce you to infringe any It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is integrity of the free software distribution system, which is
implemented by public license practices. Many people have made implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot to distribute software through any other system and a licensee cannot
impose that choice. impose that choice.
This section is intended to make thoroughly clear what is believed to This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License. be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License. the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions 9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to be similar in spirit to the present version, but may differ in detail to
address new problems or concerns. address new problems or concerns.
Each version is given a distinguishing version number. If the Program Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software this License, you may choose any version ever published by the Free Software
Foundation. Foundation.
10. If you wish to incorporate parts of the Program into other free 10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally. of promoting the sharing and reuse of software generally.
NO WARRANTY NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION. REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms. free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author> Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this If the program is interactive, make it output a short notice like this
when it starts in an interactive mode: when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program. mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names: necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker. `Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989 <signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice Ty Coon, President of Vice
This General Public License does not permit incorporating your program into This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. Public License instead of this License.

50
THANKS
View File

@ -1,25 +1,25 @@
THANKS file for OpenSlides THANKS file for OpenSlides
OpenSlides uses parts of the following projects: OpenSlides uses parts of the following projects:
* Django * Django
<https://www.djangoproject.com/> <https://www.djangoproject.com/>
* jQuery * jQuery
<http://www.jquery.com/> <http://www.jquery.com/>
* jQuery UI * jQuery UI
<http://jqueryui.com/> <http://jqueryui.com/>
* ReportLab * ReportLab
<http://www.reportlab.com/software/opensource/rl-toolkit/> <http://www.reportlab.com/software/opensource/rl-toolkit/>
* Drupal (tabledrag function) * Drupal (tabledrag function)
<http://www.drupal.org/> <http://www.drupal.org/>
* Oxygen-Icons * Oxygen-Icons
<http://www.oxygen-icons.org/> <http://www.oxygen-icons.org/>
* Ubuntu TrueType Font * Ubuntu TrueType Font
<http://font.ubuntu.com/> <http://font.ubuntu.com/>

BIN
docs/_static/images/chapter2_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/_static/images/tutorial_de_1_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
docs/_static/images/tutorial_de_1_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
docs/_static/images/tutorial_de_1_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
docs/_static/images/tutorial_de_1_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
docs/_static/images/tutorial_de_1_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
docs/_static/images/tutorial_de_1_06.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/_static/images/tutorial_de_1_07.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/_static/images/tutorial_de_1_08.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/_static/images/tutorial_de_1_09.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/_static/images/tutorial_de_1_10.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
docs/_static/images/tutorial_de_1_11.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
docs/_static/images/tutorial_de_1_12.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
docs/_static/images/tutorial_de_2_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/_static/images/tutorial_de_2_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/_static/images/tutorial_de_2_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
docs/_static/images/tutorial_de_2_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
docs/_static/images/tutorial_de_2_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/_static/images/tutorial_de_2_06.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
docs/_static/images/tutorial_de_2_07.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
docs/_static/images/tutorial_de_3_01.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/_static/images/tutorial_de_3_02.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/_static/images/tutorial_de_3_03.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/_static/images/tutorial_de_3_04.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
docs/_static/images/tutorial_de_3_05.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -1,3 +1,6 @@
@import url('sphinxdoc.css'); @import url('sphinxdoc.css');
/* Specific stylesheet for OpenSlides Documentation */ /* Specific stylesheet for OpenSlides Documentation */
.screenshot {
width:100%;}

View File

@ -8,14 +8,14 @@ OpenSlides wurde vor allem für Mitgliederversammlungen, Delegiertenversammlunge
OpenSlides kann in drei Modi betrieben werden: OpenSlides kann in drei Modi betrieben werden:
Präsentationsmodus: Präsentationsmodus:
Im Präsentationsmodus steuern ein oder mehrere Veranstalter (z. B. Vorstandsmitglieder eines Vereins oder einer Partei) das Programm allein. Sie bearbeiten diese Inhalte interaktiv und bestimmen, was auf dem Beamer gezeigt wird. Alle Anwesenden können die Veranstaltung auf der Leinwand verfolgen. Im Präsentationsmodus steuern ein oder mehrere Veranstalter (zum Beispiel Vorstandsmitglieder eines Vereins oder einer Partei) das Programm allein. Sie bearbeiten diese Inhalte interaktiv und bestimmen, was auf dem Beamer gezeigt wird. Alle Anwesenden können die Veranstaltung auf der Leinwand verfolgen.
Präsentationsmodus Single: Präsentationsmodus Single:
Der Unterschied zum normalen Präsentationsmodus ist, dass nur eine einzige Person das gesamte System bedient *und* der Beamer auch an ihrem Computer angeschlossen ist. Der Unterschied zum normalen Präsentationsmodus ist, dass nur eine einzige Person das gesamte System bedient *und* der Beamer auch an ihrem Computer angeschlossen ist.
Teilnehmermodus: Teilnehmermodus:
Im Teilnehmermodus können sich zusätzlich zur Versammlungsleitung die anwesenden Teilnehmer mit dem eigenen Laptop oder Smartphone über Netzwerk (z. B. WLAN) anmelden und eigene Inhalte bearbeiten, zum Beispiel einen Antrag stellen oder einen Kandidaten zur Wahl vorschlagen. Eine umfangreiche Rechteverwaltung garantiert die notwendige Sicherheit des Systems. Die Versammlungsleitung hat in der Regel weitgehende, die Versammlungsteilnehmer nur eingeschränkte Zugriffsrechte. Im Teilnehmermodus können sich zusätzlich zur Versammlungsleitung die anwesenden Teilnehmer mit dem eigenen Laptop oder Smartphone über Netzwerk (zum Beispiel WLAN) anmelden und eigene Inhalte bearbeiten, zum Beispiel einen Antrag stellen oder einen Kandidaten zur Wahl vorschlagen. Eine umfangreiche Rechteverwaltung garantiert die notwendige Sicherheit des Systems. Die Versammlungsleitung hat in der Regel weitgehende, die Versammlungsteilnehmer nur eingeschränkte Zugriffsrechte.
Außer beim Präsentationsmodus Single benötigt man ein Computernetzwerk, z. B. mit mehreren LAN-Anschlüssen oder einem WLAN im Raum. Ein Computer fungiert hier als Server für OpenSlides. Alle anderen Computer müssen auf dessen IP-Adresse zugreifen können. Der Computer, an dem der Beamer angeschlossen ist, kann auch ein eigenständiger Computer sein, der über das Netzwerk auf den Server zugreift. Außer beim Präsentationsmodus Single benötigt man ein Computernetzwerk, zum Beispiel mit mehreren LAN-Anschlüssen oder einem WLAN im Raum. Ein Computer fungiert hier als Server für OpenSlides. Alle anderen Computer müssen auf dessen IP-Adresse zugreifen können. Der Computer, an dem der Beamer angeschlossen ist, kann auch ein eigenständiger Computer sein, der über das Netzwerk auf den Server zugreift.
OpenSlides ist webbasiert, das heißt, es muss bei den Benutzern und Teilnehmern keine neue Software installiert werden. Das Programm wird ausschließlich über den eigenen Browser bedient. Alle gängigen aktuellen Browser werden untersützt. Lediglich die Veranstaltungsleitung muss auf einem einzigen Computer, dem Server, OpenSlides installieren und starten. OpenSlides ist webbasiert, das heißt, es muss bei den Benutzern und Teilnehmern keine neue Software installiert werden. Das Programm wird ausschließlich über den eigenen Browser bedient. Alle gängigen aktuellen Browser werden untersützt. Lediglich die Veranstaltungsleitung muss auf einem einzigen Computer, dem Server, OpenSlides installieren und starten.

View File

@ -73,17 +73,17 @@ Falls dies wegen Ihrer Browsereinstellungen nicht gelingt, rufen Sie das OpenSli
Erster Login Erster Login
------------ ------------
Der erste Login als Administrator ist mit dem Benutzernamen ``admin`` und dem Passwort ``admin`` möglich. Sie sollten das Passwort nach dem ersten Start ändern, um Unbefugten keinen Zugriff auf Ihre Daten zu gewähren. Der erste Login als Administrator ist mit dem Benutzernamen ``admin`` und dem Passwort ``admin`` möglich. Sie sollten das Passwort nach dem ersten Start ändern__, um Unbefugten keinen Zugriff auf Ihre Daten zu gewähren.
(**TODO Link zum Passwort ändern einfügen**)
.. __: chapter5_1.html#
Arbeiten mit OpenSlides Arbeiten mit OpenSlides
+++++++++++++++++++++++ +++++++++++++++++++++++
Im Webinterface von OpenSlides können Sie über die verschiedenen Tabs alle Inhalte in OpenSlides eingeben und verwalten. Im Webinterface von OpenSlides können Sie über die verschiedenen Tabs alle Inhalte in OpenSlides eingeben und verwalten.
.. image:: _static/images/index.png .. image:: _static/images/chapter2_01.png
:class: screenshot
Im Tab „Projektor“ steuern Sie, welche Folien auf dem Beamer angezeigt werden. Dazu klicken Sie einfach auf das jeweilige graue Beamersymbol. Im Tab „Tagesordnung“ können Sie die Tagesordnung der Veranstaltung im Vorfeld anlegen und entsprechende Folien vorbereiten. In den Tabs „Anträge“ und „Wahlen“ verwalten Sie die gestellten Anträge und die Wahlämter mit den Kandidaten sowie die dazugehörigen Abstimmungen und Wahlen. Der Tab „Teilnehmer/innen“ ermöglicht einen Zugriff auf die Personenprofile. Im Tab „Konfiguration“ können einige Einstellungen vorgenommen werden. Im Tab „Projektor“ steuern Sie, welche Folien auf dem Beamer angezeigt werden. Dazu klicken Sie einfach auf das jeweilige graue Beamersymbol. Im Tab „Tagesordnung“ können Sie die Tagesordnung der Veranstaltung im Vorfeld anlegen und entsprechende Folien vorbereiten. In den Tabs „Anträge“ und „Wahlen“ verwalten Sie die gestellten Anträge und die Wahlämter mit den Kandidaten sowie die dazugehörigen Abstimmungen und Wahlen. Der Tab „Teilnehmer/innen“ ermöglicht einen Zugriff auf die Personenprofile. Im Tab „Konfiguration“ können einige Einstellungen vorgenommen werden.

View File

@ -15,6 +15,8 @@ Inhalt:
chapter2 chapter2
tutorial_de
chapter3 chapter3
chapter4 chapter4

26
docs/de/tutorial_de.rst Normal file
View File

@ -0,0 +1,26 @@
Tutorial Präsentationsmodus
=============================
In diesem Tutorial sehen Sie am Beispiel der Mitgliederversammlung eines Kleingartenvereins, wie Sie OpenSlides im Präsentationsmodus bedienen.
Zunächst lernen Sie, OpenSlides allgemein einzurichten und Folien auf dem Beamer zu zeigen. Anschließend können Sie die einzelnen Tutorials für Tagesordnung, Teilnehmerverwaltung, Anträge und Wahlen durcharbeiten.
Alle Tutorials gehen von folgenden Rahmenbedingungen aus:
Der Verein „Schreberverein Nord e. V.“ hält am 3. März 2012 seine jährliche Mitgliederversammlung ab. Der Vorstand erwartet etwa 40 Teilnehmer. Auf der Versammlung werden verschiedene Berichte gehalten und über eine Satzungsänderung und einen Antrag für ein Gartenfest abgestimmt. Außerdem finden Wahlen zum Vorstand (drei Personen) und zum Beirat (sieben Personen) statt.
Die einzelen Tutorials:
.. toctree::
:maxdepth: 1
tutorial_de_1
tutorial_de_2
tutorial_de_3
tutorial_de_4
tutorial_de_5

138
docs/de/tutorial_de_1.rst Normal file
View File

@ -0,0 +1,138 @@
Einrichtung von OpenSlides
==========================
Zunächst müssen Sie OpenSlides auf dem Server installieren, den Server starten und einige Einstellungen für Ihre Veranstaltung vornehmen. Danach können Sie Ihre ersten Folien einrichten und auf dem Beamer zeigen.
Installation und Start des Servers
----------------------------------
Installieren Sie OpenSlides wie hier__ beschrieben. Starten Sie den Server wie hier__ beschrieben. Sie sehen jetzt die Login-Seite von OpenSlides in Ihrem Browser. Loggen Sie sich als Administrator ein, indem Sie als Benutzernamen ``admin`` und als Passwort ``admin`` eingeben und auf ``Anmelden`` klicken.
.. image:: _static/images/tutorial_de_1_01.png
:class: screenshot
Anschließend sollten Sie sofort das Administrator-Passwort ändern. Geben Sie in die entsprechenden Felder Ihr altes Passwort ``admin`` und als neues Passwort ``geheim`` ein. Wiederholen Sie das neue Passwort im dritten Formularfeld. Bestätigen Sie die Eingabe mit ``Speichern``.
.. image:: _static/images/tutorial_de_1_02.png
:class: screenshot
.. __: chapter2.html#installation
.. __: chapter2.html#start-des-servers-und-offnen-des-browsers
Konfiguration des Systems
-------------------------
Geben Sie die Rahmendaten Ihrer Veranstaltung ins System ein. Wechseln Sie dazu zum Tab „Konfiguration“ und geben Sie die Allgemeinen Einstellungen wie folgt ein:
Veranstaltungsname:
Schreberverein Nord e. V.
Kurzbeschreibung der Veranstaltung:
Mitgliederversammlung des Vereins 2012
Veranstaltungszeitraum:
Sonnabend, 3. März 2012
Veranstaltungsort:
Leipzig
Veranstalter:
Schreberverein Nord e. V.
Startseite Titel:
Willkommen zur Mitgliederversammlung
Startseite Willkommenstext:
Herzlich willkommen, liebe Gartenfreunde!
.. image:: _static/images/tutorial_de_1_03.png
:class: screenshot
Klicken Sie anschließend auf ``Speichern``. Auch bei allen folgenden Eingaben dieses Tutorials müssen Sie stets auf ``Speichern`` klicken, um die Eingabe abzuschließen.
Wenn Sie nun links oben auf das Projektor-Logo klicken, kommen Sie zur Startseite von OpenSlides.
.. image:: _static/images/tutorial_de_1_04.png
:class: screenshot
Einrichtung eigener Folien
--------------------------
Um erste benutzerdefinierte Folien hinzuzufügen, wechseln Sie zum Tab „Projektor“. Klicken Sie in dem Fenster „Benutzerdefinierte Folien“ auf ``Neue Folie``
.. image:: _static/images/tutorial_de_1_05.png
:class: screenshot
und geben Sie eine Folie wie folgt ein:
Titel:
Kaffeepause um 15.30 Uhr
Text:
Bitte kommen Sie pünktlich um 16.00 Uhr zurück in den Saal.
.. image:: _static/images/tutorial_de_1_06.png
:class: screenshot
Die Ansicht im Tab „Projektor“ müsste nun wie folgt aussehen:
.. image:: _static/images/tutorial_de_1_07.png
:class: screenshot
Technische Einrichtung im Veranstaltungsraum
--------------------------------------------
Richten Sie Ihren Veranstaltungsraum ein. Im Präsentationsmodus Single schließen Sie den Beamer an Ihren Computer an und schieben ein zweites Browserfenster auf den erweiterten Bildschirm. Ansonsten richten Sie ein Netzwerk ein, schließen Sie einen beliebigen Computer an den Beamer an und öffnen im Vollbildmodus die Seite mit der Projektoransicht. Den entsprechend Link finden Sie bei OpenSlides im Tab „Projektor“ auf der linken Seite. Er lautet zum Beispiel ``http://192.168.x.y/projector/`` wobei x und y für je eine bestimmte Zahl mit ein bis drei Ziffern stehen.
.. image:: _static/images/tutorial_de_1_08.png
:class: screenshot
Das Beamerbild sieht zurzeit wie folgt aus:
.. image:: _static/images/tutorial_de_1_09.png
:class: screenshot
Auswahl der Beamerfolien
------------------------
Testen Sie, ob auf dem Beamer die gewünschten Folien zu sehen sind, wenn Sie bei OpenSlides im Tab „Projektor“ verschiedene Folien auswählen. Sie können eine bestimmte Folien anwählen, indem Sie auf den jeweiligen grauen Haken klicken. Die jeweils aktive Folie zeigt einen blauen Haken.
.. image:: _static/images/tutorial_de_1_10.png
:class: screenshot
Das volle Potenzial von OpenSlides entfaltet sich, wenn Sie über Tagesordnung, Anträge und Wahlen zahlreiche Folien anlegen, die Sie während der Veranstaltung zeigen und im Hintergrund editieren können.
Wenn Sie zwischendurch eine kurze Nachricht, zum Beispiel ein Fußballergebnis, einblenden wollen, ohne dass dazu eine extra Folie angelegt werden soll, können Sie die Message-Funktion im Fenster „Einblendungen“ benutzen. Schreiben Sie im Fenster „Einblendungen“ unter „Message“ die Nachricht „Bayern 1 : 1 Dortmund“, klicken auf ``Übernehmen`` und aktivieren die Einblendung, indem Sie auf den davor gestellten grauen Haken klicken.
.. image:: _static/images/tutorial_de_1_11.png
:class: screenshot
Das Beamerbild sieht dann wie folgt aus:
.. image:: _static/images/tutorial_de_1_12.png
:class: screenshot
Schalten Sie die Einblendung wieder aus, indem Sie erneut auf den (nunmehr blauen) Haken klicken.
Weiter geht es mit dem zweiten Teil des Tutorials: `Tagesordnung verwalten`__
.. __: tutorial_de_2.html

76
docs/de/tutorial_de_2.rst Normal file
View File

@ -0,0 +1,76 @@
Tagesordnung verwalten
======================
In diesem Teil lernen Sie, wie Sie Einträge in der Tagesordnung erstellen und verwalten.
Eingabe der Tagesordnung
------------------------
Die Tagesordnung enthält bei Neuinstallation noch keine Einträge. Legen Sie zunächst einige Einträge an.
Klicken Sie dazu im Tab „Tagesordnung“ auf „Neuer Eintrag“
.. image:: _static/images/tutorial_de_2_01.png
:class: screenshot
und geben Sie den Eintrag wie folgt ein:
Titel:
Begrüßung
Text:
Es begrüßt Sie der Vereinsvorsitzende Dr. Hans Schulze.
.. image:: _static/images/tutorial_de_2_02.png
:class: screenshot
Klicken Sie anschließend auf ``Speichern``.
Erweitern Sie nun die Tagesordnung um folgende Einträge: Bericht des Vorstands, Satzungsänderung, Gartenfest, Sonstiges, Wahlen der Vereinsämter.
Die Übersicht über die Einträge (links bei „Alle Einträge“) müsste nun so aussehen:
.. image:: _static/images/tutorial_de_2_03.png
:class: screenshot
Sie können nun nachträglich die Reihenfolge der Einträge verändern und auch Tagesordnungspunkte zu Unterpunkten verschieben. Ziehen Sie zum Beispiel mit der Maus an den gekreuzten Pfeilen des Punktes „Sonstiges“, um seine Position zu verändern und ihn nach unten zu verschieben. Richten Sie die Tagesordnung durch Verschieben der übrigen Einträge so ein, dass sie wie folgt aussieht:
.. image:: _static/images/tutorial_de_2_04.png
:class: screenshot
Klicken Sie auf ``Ja``, um die geänderte Reihenfolge zu speichern. Solange Sie die veränderte Reihenfolge nicht gespeichert haben, wird die Veränderung nicht in der Datenbank hinterlegt. Dies wird Ihnen durch die kleinen Sternchen hinter den verschobenen Tagesordnungspunkten angezeigt.
*Zu jedem Antrag und zu jedem Wahlamt können Sie über einen Link im Seitenmenü des betreffenden Antrags oder Wahlamts auch einen eigenen Eintrag in der Tagesordnung erstellen, der direkt mit der Antrags- bzw. Wahlfolie verknüpft ist. Dies empfiehlt sich, wenn ein einzelner Antrag oder eine einzelne Wahl an einer bestimmten Stelle der Tagesordnung behandelt werden soll.*
Ändern von Einträgen in der Tagesordnung
----------------------------------------
Titel und Inhalt der Tagesordnungspunkte (Einträge) können jederzeit, insbesondere während des laufenden Betriebs geändert werden. Solange ein Eintrag keinen Inhalt im Feld „Text“ enthält, wird der Titel auf dem Beamer groß und zentriert dargestellt. Wenn Sie einen zusätzlichen Text eingeben, werden Überschrift und Text linksbündig dargestellt.
Ändern Sie zum Beispiel den Inhalt des Tagesordnungspunktes „Bericht des Vorstandes“, indem Sie in der Zeile dieses Eintrags auf das Bearbeiten-Symbol |document-edit| klicken und zusätzlich zum Titel einen Text zum Tagesordnungspunkt wie folgt eingeben:
Der Vorstand berichtet über seine Arbeit, insbesondere die Entwicklung der Mitgliederzahlen und Finanzen.
.. image:: _static/images/tutorial_de_2_05.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Auswahl der Beamerfolien
------------------------
Wenn Sie in den Tab „Projektor“ wechseln
.. image:: _static/images/tutorial_de_2_06.png
:class: screenshot
können Sie durch einen Klick auf den jeweiligen grauen Haken eine bestimmte Folie auswählen. Die jeweils aktive Folie zeigt einen blauen Haken. Probieren Sie, verschiedene Tagesordnungspunkte auf dem Beamer anzuzeigen.
.. image:: _static/images/tutorial_de_2_07.png
:class: screenshot
Weiter geht es mit dem dritten Teil des Tutorials: `Teilnehmer/innen verwalten`__
.. __: tutorial_de_3.html

72
docs/de/tutorial_de_3.rst Normal file
View File

@ -0,0 +1,72 @@
Teilnehmer/innen verwalten
==========================
In diesem Teil lernen Sie, wie Sie die Teilnehmer und Teilnehmerinnen Ihrer Veranstaltungen im System erfassen. Grundsätzlich brauchen Sie nur diejenigen Teilnehmer und Teilnehmerinnen erfassen, die das System verwalten, Anträge stellen oder unterstützen oder bei Wahlen kandidieren.
Eingabe der Teilnehmer und Teilnehmerinnen
------------------------------------------
Sie können die Teilnehmer und Teilnehmerinnen einzeln eintragen oder wie hier__ beschrieben importieren. Jedoch werden beim Import alle vorher eingetragenen Teilnehmer gelöscht. Eingetragenen Personen, die das System verwalten sollen, müssen die entsprechenden Berechtigungen zugewiesen werden.
.. __: chapter5_6.html
Wechseln Sie zum Tab „Teilnehmer/innen“. Klicken Sie links auf „Neue/r Teilnehmer/in“
.. image:: _static/images/tutorial_de_3_01.png
:class: screenshot
und geben Sie einen neuen Teilnehmer wie folgt ein:
Vorname:
Max
Nachname:
Mustermann
Benutzerrolle:
Delegierter
Geschlecht:
männlich
Typ:
Delegierter
.. image:: _static/images/tutorial_de_3_02.png
:class: screenshot
Wiederholen Sie diese Schritte und geben Sie folgende weitere Teilnehmer und Teilnehmerinnen ein: Peter Müller, Franziska Meyer, Luise Schmidt und Hans Schulze.
Wenn Sie anschließend links auf „Alle Teilnehmer/innen“ klicken, sehen Sie die folgende Übersicht:
.. image:: _static/images/tutorial_de_3_03.png
:class: screenshot
Bearbeiten eines Teilnehmers
----------------------------
Sie können die Angaben zu einem Teilnehmer jederzeit bearbeiten. Klicken Sie zum Beispiel beim Teilnehmer „Max Mustermann“ unter der Rubrik „Aktionen“ auf das Bearbeiten-Symbol |document-edit| und weisen Sie der Person die Benutzerrollen „Tagesleitung“ und „Delegierter“ zu. Um mehrere Einträge auszuwählen, halten Sie beim Anklicken die Taste ``Strg`` gedrückt.
.. image:: _static/images/tutorial_de_3_04.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Passworts eines Teilnehmers
---------------------------
Beim Anlegen eines Teilnehmers wird automatisch ein zufälliges Erst-Passwort gesetzt. Sie können das Erst-Passwort aus einer PDF-Datei ablesen, die Sie durch Klick auf den Link „Erst-Passwörter als PDF“ im linken Seitenmenü erreichen.
Bitten Sie jeden, dem Sie sein Erst-Passwort aushändigen, dieses nach dem ersten Login zu ändern.
Um als Administrator das Passwort von zum Beispiel Max Mustermann neu zu setzen, klicken Sie erneut auf das Bearbeiten-Symbol |document-edit| und tragen Sie unten unter „Erst-Passwort“ ein neues, selbstgewähltes Passwort ein. Für dieses Tutorial sei als Passwort ``geheim`` gewählt. Anschließend klicken Sie auf ``Übernehmen``. In einem zweiten Schritt müssen Sie auf den Link „Auf Erst-Passwort zurücksetzen“ klicken, um das im System gespeicherte Passwort mit Ihrem neu eingegebenen zu ersetzen. Bestätigen Sie den oben auf der Seite erscheinenden Dialog mit ``Ja``.
.. image:: _static/images/tutorial_de_3_05.png
:class: screenshot
.. |document-edit| image:: _static/images/document-edit.png
Weiter geht es mit dem vierten Teil des Tutorials: `Anträge verwalten und behandeln`__
.. __: tutorial_de_4.html

View File

@ -0,0 +1,2 @@
Anträge verwalten und behandeln
===============================

View File

@ -0,0 +1,2 @@
Wahlen durchführen
==================

View File

@ -1,25 +1,25 @@
Benchmark test script für OpenSlides Benchmark test script für OpenSlides
------------------------------------ ------------------------------------
usage: bench.py [-h] [-d DELAY] [-j JOBS] [-p PAUSE] [-r REPEAT] usage: bench.py [-h] [-d DELAY] [-j JOBS] [-p PAUSE] [-r REPEAT]
[-s {home,projector,agenda,application}] [-s {home,projector,agenda,application}]
base_url base_url
Optionen: Optionen:
-j JOBS Anzahl der zu startenden Clients -j JOBS Anzahl der zu startenden Clients
-d DELAY Pause zwischen dem Start der einzelnen Unterprozesse in ms -d DELAY Pause zwischen dem Start der einzelnen Unterprozesse in ms
(negativer Wert: zufällige Wartezeit zwischen 0 und abs($wert)). (negativer Wert: zufällige Wartezeit zwischen 0 und abs($wert)).
-p PAUSE "Denkpause" zwischen den einzelnen Requests (ms). -p PAUSE "Denkpause" zwischen den einzelnen Requests (ms).
-r REPEAT Anzahl der Wiederholungen der Requests (jeweils pro Unterprozess/Job) -r REPEAT Anzahl der Wiederholungen der Requests (jeweils pro Unterprozess/Job)
-s URLSET Angabe der abzufragenden URLs -s URLSET Angabe der abzufragenden URLs
Basisurl wird als positional Argument angegeben. Basisurl wird als positional Argument angegeben.
Beispiel: Beispiel:
$ python bench.py -j 100 -d 50 -r 100 -s projector http://127.0.0.1:8000 $ python bench.py -j 100 -d 50 -r 100 -s projector http://127.0.0.1:8000

View File

@ -18,7 +18,7 @@ except ImportError:
from django.db import models from django.db import models
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _, ugettext_noop from django.utils.translation import ugettext_lazy as _, ugettext_noop, ugettext
from mptt.models import MPTTModel, TreeForeignKey from mptt.models import MPTTModel, TreeForeignKey
@ -67,7 +67,7 @@ class Item(MPTTModel, SlideMixin):
For use in Template For use in Template
??Why does {% trans item.print_related_type|capfirst %} not work?? ??Why does {% trans item.print_related_type|capfirst %} not work??
""" """
return _(self.get_related_type().capitalize()) return ugettext(self.get_related_type().capitalize())
def get_title(self): def get_title(self):
""" """
@ -77,6 +77,18 @@ class Item(MPTTModel, SlideMixin):
return self.title return self.title
return self.get_related_slide().get_agenda_title() return self.get_related_slide().get_agenda_title()
def get_title_supplement(self):
"""
return a supplement for the title.
"""
if self.related_sid is None:
return ''
try:
return self.get_related_slide().get_agenda_title_supplement()
except AttributeError:
return '(%s)' % self.print_related_type()
def slide(self): def slide(self):
""" """
Return a map with all Data for the Slide Return a map with all Data for the Slide

View File

@ -21,16 +21,7 @@
<div class="dragcell"></div> <div class="dragcell"></div>
{% endif %} {% endif %}
<a href="{% model_url item 'view' %}">{{ item }}</a> <a href="{% model_url item 'view' %}">{{ item }}</a>
{% if item.get_related_type == 'application' %} {{ item.get_title_supplement|safe }}
({% trans 'Application' %}
{% if item.get_related_slide.number %}
{{ item.get_related_slide.number }})
{% else %}
<i>[{% trans "no number" %}]</i>)
{% endif %}
{% elif item.related_sid %}
({{ item.print_related_type }})
{% endif %}
</td> </td>
{% if perms.agenda.can_manage_agenda %} {% if perms.agenda.can_manage_agenda %}
<td> <td>

View File

@ -40,16 +40,7 @@
<span class="indentation">&nbsp;</span> <span class="indentation">&nbsp;</span>
{% endfor %} {% endfor %}
<a href="{% model_url item 'view' %}">{{ item }}</a> <a href="{% model_url item 'view' %}">{{ item }}</a>
{% if item.get_related_type == 'application' %} {{ item.get_title_supplement }}
({% trans 'Application' %}
{% if item.get_related_slide.number %}
{{ item.get_related_slide.number }})
{% else %}
<i>[{% trans "no number" %}]</i>)
{% endif %}
{% elif item.related_sid %}
({{ item.print_related_type }})
{% endif %}
</li> </li>
{% empty %} {% empty %}
<li>{% trans 'No items available.' %}</li> <li>{% trans 'No items available.' %}</li>

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
{% load tags %}
<head>
<link type="text/css" rel="stylesheet" href="/static/styles/beamer.css">
<link rel="shortcut icon" href="/static/images/favicon.png" type="image/png" />
<script type="text/javascript" src="/static/javascript/jquery.js"></script>
<script type="text/javascript" src="/static/javascript/beamer.js"></script>
<title>{% block title %} {% get_config 'event_name' %} {% endblock %}</title>
{% block header %}
{% endblock %}
</head>
<body>
<div id="config" style="display:none;">
<div id="ajax">{{ ajax }}</div>
</div>
<div id="ajaxswitcher"></div>
<div id="header">
<div id="logo"><img src="/static/images/logo-beamer.png"></div>
<div class="event_name">{% get_config 'event_name' %}</div>
<div class="event_description">{% get_config 'event_description' %}</div>
</div>
<div id="currentTime">
{% now "H:i" %}
</div>
<div id="countdown">0:00</div>
<div id="content">
{% block content %}
{% endblock %}
</div>
</body>
</html>

View File

@ -18,7 +18,7 @@ from django.db import models
from django.db.models import Max from django.db.models import Max
from django.dispatch import receiver from django.dispatch import receiver
from django.utils.translation import pgettext from django.utils.translation import pgettext
from django.utils.translation import ugettext_lazy as _, ugettext_noop from django.utils.translation import ugettext_lazy as _, ugettext_noop, ugettext
from openslides.utils.utils import _propper_unicode from openslides.utils.utils import _propper_unicode
@ -436,6 +436,10 @@ class Application(models.Model, SlideMixin):
def get_agenda_title(self): def get_agenda_title(self):
return self.public_version.title return self.public_version.title
def get_agenda_title_supplement(self):
number = self.number or '<i>[%s]</i>' % ugettext('no number')
return '(%s %s)' % (ugettext('Application'), number)
def __getattr__(self, name): def __getattr__(self, name):
""" """
if name is title, text, reason or time, if name is title, text, reason or time,

View File

@ -72,7 +72,7 @@ class ConfigForm(forms.Form, CssClassMixin):
required=False, required=False,
label=_("Election method"), label=_("Election method"),
choices=( choices=(
("auto", _("Choose the right method.")), ("auto", _("Automatic assign of method.")),
("votes", _("Always one option per candidate.")), ("votes", _("Always one option per candidate.")),
("yesnoabstain", _("Always Yes-No-Abstain per candidate.")), ("yesnoabstain", _("Always Yes-No-Abstain per candidate.")),
) )

View File

@ -43,7 +43,7 @@ class Assignment(models.Model, SlideMixin):
posts = models.PositiveSmallIntegerField( posts = models.PositiveSmallIntegerField(
verbose_name=_("Number of available posts")) verbose_name=_("Number of available posts"))
polldescription = models.CharField(max_length=100, null=True, blank=True, polldescription = models.CharField(max_length=100, null=True, blank=True,
verbose_name=_("Short description (for ballot paper)")) verbose_name=_("Comment on the ballot paper."))
profile = models.ManyToManyField(Profile, null=True, blank=True) profile = models.ManyToManyField(Profile, null=True, blank=True)
elected = models.ManyToManyField(Profile, null=True, blank=True, elected = models.ManyToManyField(Profile, null=True, blank=True,
related_name='elected_set') related_name='elected_set')

View File

@ -15,7 +15,7 @@ from django.contrib import messages
from django.contrib.auth.models import Group, Permission from django.contrib.auth.models import Group, Permission
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.importlib import import_module from django.utils.importlib import import_module
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext as _
from openslides import get_version from openslides import get_version

View File

@ -1,25 +1,25 @@
Instruction to update translation for OpenSlides: Instruction to update translation for OpenSlides:
------------------------------------------------- -------------------------------------------------
1. Go to the openslides directory (which contains the 'locale' directory): 1. Go to the openslides directory (which contains the 'locale' directory):
$ cd openslides $ cd openslides
2. Update the German po file (locale/de/LC_MESSAGES/django.po): 2. Update the German po file (locale/de/LC_MESSAGES/django.po):
$ django-admin.py makemessages -l de $ django-admin.py makemessages -l de
3. Edit the German po file: locale/de/LC_MESSAGES/django.po 3. Edit the German po file: locale/de/LC_MESSAGES/django.po
(Search for "fuzzy" and empty msgstr entries.) (Search for "fuzzy" and empty msgstr entries.)
4. Update the German mo file (locale/de/LC_MESSAGES/django.mo): 4. Update the German mo file (locale/de/LC_MESSAGES/django.mo):
$ django-admin.py compilemessages $ django-admin.py compilemessages
5. Restart server: 5. Restart server:
$ python manage.py runserver $ python manage.py runserver
-- --
Additional hints for internationalization (i18n) in Django: Additional hints for internationalization (i18n) in Django:
https://docs.djangoproject.com/en/dev/topics/i18n/ https://docs.djangoproject.com/en/dev/topics/i18n/
Note: gettext is required to extract message IDs or compile message files. Note: gettext is required to extract message IDs or compile message files.
For gettext on Windows read: For gettext on Windows read:
https://docs.djangoproject.com/en/dev/topics/i18n/translation/#gettext-on-windows https://docs.djangoproject.com/en/dev/topics/i18n/translation/#gettext-on-windows

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 11:04+0200\n" "POT-Creation-Date: 2012-07-20 11:03+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"
@ -69,8 +69,6 @@ msgstr "Darf die Tagesordung verwalten"
#: agenda/templates/agenda/overview.html:77 #: agenda/templates/agenda/overview.html:77
#: agenda/templates/projector/AgendaSummary.html:6 #: agenda/templates/projector/AgendaSummary.html:6
#: agenda/templates/projector/AgendaSummary.html:10 #: agenda/templates/projector/AgendaSummary.html:10
#: application/templates/projector/overview.html:3
#: application/templates/projector/overview.html:10
msgid "Agenda" msgid "Agenda"
msgstr "Tagesordnung" msgstr "Tagesordnung"
@ -107,9 +105,6 @@ msgstr "Eintrag %s wurde erfolgreich gelöscht."
#: application/views.py:487 application/views.py:809 application/views.py:860 #: application/views.py:487 application/views.py:809 application/views.py:860
#: application/templates/application/view.html:82 #: application/templates/application/view.html:82
#: application/templates/projector/Application.html:37 #: application/templates/projector/Application.html:37
#: application/templates/projector/ItemApplication.html:30
#: application/templates/projector/ItemAssignment.html:67
#: application/templates/projector/ItemAssignment.html:71
#: assignment/models.py:240 assignment/views.py:557 #: assignment/models.py:240 assignment/views.py:557
#: assignment/templates/assignment/view.html:158 #: assignment/templates/assignment/view.html:158
#: assignment/templates/assignment/view.html:162 #: assignment/templates/assignment/view.html:162
@ -124,8 +119,6 @@ msgstr "Ja"
#: application/views.py:487 application/views.py:809 application/views.py:861 #: application/views.py:487 application/views.py:809 application/views.py:861
#: application/templates/application/view.html:83 #: application/templates/application/view.html:83
#: application/templates/projector/Application.html:38 #: application/templates/projector/Application.html:38
#: application/templates/projector/ItemApplication.html:31
#: application/templates/projector/ItemAssignment.html:68
#: assignment/models.py:240 assignment/views.py:558 #: assignment/models.py:240 assignment/views.py:558
#: assignment/templates/assignment/view.html:159 #: assignment/templates/assignment/view.html:159
#: assignment/templates/projector/Assignment.html:79 utils/utils.py:53 #: assignment/templates/projector/Assignment.html:79 utils/utils.py:53
@ -156,22 +149,28 @@ 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:26 #: agenda/templates/agenda/base_agenda.html:19
#: 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:31 #: agenda/templates/agenda/base_agenda.html:36
#: 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:33 #: agenda/templates/agenda/base_agenda.html:38
#: 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:38 #: agenda/templates/agenda/base_agenda.html:43
msgid "Show item" msgid "Show item"
msgstr "Eintrag projizieren" msgstr "Eintrag projizieren"
@ -349,7 +348,6 @@ msgstr "Bearbeiten"
#: application/templates/application/view.html:232 #: application/templates/application/view.html:232
#: application/templates/application/view.html:252 #: application/templates/application/view.html:252
#: application/templates/projector/Application.html:77 #: application/templates/projector/Application.html:77
#: application/templates/projector/ItemApplication.html:56
msgid "Reason" msgid "Reason"
msgstr "Begründung" msgstr "Begründung"
@ -365,7 +363,6 @@ msgstr "Triviale Änderungen erzeugen keine neue Version."
#: application/templates/application/overview.html:41 #: application/templates/application/overview.html:41
#: application/templates/application/view.html:18 #: application/templates/application/view.html:18
#: application/templates/projector/Application.html:55 #: application/templates/projector/Application.html:55
#: application/templates/projector/ItemApplication.html:19
msgid "Submitter" msgid "Submitter"
msgstr "Antragsteller/in" msgstr "Antragsteller/in"
@ -486,7 +483,7 @@ msgstr "Version %d zugelassen"
#: application/models.py:109 #: application/models.py:109
#, python-format #, python-format
msgctxt "Rejected meens not permittd" msgctxt "Rejected means not permitted"
msgid "Version %d rejected" msgid "Version %d rejected"
msgstr "Version %d verworfen" msgstr "Version %d verworfen"
@ -735,10 +732,9 @@ 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 superuser (without user profile) " "The import function is available for the admin (without user profile) only."
"only."
msgstr "" msgstr ""
"Die Importfunktion ist nur für den 'superuser' (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
@ -802,7 +798,6 @@ msgstr "Keine Anträge vorhanden."
#: application/views.py:738 #: application/views.py:738
#: application/templates/application/base_application.html:24 #: application/templates/application/base_application.html:24
#: application/templates/projector/Application.html:63 #: application/templates/projector/Application.html:63
#: application/templates/projector/ItemApplication.html:50
msgid "Application No." msgid "Application No."
msgstr "Antrag Nr." msgstr "Antrag Nr."
@ -810,8 +805,6 @@ msgstr "Antrag Nr."
#: application/templates/application/overview.html:40 #: application/templates/application/overview.html:40
#: application/templates/application/view.html:37 #: application/templates/application/view.html:37
#: application/templates/projector/Application.html:11 #: application/templates/projector/Application.html:11
#: application/templates/projector/ItemApplication.html:8
#: application/templates/projector/ItemAssignment.html:13
#: assignment/templates/assignment/overview.html:14 #: assignment/templates/assignment/overview.html:14
#: assignment/templates/assignment/overview.html:27 #: assignment/templates/assignment/overview.html:27
#: assignment/templates/assignment/view.html:11 #: assignment/templates/assignment/view.html:11
@ -821,7 +814,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:133 #: application/templates/application/view.html:247 config/models.py:131
#: 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
@ -840,24 +833,19 @@ msgstr "Abstimmungsergebnis"
#: application/templates/application/view.html:69 #: application/templates/application/view.html:69
#: application/templates/application/view.html:77 #: application/templates/application/view.html:77
#: application/templates/projector/Application.html:33 #: application/templates/projector/Application.html:33
#: application/templates/projector/ItemApplication.html:27
msgid "Vote" msgid "Vote"
msgstr "Abstimmung" msgstr "Abstimmung"
#: application/views.py:809 application/views.py:862 #: application/views.py:809 application/views.py:862
#: application/templates/application/view.html:84 #: application/templates/application/view.html:84
#: application/templates/projector/Application.html:39 #: application/templates/projector/Application.html:39 assignment/views.py:558
#: application/templates/projector/ItemApplication.html:32 #: assignment/templates/assignment/view.html:160
#: application/templates/projector/ItemAssignment.html:69
#: assignment/views.py:558 assignment/templates/assignment/view.html:160
#: assignment/templates/projector/Assignment.html:80 #: assignment/templates/projector/Assignment.html:80
msgid "Abstention" msgid "Abstention"
msgstr "Enthaltung" msgstr "Enthaltung"
#: application/views.py:809 application/templates/application/view.html:85 #: application/views.py:809 application/templates/application/view.html:85
#: application/templates/projector/Application.html:40 #: application/templates/projector/Application.html:40
#: application/templates/projector/ItemApplication.html:33
#: application/templates/projector/ItemAssignment.html:88
#: assignment/templates/assignment/view.html:182 #: assignment/templates/assignment/view.html:182
#: assignment/templates/projector/Assignment.html:101 #: assignment/templates/projector/Assignment.html:101
msgid "Invalid" msgid "Invalid"
@ -866,11 +854,8 @@ msgstr "Ungültig"
#: application/views.py:809 #: application/views.py:809
#: application/templates/application/poll_view.html:35 #: application/templates/application/poll_view.html:35
#: application/templates/application/view.html:87 #: application/templates/application/view.html:87
#: application/templates/projector/Application.html:42 #: application/templates/projector/Application.html:42 assignment/views.py:442
#: application/templates/projector/ItemApplication.html:35 #: assignment/templates/assignment/poll_view.html:45
#: application/templates/projector/ItemAssignment.html:93
#: application/templates/projector/ItemAssignment.html:96
#: assignment/views.py:442 assignment/templates/assignment/poll_view.html:45
#: assignment/templates/assignment/view.html:194 #: assignment/templates/assignment/view.html:194
#: assignment/templates/assignment/view.html:199 #: assignment/templates/assignment/view.html:199
#: assignment/templates/projector/Assignment.html:111 #: assignment/templates/projector/Assignment.html:111
@ -1047,9 +1032,8 @@ msgstr "Wahlmöglichkeit"
msgid "Votes" msgid "Votes"
msgstr "Stimmen" msgstr "Stimmen"
#: application/templates/application/poll_view.html:31 #: application/templates/application/poll_view.html:31 assignment/views.py:435
#: application/templates/projector/ItemAssignment.html:85 #: assignment/templates/assignment/poll_view.html:35
#: assignment/views.py:435 assignment/templates/assignment/poll_view.html:35
#: assignment/templates/assignment/view.html:177 #: assignment/templates/assignment/view.html:177
#: assignment/templates/projector/Assignment.html:97 #: assignment/templates/projector/Assignment.html:97
msgid "Invalid votes" msgid "Invalid votes"
@ -1189,83 +1173,19 @@ msgid "Log"
msgstr "Log" msgstr "Log"
#: application/templates/projector/Application.html:29 #: application/templates/projector/Application.html:29
#: application/templates/projector/ItemApplication.html:23
msgid "Poll result" msgid "Poll result"
msgstr "Abstimmungsergebnis" msgstr "Abstimmungsergebnis"
#: application/templates/projector/Application.html:47 #: application/templates/projector/Application.html:47
#: application/templates/projector/ItemApplication.html:41
msgid "No poll results available." msgid "No poll results available."
msgstr "Keine Abstimmungen vorhanden." msgstr "Keine Abstimmungen vorhanden."
#: application/templates/projector/ItemAssignment.html:8
#: assignment/views.py:501 assignment/views.py:517
#: assignment/templates/assignment/overview.html:25
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/view.html:6
#: assignment/templates/projector/Assignment.html:27
msgid "Election"
msgstr "Wahl"
#: application/templates/projector/ItemAssignment.html:16
#: assignment/forms.py:24 assignment/models.py:44 assignment/views.py:364 #: assignment/forms.py:24 assignment/models.py:44 assignment/views.py:364
#: assignment/templates/assignment/view.html:13 #: assignment/templates/assignment/view.html:13
#: assignment/templates/projector/Assignment.html:21 #: assignment/templates/projector/Assignment.html:21
msgid "Number of available posts" msgid "Number of available posts"
msgstr "Anzahl der zur Wahl stehenden Posten" msgstr "Anzahl der zur Wahl stehenden Posten"
#: application/templates/projector/ItemAssignment.html:30
#: application/templates/projector/ItemAssignment.html:48
#: assignment/views.py:370 assignment/views.py:403
#: assignment/templates/assignment/overview.html:26
#: assignment/templates/assignment/poll_view.html:18
#: assignment/templates/assignment/view.html:36
#: assignment/templates/assignment/view.html:110
#: assignment/templates/projector/Assignment.html:38
#: assignment/templates/projector/Assignment.html:56
msgid "Candidates"
msgstr "Kandidaten/innen"
#: application/templates/projector/ItemAssignment.html:36
#: assignment/templates/assignment/view.html:47
#: assignment/templates/projector/Assignment.html:44
msgid "No candidates available."
msgstr "Keine Kandidaten/innen vorhanden."
#: application/templates/projector/ItemAssignment.html:45
#: assignment/templates/assignment/view.html:95
#: assignment/templates/projector/Assignment.html:52
msgid "Election results"
msgstr "Wahlergebnisse"
#: application/templates/projector/ItemAssignment.html:51
#: assignment/views.py:395
#: assignment/templates/assignment/base_assignment.html:71
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/poll_view.html:8
#: assignment/templates/assignment/view.html:104
#: assignment/templates/assignment/view.html:113
#: assignment/templates/projector/Assignment.html:59
msgid "ballot"
msgstr "Wahlgang"
#: application/templates/projector/ItemAssignment.html:60
#: assignment/templates/assignment/view.html:145
#: assignment/templates/projector/Assignment.html:69
msgid "Candidate is elected"
msgstr "Kandidat/in ist gewählt"
#: application/templates/projector/ItemAssignment.html:81
#: assignment/templates/assignment/view.html:213
#: assignment/templates/projector/Assignment.html:126
msgid "No ballots available."
msgstr "Keine Wahlgänge vorhanden."
#: application/templates/projector/ItemPoll.html:4
#, fuzzy
msgid "Poll about"
msgstr "Abstimmungsergebnis"
#: assignment/forms.py:35 #: assignment/forms.py:35
msgid "Nominate a participant" msgid "Nominate a participant"
msgstr "Teilnehmer/in vorschlagen" msgstr "Teilnehmer/in vorschlagen"
@ -1288,8 +1208,8 @@ msgid "Election method"
msgstr "Wahlmethode" msgstr "Wahlmethode"
#: assignment/forms.py:75 #: assignment/forms.py:75
msgid "Choose the right method." msgid "Automatic assign of method."
msgstr "Wähle die passende Methode." msgstr "Automatische Zuordnung der Methode."
#: assignment/forms.py:76 #: assignment/forms.py:76
msgid "Always one option per candidate." msgid "Always one option per candidate."
@ -1467,6 +1387,26 @@ msgstr "Keine Wahlen vorhanden."
msgid "Election: %s" msgid "Election: %s"
msgstr "Wahlen: %s" msgstr "Wahlen: %s"
#: assignment/views.py:370 assignment/views.py:403
#: assignment/templates/assignment/overview.html:26
#: assignment/templates/assignment/poll_view.html:18
#: assignment/templates/assignment/view.html:36
#: assignment/templates/assignment/view.html:110
#: assignment/templates/projector/Assignment.html:38
#: assignment/templates/projector/Assignment.html:56
msgid "Candidates"
msgstr "Kandidaten/innen"
#: assignment/views.py:395
#: assignment/templates/assignment/base_assignment.html:71
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/poll_view.html:8
#: assignment/templates/assignment/view.html:104
#: assignment/templates/assignment/view.html:113
#: assignment/templates/projector/Assignment.html:59
msgid "ballot"
msgstr "Wahlgang"
#: assignment/views.py:398 #: assignment/views.py:398
msgid "ballots" msgid "ballots"
msgstr "Wahlgänge" msgstr "Wahlgänge"
@ -1482,6 +1422,14 @@ msgstr ""
"N: %(NO)s\n" "N: %(NO)s\n"
"E: %(ABSTAIN)s" "E: %(ABSTAIN)s"
#: assignment/views.py:501 assignment/views.py:517
#: assignment/templates/assignment/overview.html:25
#: assignment/templates/assignment/poll_view.html:5
#: assignment/templates/assignment/view.html:6
#: assignment/templates/projector/Assignment.html:27
msgid "Election"
msgstr "Wahl"
#: assignment/views.py:523 #: assignment/views.py:523
#, python-format #, python-format
msgid "%d. ballot" msgid "%d. ballot"
@ -1569,6 +1517,11 @@ msgstr "Status ändern"
msgid "Remove candidate" msgid "Remove candidate"
msgstr "Kandidate/in entfernen" msgstr "Kandidate/in entfernen"
#: assignment/templates/assignment/view.html:47
#: assignment/templates/projector/Assignment.html:44
msgid "No candidates available."
msgstr "Keine Kandidaten/innen vorhanden."
#: assignment/templates/assignment/view.html:60 #: assignment/templates/assignment/view.html:60
msgid "Withdraw self candidature" msgid "Withdraw self candidature"
msgstr "Eigene Kandidatur zurückziehen" msgstr "Eigene Kandidatur zurückziehen"
@ -1581,6 +1534,11 @@ msgstr "Selbst kandidieren"
msgid "Add new participant" msgid "Add new participant"
msgstr "Neue/n Teilnehmer/in hinzufügen" msgstr "Neue/n Teilnehmer/in hinzufügen"
#: assignment/templates/assignment/view.html:95
#: assignment/templates/projector/Assignment.html:52
msgid "Election results"
msgstr "Wahlergebnisse"
#: assignment/templates/assignment/view.html:118 #: assignment/templates/assignment/view.html:118
msgid "Publish/unpublish results" msgid "Publish/unpublish results"
msgstr "Ergebnisse veröffentlichen/unveröffentlichen" msgstr "Ergebnisse veröffentlichen/unveröffentlichen"
@ -1590,11 +1548,21 @@ msgstr "Ergebnisse veröffentlichen/unveröffentlichen"
msgid "New ballot" msgid "New ballot"
msgstr "Neuer Wahlgang" msgstr "Neuer Wahlgang"
#: assignment/templates/assignment/view.html:145
#: assignment/templates/projector/Assignment.html:69
msgid "Candidate is elected"
msgstr "Kandidat/in ist gewählt"
#: assignment/templates/assignment/view.html:164 #: assignment/templates/assignment/view.html:164
#: assignment/templates/projector/Assignment.html:84 #: assignment/templates/projector/Assignment.html:84
msgid "was not a <br> candidate" msgid "was not a <br> candidate"
msgstr "war kein Kandidat" msgstr "war kein Kandidat"
#: assignment/templates/assignment/view.html:213
#: assignment/templates/projector/Assignment.html:126
msgid "No ballots available."
msgstr "Keine Wahlgänge vorhanden."
#: config/forms.py:24 #: config/forms.py:24
msgid "Event name" msgid "Event name"
msgstr "Veranstaltungsname" msgstr "Veranstaltungsname"
@ -1756,7 +1724,7 @@ msgstr "Mitarbeiter"
msgid "Guest" msgid "Guest"
msgstr "Gast" msgstr "Gast"
#: participant/models.py:39 participant/views.py:605 #: participant/models.py:39 participant/views.py:609
#: 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 +1746,7 @@ msgstr "Nur zum Filtern der Benutzerliste."
msgid "Typ" msgid "Typ"
msgstr "Typ" msgstr "Typ"
#: participant/models.py:46 participant/views.py:606 #: participant/models.py:46 participant/views.py:610
#: 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"
@ -1929,13 +1897,20 @@ msgstr "Das Passwort für <b>%s</b> wurde erfolgreich zurückgesetzt."
msgid "Do you really want to reset the password for <b>%s</b>?" 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?" msgstr "Soll das Passwort für <b>%s</b> wirklich zurückgesetzt werden?"
#: participant/views.py:571 #: participant/views.py:573
#, python-format #, python-format
msgid "The password for the user %(user)s is %(password)s. Please change it" msgid ""
"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 ""
"Das Passwort für den Benutzer %(user)s ist %(password)s. Bitte ändere es" "Die Installation war erfolgreich! Verwende %(user)s (passwort: %(password)s) "
"für die erste Anmeldung.<br><strong>Wichtig:</strong> Ändere das Passwort "
"nach der ersten Anmeldung! Anderenfalls erscheint diese Meldung weiterhin "
"für jeden und ist ein sicherheitsrisiko."
#: participant/views.py:588 #: participant/views.py:592
#: 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
@ -1943,56 +1918,56 @@ msgstr ""
msgid "Participants" msgid "Participants"
msgstr "Teilnehmer/innen" msgstr "Teilnehmer/innen"
#: participant/views.py:601 #: participant/views.py:605
msgid "Participant-list" msgid "Participant-list"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:602 #: participant/views.py:606
msgid "List of Participants" msgid "List of Participants"
msgstr "Teilnehmerliste" msgstr "Teilnehmerliste"
#: participant/views.py:605 participant/templates/participant/overview.html:66 #: participant/views.py:609 participant/templates/participant/overview.html:66
msgid "Last Name" msgid "Last Name"
msgstr "Nachname" msgstr "Nachname"
#: participant/views.py:605 participant/templates/participant/overview.html:65 #: participant/views.py:609 participant/templates/participant/overview.html:65
msgid "First Name" msgid "First Name"
msgstr "Vorname" msgstr "Vorname"
#: participant/views.py:605 participant/templates/participant/overview.html:36 #: participant/views.py:609 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:642 #: participant/views.py:646
msgid "Participant-passwords" msgid "Participant-passwords"
msgstr "Teilnehmer-Passwoerter" msgstr "Teilnehmer-Passwoerter"
#: participant/views.py:661 #: participant/views.py:665
msgid "Account for OpenSlides" msgid "Account for OpenSlides"
msgstr "Zugang für OpenSlides" msgstr "Zugang für OpenSlides"
#: participant/views.py:663 #: participant/views.py:667
#, python-format #, python-format
msgid "for %s" msgid "for %s"
msgstr "für %s" msgstr "für %s"
#: participant/views.py:666 #: participant/views.py:670
#, python-format #, python-format
msgid "User: %s" msgid "User: %s"
msgstr "Nutzername: %s" msgstr "Nutzername: %s"
#: participant/views.py:668 #: participant/views.py:672
#, python-format #, python-format
msgid "Password: %s" msgid "Password: %s"
msgstr "Passwort: %s" msgstr "Passwort: %s"
#: participant/views.py:671 #: participant/views.py:675
#, python-format #, python-format
msgid "URL: %s" msgid "URL: %s"
msgstr "URL: %s" msgstr "URL: %s"
#: participant/views.py:716 #: participant/views.py:720
msgid "Participants settings successfully saved." msgid "Participants settings successfully saved."
msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert." msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert."
@ -2180,11 +2155,6 @@ 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

@ -34,7 +34,7 @@ from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.views import login as django_login from django.contrib.auth.views import login as django_login
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.translation import ugettext as _, ungettext from django.utils.translation import ugettext as _, ungettext, ugettext_lazy
from openslides.utils import csv_ext from openslides.utils import csv_ext
from openslides.utils.pdf import stylesheet from openslides.utils.pdf import stylesheet
@ -94,7 +94,7 @@ def get_overview(request):
elif sortfilter['sort'][0] in ['group', 'type', 'committee', 'comment']: elif sortfilter['sort'][0] in ['group', 'type', 'committee', 'comment']:
query = query.order_by('profile__%s' % sortfilter['sort'][0]) query = query.order_by('profile__%s' % sortfilter['sort'][0])
else: else:
query = query.order_by('first_name') query = query.order_by('last_name')
if 'reverse' in sortfilter: if 'reverse' in sortfilter:
query = query.reverse() query = query.reverse()
@ -603,7 +603,7 @@ class ParticipantsListPDF(PDFView):
""" """
permission_required = 'participant.can_see_participant' permission_required = 'participant.can_see_participant'
filename = _("Participant-list") filename = _("Participant-list")
document_title = _('List of Participants') document_title = ugettext_lazy('List of Participants')
def append_to_pdf(self, story): def append_to_pdf(self, story):
data= [['#', _('Last Name'), _('First Name'), _('Group'), _('Type'), data= [['#', _('Last Name'), _('First Name'), _('Group'), _('Type'),

View File

@ -267,7 +267,7 @@ class PDFView(PermissionMixin, View):
return self.top_space return self.top_space
def get_document_title(self): def get_document_title(self):
return self.document_title return unicode(self.document_title)
def get_filename(self): def get_filename(self):
return self.filename return self.filename