From fa9874038e6f6e0cb8e6b59b6d586224949cab28 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Thu, 20 Sep 2012 20:45:37 +0200 Subject: [PATCH 01/13] New welcome widget. --- .../templates/projector/welcome_widget.html | 13 ++++++++++++ openslides/projector/views.py | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 openslides/projector/templates/projector/welcome_widget.html diff --git a/openslides/projector/templates/projector/welcome_widget.html b/openslides/projector/templates/projector/welcome_widget.html new file mode 100644 index 000000000..95a9c4376 --- /dev/null +++ b/openslides/projector/templates/projector/welcome_widget.html @@ -0,0 +1,13 @@ +{% load i18n %} +{% load tags %} + +{% if welcometext %} +

{{ welcometext|safe|linebreaks }}

+{% endif %} + +

{% trans "You have access to the following pages:" %}

+ diff --git a/openslides/projector/views.py b/openslides/projector/views.py index 862044b97..fb3428141 100644 --- a/openslides/projector/views.py +++ b/openslides/projector/views.py @@ -371,6 +371,27 @@ def get_widgets(request): """ widgets = [] + # welcome widget + apps = [] + for app in settings.INSTALLED_APPS: + try: + mod = import_module(app + '.views') + tab = mod.register_tab(request) + except (ImportError, AttributeError): + continue + if tab.permission: + apps.append(tab) + context = { + 'apps': apps, + 'welcometext': config['frontpage_welcometext']} + widgets.append(Widget( + name='welcome', + display_name=config['frontpage_title'], + template='projector/welcome_widget.html', + context=context, + permission_required='projector.can_see_dashboard', + default_column=1)) + # Projector live view widget widgets.append(Widget( name='live_view', From 51a762b4c64d1a85b7b3af286c96e768580a392f Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 20:05:54 +0100 Subject: [PATCH 02/13] Prepared 1.3-beta1 release. --- INSTALL.txt | 13 ++++++------- README.txt | 19 ++++++++++++++----- openslides/__init__.py | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/INSTALL.txt b/INSTALL.txt index d27c338ed..b1a15f014 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -1,4 +1,4 @@ -Installation Instructions for OpenSlides 1.2 +Installation Instructions for OpenSlides 1.3 ============================================ Content @@ -48,7 +48,7 @@ I. Installation on Windows (32/64bit) easy_install django django-mptt reportlab pil If you use a 64bit version of Python, you have to install reportlab - and pil not by using easy_install but manually. + and PIL manually - without using easy_install. 2. Get OpenSlides: @@ -56,13 +56,12 @@ I. Installation on Windows (32/64bit) OR - b) Clone development version from mercurial repository - http://hg.openslides.org. This requires Mercurial source control - management (hg), see http://mercurial.selenic.com. - + b) Clone development version from OpenSlides' github repository + https://github.com/OpenSlides/OpenSlides. + This requires Git, see http://git-scm.com/. Open command line (cmd) and run: - hg clone http://hg.openslides.org OpenSlides + git clone git://github.com/OpenSlides/OpenSlides.git 3. Start OpenSlides server and open URL in your default browser: diff --git a/README.txt b/README.txt index 3d7096b1d..2f82dd045 100644 --- a/README.txt +++ b/README.txt @@ -2,7 +2,7 @@ English README file for OpenSlides ================================== -This is OpenSlides, version 1.2 (2012-07-25). +This is OpenSlides, version 1.3-beta1 (2012-10-30). What is OpenSlides? @@ -47,17 +47,27 @@ Command line options -------------------- The following command line options are available: +-h, --help + Shows all options + -a, --address=ADDRESS Changes the address on which the server will listen for connections --p, --port +-p PORT, --port=PORT Changes the port on which the server will listen for connections --syncdb - Create/ update the database + Creates/updates database before starting the server --reset-admin - This will reset the password of the user + Resets the password to 'admin' for user 'admin' + +-s SETTINGS, --settings=SETTINGS + Sets the path to the settings file. + +--no-reload + Does not reload the development server + Example 1: Openslides should only be accessible on this computer: openslides.exe -a 127.0.0.1 @@ -82,4 +92,3 @@ Browsers: IE 7+ Chrome Safari - diff --git a/openslides/__init__.py b/openslides/__init__.py index 17d119cf0..0fd7c9fdd 100644 --- a/openslides/__init__.py +++ b/openslides/__init__.py @@ -5,7 +5,7 @@ :license: GNU GPL, see LICENSE for more details. """ -VERSION = (1, 3, 0, 'alpha', 1) +VERSION = (1, 3, 0, 'beta', 1) def get_version(version=None): From d9fbfeff84b9f8ac40259ea5d47ac177836a73f0 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 20:18:16 +0100 Subject: [PATCH 03/13] for pull request #23: Removed "You have access to apps" code from welcome widget. --- .../projector/templates/projector/welcome_widget.html | 7 ------- openslides/projector/views.py | 10 ---------- 2 files changed, 17 deletions(-) diff --git a/openslides/projector/templates/projector/welcome_widget.html b/openslides/projector/templates/projector/welcome_widget.html index 95a9c4376..68461cacb 100644 --- a/openslides/projector/templates/projector/welcome_widget.html +++ b/openslides/projector/templates/projector/welcome_widget.html @@ -4,10 +4,3 @@ {% if welcometext %}

{{ welcometext|safe|linebreaks }}

{% endif %} - -

{% trans "You have access to the following pages:" %}

- diff --git a/openslides/projector/views.py b/openslides/projector/views.py index bb71580b4..7d9eea304 100644 --- a/openslides/projector/views.py +++ b/openslides/projector/views.py @@ -390,17 +390,7 @@ def get_widgets(request): widgets = [] # welcome widget - apps = [] - for app in settings.INSTALLED_APPS: - try: - mod = import_module(app + '.views') - tab = mod.register_tab(request) - except (ImportError, AttributeError): - continue - if tab.permission: - apps.append(tab) context = { - 'apps': apps, 'welcometext': config['frontpage_welcometext']} widgets.append(Widget( name='welcome', From 053c3be030a1789a86e5e38f8bf507d32fb65de8 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 20:48:58 +0100 Subject: [PATCH 04/13] Added Mac OS X specific file .DS_Store to .gitignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c17fd65ee..6fa3cff77 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ docs/_build/* *.egg-info build/* dist/* +.DS_Store From f62b7f299b041852f252b0ac91e83a7d2f7fd17d Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 21:02:39 +0100 Subject: [PATCH 05/13] Changed admin full name to "Adminstrator". --- openslides/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openslides/main.py b/openslides/main.py index 17d682eb8..4844b752a 100644 --- a/openslides/main.py +++ b/openslides/main.py @@ -223,7 +223,7 @@ def create_or_reset_admin_user(): except User.DoesNotExist: admin = User() admin.username = 'admin' - admin.last_name = 'Admin User' + admin.last_name = 'Administrator' print("Created default admin user") admin.is_superuser = True From 85771c4af63671c1048b3d5fb0eb5d43941ff3db Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 22:05:03 +0100 Subject: [PATCH 06/13] Fixed participant CSV import. --- openslides/participant/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openslides/participant/api.py b/openslides/participant/api.py index 3e5856391..9454cae67 100644 --- a/openslides/participant/api.py +++ b/openslides/participant/api.py @@ -71,7 +71,7 @@ def import_users(csv_file): dialect=dialect)): if line_no: try: - (first_name, last_name, gender, category, type, committee, comment) = line[:7] + (first_name, last_name, gender, detail, type, committee, comment) = line[:7] except ValueError: error_messages.append(_('Ignoring malformed line %d in import file.') % line_no + 1) continue @@ -80,7 +80,7 @@ def import_users(csv_file): user.first_name = first_name user.username = gen_username(first_name, last_name) user.gender = gender - user.category = category + user.detail = detail user.type = type user.committee = committee user.comment = comment From 145a52eb24cb102f77551f6a6ca3dec848315a09 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 22:16:43 +0100 Subject: [PATCH 07/13] Updated translations. --- openslides/config/models.py | 6 +- openslides/locale/de/LC_MESSAGES/django.mo | Bin 33310 -> 33979 bytes openslides/locale/de/LC_MESSAGES/django.po | 328 ++++++++++----------- openslides/participant/forms.py | 4 +- openslides/participant/models.py | 12 +- 5 files changed, 173 insertions(+), 177 deletions(-) diff --git a/openslides/config/models.py b/openslides/config/models.py index b4cc915c0..51a3958ae 100644 --- a/openslides/config/models.py +++ b/openslides/config/models.py @@ -81,13 +81,13 @@ def default_config(sender, key, **kwargs): return { 'event_name': 'OpenSlides', 'event_description': - _('Presentation system for agenda, motions and elections'), + _('Presentation and assembly system'), 'event_date': '', 'event_location': '', 'event_organizer': '', 'presentation': '', - 'frontpage_title': _('Welcome'), - 'frontpage_welcometext': _('Welcome to OpenSlides!'), + 'frontpage_title': _('Welcome to OpenSlides'), + 'frontpage_welcometext': _('[Place for your welcome text.]'), 'show_help_text': True, 'help_text': _("Get professional support for OpenSlides on %s.") % " \ diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index e19b0ca62a4a1bf89fd7a53cd16b6d2532f7985e..736f08d75c4f1c40b0328818ff420aa2e9e16df0 100644 GIT binary patch delta 10748 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 delta 10273 zcmZwL2Y3}#-pBE|X{10xPXYvPLI{vfXab=}dJ;NF56Mk~B$6UhuT()maIe6Ehzi)~ zdO-yON)dFeSXNPrtE}i+a6v(^@P2=p!~5{~zVkf)eE#RmnVB>HbLQgiq2)fC7yG!+ z*Y{g%ahz~iRx?ZwwXDfLmNh{Qj!#=zRv4ba`uHt2!QXK(hR50FVhZg&#tRroJFK;3 z1!DxZ#FnW0^v6ica$Dm_^sGwbBN#<{H%8;z$g`{;u{}0yV_CIu0P4m=Q4boAjWG{( zeh${dMOX*dqF!VxHb*Z8@OHS=W{jO$PjcnTNdE$6gYZLCrO%;W_$InliqIr`0!hX!)EksxATBiR6{wPKM!msa zjKGuT`~}n!TrvGY$@TaQDLr9+$MCaPpUsrH&RN0lxa zb>q8G73gQ$V~zQ!N>*ZR^q{VL66@l2R3#6go_7MZlyA97!bm~c99u&udX$_OG4;G@{YzMZ+gV+GSL@mKJyo$F_6TI5le)Hc@6A8J?eoiD(WUD#4 z^%FasL{?%9u0yT$0j#MEYDwP5hWHt(QkT&eL%P^+7>1g7Bh(8uLp?YeRml`{zBlSc z2XvwSdO(F4IN!JuwI?>B*6xV$UDJOaBk1>`JSu%t)E?=Dx-Jv-LNkmWR7LiqCUzKg z-(y{=zb^d1bX-79=rZcYH&N$X@D0UbBC6CQP~#?`#ucD$xDr*VO{k@M1~q;^sfWgHqp=B2H$I5E!4}lGYHWKdwKuMrc5rw5 ztBJs-^e3RsyZe)9&Bh}e-kOT~>0FO`;2zY2{(&m(MbrZWd)RLng?ht8jKYqnN{qmM zn2WmqcGS2Rj0ce=aa+epbirGwP4~I+66!%$QJ-00PrDM4s3l3kwwR9ET>01>?>Fby zqaM5sYrY!P(i}ABPhdTL|EEc`S-wJT4*y>E1A>j=sENg*9*~NfP&Vp2pMr_F8u@aq zYSd=Cg6hACy1sR9djjoIrSFcRJl`5dq6?;=N?nMW=|a>StVF$m2UWr?sBt^69lnm5 z&~?-U1N&H3DR#u&xDE9KG@`Fv>3dL>Ekd`}dOnF}v<_9u?Wjsrqn73<>H()w6ZsOg zS^tZgNN|Sz6~v;JWFTr>1?swms3r5DzM3bI-zaNG2KA36`H~K8wpw@FrHVoA;$&1M z(vAHvf%Z_;1m>b1v=;qw8*0MaQI$Jr+DB1e(P`B9OQ`!^yPNu}^xCRA5oioY%`^`6 zk4-xazzowr82xCEMpa-uYGPHWi9LmSv4hwOFJKJ%_vfErY=cf*=q71NvK3q4Db$TG zp+A0)ad-uF!^i>lM0=nfn2CdM7W(1|)b(#*Eqn*{rXQp3e*yJkw@?*!2M@GM9)Zzx z#9|=!LrowXb)!+J5>7N$penN*Re?>YAC{MlAE1`vN7T4KQG1~tv(hx&Yd2HP(fjgk8P z<4J-!k%9UevTIK8n~vHO3s6h6236vHsLlEc>T~-LwKUccejA__>X&ddw#G{2SJ>Kw z33vwEqJJiBo^Pd)6ybR6iLayH#6QcPX&uxXH%9eGp%1n)?KY?qr=rI7MZM4<)KZQ@ zEzKlzel}8iYXQ1LNLG;OhU-zgcO&XTFKS>l*2a^j{UPds=S=@ksHOS?b-i!4WtBVl z_aC(fRu8rJ&J(DwU_TDWPlr-}aw}n&W$_;=)?8Et_F*XgjC!yyqgB$nsLhsa+5=E) znvX4T2|DpFdU80+FHY=E1wKE8-4_&Vy1 ze?ceyhFY3tBkjEri<)>()KBdY)Dq;NDn1Vz;Bq&K-t=*-gF8{5*+Jv`sDWRj-smQ( z5-msBKPw@ zk3-#XKB~kIp(eB)6YvNo;eSxOJ%XP%y=gDh-kE^96EBG034d>A9}tnnAr_|Wn8MB=d%?GD%jr(uM?|Lr7N z>*J`U_^9Rt|2=?BX#bAwF?@o3elTh;j6*G13F=MfpeC{eHIZ$o-;2YjaYs>K!+XXH z7|HXk%Ovp_G||4W1L}sEs8WqVEkOxtbIwA&`9jo<*I{GahI)}hs0Y1m`p=>^<5koi zuqN66+p!k9Rr0PR`urwhJ6wxh@Dz4K$7I$MyQ3yBALH;r)Lz+*n&<(nc|%kME}$y) zD{9F?rr7;a#!geHzjkLf9okGIQ8Rr2^~S4EOR@oVqvtRU523z>A2AxkbL@$9LA_xH zYNCTt4<3n{U_R+9Q<&&>=}mV+og&&c0i5mk3BFO z*c_K)06vXL zxD)l}pP`oG->AKE6*Uo`LVGC_P;1{EJK_jziOVrT-~TQWt??O*#jnkPkRp3v3I^&z z^uq}lg*m7Rx>3IqYfux|fx6E@48jYjl7EYuXjrlRyeMqL^R0N2hByL)u@JROD^Mj{ zin_r%)C8(gB|M5v@eD@eFQ|!xPqWXbVI=KAsPlQKi7&+#xDDOfg(pZf@EmG}*HJg} zpKedUi7H_#s&xHOUrRA+NfuxqT!y;eTc`(JL{-A4#J;XIYAFY!Ua+`?`UjKDqeHuS z8S3-ffrIccs>Fe%_QWDl<6EPaBn>sOZszakohg#CFO#4@CO}qBJc4azX zD(&HJlPp60)b2w)_$O?OH!uua&agLAd(?!xqbfBL>ta48<4n}}XD|d`!g_cNwHZG` z?V0na7jWMs(G44w+yBZXBGs{`;BkBp>!7E?-c(PaHqQa$8Pwjnf%-vdP-#CX71i#F z+7n|?oAzF8fXnQ*+uB6ZosNB&fmg6TcCNA=gj$k`#$wd?nW)XUAGLSRnDf7*DiU;` z{h%hO>yuFx?uPmrW@4DW{|zK6)$>>n_oLSM6zWFrqIUBIbN&z0A2!pjj1wDiKG~Ro zdc$$3>q=4gTZ!639@J;N8N+$LwUwk39zwm*71Zu+e82r)Kpj#2Q!x*hVjKJpwW%7; zvMZ2|y76T6$2`>UMlovK8dPOp!FKo-x`&edLE?*9vu%fCE!v||Z!!r}upG4)wxHg4 zFNWetY>ywCcF-Jq6Gx!#6O9_**4Ptu-%)d@e^ZhoI#jA9sI}aRD*Z{+g`c37<_FXS zZkh9S=GwcxIjXeDs2g`dJvbBf#-ogds0q)(OnhiA_1A@;(jmV>J@`k|XLJjjVAwo+ zN#aox7>N1`#-MIE6IJS^s8a7l?WvDYOZNr(px=D^tEh!q@>n-XBFT8uu?!Pvzlw4A z9S+0#Of(tuj2`Sk`xq`l#{>4bC8*v032FitvF7&#^@2B0OYOJ7?so^0Xka~5$)ZrD zZe<2^M*R@=Lha&W)c6^wH=l>P;Yw_dYfux|gAS}lEx{4fe;UJSpGPX`wyu%r!F~(v z2iHai?H0s*k|(i{c%G<3`|tQUp+URhhz4`4APy7y0=Cl^Mtng2ia9?8hY;uKYm5u< zoWB3QB*W=AO6d3-(Tn^(;-BQBajZ^o_?j^;$fn{x$ZIY zPl($`AW0d~lkqIuOpZ;fXBk>e5!;E{ETpRLrf*(R_2BBjM z=Y#OyL;>*vp(CF7iWq3FSD*G@&9RNYuX185@hkas+>br*VIrS=3ZdgU+J9gc(VqNi z!b#}=@zAjuKeN-Czl%)&Wm*GF|1+j6WJ4eJw4i3c34e=427(0HHFF_Fk14w@UQ zZxhj*xTyxm{ha%co!0!-FW-lzJ^POS7tK8;VS?%JPM$-Q5T~^N^mD0yZ2rGv;9okw zquqfEb#%lBFpii;uAl8}{1V?GbUbLrCXxS(_&e=bqO0k5zeHzK8r8&f@`>ieKJw$_ z`%HU}F`525j}ZDt&~X@lHYZZZ?=ktG#=p^b%j9P*A-A=c{oLrJ0-pd%fhv(uWX z%`*8s`rDJo5S7Fv;wk#-n(HF*KKk|$yNCyg&h*`dnS>vCSKNSY2^~4aR=s~7;X`Lf zY)$-5G@+eu2A1I*`sNYO66wTBLdSR_k{G52$1fCQ^t_#6O6d z`cGv*OB&DO3&bMwI>aFIa9oU0*pB#^&{0HRC9%YA*8I)o?NY5<1q>eiUCMc9RcLr#T*?t>Y1!|NVP6nV0B7)H7plpVY5y z4;ssf1LU3b{ST%QL4@BicrN*A`W_-~AN}Y%O2b8*An!wzk}o7ui6@A^9<3NNpH2tf zK30);G3}X}(YKtLK&&HPF{7qp%pDi4z9WCnj1gY?zsF;yuh5M9k#<|+ZQ^eFmJn6M zy|kC1izpys`tnDIFY%fZbF86%HF*n%H!Citw&$_5ZeHK^ANzR!?3f-D2|dThsEK?fuV`Vj8YIXNfC^)1_sV&YY^s!m{$B*{(dl(XMjc)!8b~S?;n2diV6H zUCVQRV5Z+FO`z?dT@KIpgX;!Nbrlws=6M}MraC;&W(NmoL zY%N!AS!rH{pQrB7T_I^5obA%Oc5IiBn&x?9XnNo5ifK9J&H*`vrOxz{oTBNy$|?$J zB4o99RWojeO6T^c%i8JbWdd+ARFx-_}Sn2ZS&B$~l-7ekn>T>5u9#&CS zo>y8`T9D}MU0PXwd|Ls9r-Wm23a7hDy>FI>IGWs1q}f&F$E$Ov6}V;=xhgpSVZ}GT zwa2-NxJsAj6nNj6xzW$FZti`7_LQh#$h<%wZ<70z!}G<00B^~H-yGgmi;^Ax16D8W AT>t<8 diff --git a/openslides/locale/de/LC_MESSAGES/django.po b/openslides/locale/de/LC_MESSAGES/django.po index 10d30e59c..a9817f6a4 100644 --- a/openslides/locale/de/LC_MESSAGES/django.po +++ b/openslides/locale/de/LC_MESSAGES/django.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenSlides 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-24 12:51+0200\n" +"POT-Creation-Date: 2012-10-30 21:52+0100\n" "PO-Revision-Date: 2012-07-28 11:07+0200\n" -"Last-Translator: Oskar Hahn \n" -"Language-Team: Deutsch \n" +"Last-Translator: Emanuel Schuetze \n" +"Language-Team: support@openslides.de\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,12 +30,12 @@ msgid "Parent item" msgstr "Elternelement" #: agenda/models.py:42 config/forms.py:61 motion/forms.py:22 -#: motion/models.py:544 motion/templates/motion/view.html:246 +#: motion/models.py:540 motion/templates/motion/view.html:246 #: projector/models.py:32 msgid "Title" msgstr "Titel" -#: agenda/models.py:43 motion/forms.py:23 motion/models.py:545 +#: agenda/models.py:43 motion/forms.py:23 motion/models.py:541 #: motion/templates/motion/view.html:247 projector/models.py:33 msgid "Text" msgstr "Text" @@ -225,8 +225,8 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" #: assignment/views.py:576 assignment/templates/assignment/view.html:166 #: assignment/templates/assignment/view.html:170 #: assignment/templates/projector/Assignment.html:78 -#: assignment/templates/projector/Assignment.html:82 motion/models.py:578 -#: motion/views.py:778 motion/views.py:829 +#: assignment/templates/projector/Assignment.html:82 motion/models.py:574 +#: motion/views.py:807 motion/views.py:858 #: motion/templates/motion/view.html:79 #: motion/templates/projector/Motion.html:37 utils/utils.py:53 #: utils/views.py:111 @@ -235,8 +235,8 @@ msgstr "Ja" #: agenda/templates/agenda/overview.html:47 assignment/models.py:300 #: assignment/views.py:577 assignment/templates/assignment/view.html:167 -#: assignment/templates/projector/Assignment.html:79 motion/models.py:578 -#: motion/views.py:778 motion/views.py:830 +#: assignment/templates/projector/Assignment.html:79 motion/models.py:574 +#: motion/views.py:807 motion/views.py:859 #: motion/templates/motion/view.html:80 #: motion/templates/projector/Motion.html:38 utils/utils.py:53 #: utils/views.py:111 @@ -385,7 +385,7 @@ msgstr "Abgeschlossen" msgid "Name" msgstr "Name" -#: assignment/models.py:55 +#: assignment/models.py:55 participant/models.py:114 msgid "Description" msgstr "Beschreibung" @@ -393,7 +393,7 @@ msgstr "Beschreibung" msgid "Comment on the ballot paper" msgstr "Kommentar für den Stimmzettel" -#: assignment/models.py:69 motion/models.py:339 +#: assignment/models.py:69 motion/models.py:335 #, python-format msgid "%s is not a valid status." msgstr "%s ist kein gültiger Status." @@ -438,7 +438,7 @@ msgstr "Darf selbst für Wahlen kandidieren" msgid "Can manage assignment" msgstr "Darf Wahlen verwalten" -#: assignment/models.py:301 motion/models.py:579 +#: assignment/models.py:301 motion/models.py:575 msgid "Abstain" msgstr "Enthaltung" @@ -471,9 +471,9 @@ msgstr "Neue Wahl wurde erfolgreich angelegt." msgid "Election was successfully modified." msgstr "Wahl wurde erfolgreich geändert." -#: assignment/views.py:138 motion/views.py:256 motion/views.py:637 -#: participant/views.py:463 participant/views.py:486 utils/views.py:210 -#: utils/views.py:228 utils/views.py:252 +#: assignment/views.py:138 motion/views.py:257 motion/views.py:666 +#: participant/views.py:457 participant/views.py:480 utils/views.py:225 +#: utils/views.py:243 utils/views.py:267 msgid "Please check the form for errors." msgstr "Bitte kontrollieren Sie das Formular nach Fehlern." @@ -572,7 +572,7 @@ msgstr "Wahlen: %s" msgid "Candidates" msgstr "Kandidaten/innen" -#: assignment/views.py:410 motion/views.py:771 +#: assignment/views.py:410 motion/views.py:800 #: motion/templates/motion/view.html:44 msgid "Vote results" msgstr "Abstimmungsergebnis" @@ -613,7 +613,7 @@ msgstr "Ungültige Stimmen" #: assignment/templates/assignment/view.html:202 #: assignment/templates/assignment/view.html:207 #: assignment/templates/projector/Assignment.html:111 -#: assignment/templates/projector/Assignment.html:117 motion/views.py:778 +#: assignment/templates/projector/Assignment.html:117 motion/views.py:807 #: motion/templates/motion/poll_view.html:35 #: motion/templates/motion/view.html:84 #: motion/templates/projector/Motion.html:42 poll/models.py:76 @@ -646,8 +646,8 @@ msgid "%d available posts" msgstr "%d verfügbare Posten" #: assignment/views.py:577 assignment/templates/assignment/view.html:168 -#: assignment/templates/projector/Assignment.html:80 motion/views.py:778 -#: motion/views.py:831 motion/templates/motion/view.html:81 +#: assignment/templates/projector/Assignment.html:80 motion/views.py:807 +#: motion/views.py:860 motion/templates/motion/view.html:81 #: motion/templates/projector/Motion.html:39 msgid "Abstention" msgstr "Enthaltung" @@ -712,7 +712,7 @@ msgstr "Wahl-Einstellungen" #: assignment/templates/assignment/overview.html:14 #: assignment/templates/assignment/overview.html:27 #: assignment/templates/assignment/view.html:11 -#: assignment/templates/projector/Assignment.html:18 motion/views.py:749 +#: assignment/templates/projector/Assignment.html:18 motion/views.py:778 #: motion/templates/motion/overview.html:20 #: motion/templates/motion/overview.html:40 #: motion/templates/motion/view.html:34 @@ -815,7 +815,7 @@ msgid "was not a
candidate" msgstr "war kein Kandidat" #: assignment/templates/assignment/view.html:190 -#: assignment/templates/projector/Assignment.html:101 motion/views.py:778 +#: assignment/templates/projector/Assignment.html:101 motion/views.py:807 #: motion/templates/motion/view.html:82 #: motion/templates/projector/Motion.html:40 msgid "Invalid" @@ -859,16 +859,16 @@ msgid "Can manage configuration" msgstr "Darf die Konfiguration verwalten" #: config/models.py:84 -msgid "Presentation system for agenda, motions and elections" -msgstr "Präsentationssystem für Tagesordnung, Anträge und Wahlen" +msgid "Presentation and assembly system" +msgstr "Präsentations- und Versammlungssystem" -#: config/models.py:89 templates/base.html:30 -msgid "Welcome" -msgstr "Willkommen" +#: config/models.py:89 +msgid "Welcome to OpenSlides" +msgstr "Willkommen bei OpenSlides" -#: config/models.py:90 participant/models.py:192 -msgid "Welcome to OpenSlides!" -msgstr "Willkommen bei OpenSlides!" +#: config/models.py:90 +msgid "[Place for your welcome text.]" +msgstr "[Platz für Ihren Begrüßungstext.]" #: config/models.py:92 #, python-format @@ -881,7 +881,7 @@ msgstr "Allgemein" #: config/models.py:131 config/templates/config/version.html:5 #: config/templates/config/version.html:8 -#: config/templates/config/version.html:11 motion/views.py:763 +#: config/templates/config/version.html:11 motion/views.py:792 #: motion/templates/motion/view.html:214 motion/templates/motion/view.html:244 msgid "Version" msgstr "Version" @@ -919,7 +919,7 @@ msgstr "Startseite" msgid "System" msgstr "System" -#: motion/forms.py:25 motion/models.py:546 motion/views.py:797 +#: motion/forms.py:25 motion/models.py:542 motion/views.py:826 #: motion/templates/motion/view.html:229 motion/templates/motion/view.html:249 #: motion/templates/projector/Motion.html:77 msgid "Reason" @@ -933,7 +933,7 @@ msgstr "Triviale Änderung" msgid "Trivial changes don't create a new version." msgstr "Triviale Änderungen erzeugen keine neue Version." -#: motion/forms.py:44 motion/views.py:736 motion/templates/motion/view.html:22 +#: motion/forms.py:44 motion/views.py:765 motion/templates/motion/view.html:22 msgid "Supporters" msgstr "Unterstützer/innen" @@ -1022,7 +1022,7 @@ msgstr "Verworfen (nicht zulässig)" msgid "Needs Review" msgstr "Benötigt Review" -#: motion/models.py:66 motion/views.py:716 +#: motion/models.py:66 motion/views.py:745 #: motion/templates/motion/overview.html:41 #: motion/templates/motion/view.html:18 #: motion/templates/projector/Motion.html:55 @@ -1034,11 +1034,6 @@ msgstr "Antragsteller/in" msgid "Version %d authorized" msgstr "Version %d zugelassen" -#: motion/models.py:110 -msgctxt "Rejected means not authorized" -msgid "Version %d rejected" -msgstr "Version %d zurückgewiesen" - #: motion/models.py:139 msgid "Searching for supporters." msgstr "Auf Unterstützersuche." @@ -1073,37 +1068,37 @@ msgstr "Unterstützer/innen gelöscht" msgid "Status reseted to: %s" msgstr "Status zurückgesetzt auf: %s" -#: motion/models.py:268 +#: motion/models.py:265 #, python-format msgid "Supporter: +%s" msgstr "Unterstützer/in: +%s" -#: motion/models.py:282 +#: motion/models.py:278 #, python-format msgid "Supporter: -%s" msgstr "Unterstützer/in: -%s" -#: motion/models.py:299 +#: motion/models.py:295 #, python-format msgid "Number set: %s" msgstr "Nummer gesetzt: %s" -#: motion/models.py:312 +#: motion/models.py:308 #, python-format msgid "Version %s authorized" msgstr "Version %s zugelassen" -#: motion/models.py:326 +#: motion/models.py:322 #, python-format msgid "Version %s not authorized" msgstr "Version %s nicht zugelassen" -#: motion/models.py:342 +#: motion/models.py:338 #, python-format msgid "The motion status is already '%s.'" msgstr "Der Antragsstatus ist bereits '%s'." -#: motion/models.py:350 +#: motion/models.py:346 #, python-format msgid "" "The motion status is: '%(currentstatus)s'. You can not set the status to " @@ -1112,75 +1107,75 @@ msgstr "" "Der Antragsstatus ist: '%(currentstatus)s'. Sie können den Status nicht auf " "'%(newstatus)s' setzen." -#: motion/models.py:358 +#: motion/models.py:354 msgid "Status modified" msgstr "Status geändert" -#: motion/models.py:450 +#: motion/models.py:446 msgid "by" msgstr "von" -#: motion/models.py:458 motion/templates/motion/view.html:210 +#: motion/models.py:454 motion/templates/motion/view.html:210 #: motion/templates/motion/widget.html:27 #: motion/templates/projector/Motion.html:65 msgid "no number" msgstr "ohne Nummer" -#: motion/models.py:459 motion/templates/motion/overview.html:32 +#: motion/models.py:455 motion/templates/motion/overview.html:32 #: motion/templates/motion/widget.html:23 msgid "motion" msgstr "Antrag" -#: motion/models.py:484 +#: motion/models.py:480 msgid "Poll created" msgstr "Abstimmung erstellt" -#: motion/models.py:535 +#: motion/models.py:531 msgid "Can see motions" msgstr "Darf Anträge sehen" -#: motion/models.py:536 +#: motion/models.py:532 msgid "Can create motions" msgstr "Darf Anträge erstellen" -#: motion/models.py:537 +#: motion/models.py:533 msgid "Can support motions" msgstr "Darf Anträge unterstützen" -#: motion/models.py:538 +#: motion/models.py:534 msgid "Can manage motions" msgstr "Darf Anträge verwalten" -#: motion/models.py:605 +#: motion/models.py:601 msgid "The assembly may decide," msgstr "Die Versammlung möge beschließen," -#: motion/models.py:608 motion/views.py:666 motion/views.py:891 +#: motion/models.py:604 motion/views.py:695 motion/views.py:920 #: motion/templates/motion/base_motion.html:9 #: motion/templates/motion/overview.html:7 #: motion/templates/motion/overview.html:10 msgid "Motions" msgstr "Anträge" -#: motion/views.py:179 +#: motion/views.py:180 msgid "You have not the necessary rights to create or edit motions." msgstr "" "Sie haben nicht die nötigen Rechte, um Anträge zu erstellen oder zu " "bearbeiten." -#: motion/views.py:184 +#: motion/views.py:185 msgid "You can not edit this motion." msgstr "Sie dürfen diesen Antrag nicht bearbeiten." -#: motion/views.py:247 +#: motion/views.py:248 msgid "New motion was successfully created." msgstr "Neuer Antrag wurde erfolgreich angelegt." -#: motion/views.py:249 +#: motion/views.py:250 msgid "Motion was successfully modified." msgstr "Antrag wurde erfolgreich geändert." -#: motion/views.py:263 +#: motion/views.py:264 msgid "" "Attention: Do you really want to edit this motion? The supporters will " "not be removed automatically because you can manage motions. Please " @@ -1190,7 +1185,7 @@ msgstr "" "werden nicht automatisch entfernt, da Sie Anträge verwalten dürfen. " "Prüfen Sie, ob die Unterstützungen noch gültig sind." -#: motion/views.py:265 +#: motion/views.py:266 #, python-format msgid "" "Attention: Do you really want to edit this motion? All %s supporters " @@ -1199,132 +1194,148 @@ msgstr "" "Wollen Sie den Antrag wirklich ändern? Alle %s Unterstützer/innen " "werden dann automatisch entfernt. Versuchen Sie diese erneut zu gewinnen." -#: motion/views.py:297 +#: motion/views.py:298 msgid "Motion number was successfully set." msgstr "Antragsnummer wurde erfolgreich gesetzt." -#: motion/views.py:313 +#: motion/views.py:314 msgid "Motion was successfully authorized." msgstr "Antrag wurde erfolgreich zugelassen." -#: motion/views.py:328 +#: motion/views.py:329 msgid "Motion was successfully rejected." msgstr "Antrag wurde erfolgreich verworfen." -#: motion/views.py:344 +#: motion/views.py:345 #, python-format msgid "Motion status was set to: %s." msgstr "Antragsstatus wurde gesetzt auf: %s." -#: motion/views.py:360 +#: motion/views.py:361 msgid "Motion status was reset." msgstr "Antragsstatus wurde zurückgesetzt." -#: motion/views.py:374 -msgid "You have support the motion successfully." -msgstr "Sie haben den Antrag erfolgreich unterstützt." - #: motion/views.py:388 -msgid "You have unsupport the motion successfully." -msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen." +msgid "You can not support this motion." +msgstr "Sie dürfen diesen Antrag nicht unterstützen." + +#: motion/views.py:391 +msgid "You can not unsupport this motion." +msgstr "Sie dürfen Ihre Unterstützung für diesen Antrag nicht entziehen." #: motion/views.py:402 +msgid "Do you really want to support this motion?" +msgstr "Wollen Sie wirklich diesen Antrag unterstützen?" + +#: motion/views.py:404 +msgid "Do you really want to unsupport this motion?" +msgstr "Wollen Sie wirklich Ihre Unterstützung für diesen Antrag entziehen?" + +#: motion/views.py:415 +msgid "You have supported this motion successfully." +msgstr "Sie haben den Antrag erfolgreich unterstützt." + +#: motion/views.py:417 +msgid "You have unsupported this motion successfully." +msgstr "Sie haben dem Antrag erfolgreich Ihre Unterstützung entzogen." + +#: motion/views.py:431 msgid "New vote was successfully created." msgstr "Neue Abstimmung erfolgreich angelegt." -#: motion/views.py:418 +#: motion/views.py:447 msgid "Poll deleted" msgstr "Abstimmung gelöscht" -#: motion/views.py:419 +#: motion/views.py:448 msgid "Poll was successfully deleted." msgstr "Abstimmung wurde erfolgreich gelöscht." -#: motion/views.py:421 +#: motion/views.py:450 #, python-format msgid "the %s. poll" msgstr "die %s. Abstimmung" -#: motion/views.py:462 motion/views.py:471 +#: motion/views.py:491 motion/views.py:500 #, python-format msgid "You can not delete motion %s." msgstr "Sie können Antrag %s nicht löschen." -#: motion/views.py:467 motion/views.py:475 +#: motion/views.py:496 motion/views.py:504 #, python-format msgid "Motion %s was successfully deleted." msgstr "Antrag %s wurde erfolgreich gelöscht." -#: motion/views.py:477 +#: motion/views.py:506 msgid "Invalid request" msgstr "Ungültige Anfrage" -#: motion/views.py:501 +#: motion/views.py:530 msgid "Poll was updated" msgstr "Abstimmung wurde aktualisiert" -#: motion/views.py:518 +#: motion/views.py:547 #, python-format msgid "Version %s accepted." msgstr "Version %s akzeptiert." -#: motion/views.py:520 +#: motion/views.py:549 #, python-format msgid "Do you really want to authorize version %s?" msgstr "Soll Version %s wirklich zugelassen werden?" -#: motion/views.py:530 +#: motion/views.py:559 #, python-format msgid "Version %s rejected." msgstr "Version %s zurückgewiesen." -#: motion/views.py:532 +#: motion/views.py:561 msgid "ERROR by rejecting the version." msgstr "FEHLER beim Zurückweisen der Version." -#: motion/views.py:534 +#: motion/views.py:563 #, python-format msgid "Do you really want to reject version %s?" msgstr "Soll Version %s wirklich zurückgewiesen werden?" -#: motion/views.py:564 motion/views.py:568 motion/views.py:574 -#: motion/views.py:577 participant/api.py:76 +#: motion/views.py:593 motion/views.py:597 motion/views.py:603 +#: motion/views.py:606 participant/api.py:76 #, python-format msgid "Ignoring malformed line %d in import file." msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert." -#: motion/views.py:623 +#: motion/views.py:652 #, python-format msgid "%d motion was successfully imported." msgid_plural "%d motions were successfully imported." msgstr[0] "%d Antrag wurde erfolgreich importiert." msgstr[1] "%d Anträge wurden erfolgreich importiert." -#: motion/views.py:626 +#: motion/views.py:655 #, python-format msgid "%d motion was successfully modified." msgid_plural "%d motions were successfully modified." msgstr[0] "%d Antrag wurde erfolgreich geändert." msgstr[1] "%d Anträge wurden erfolgreich geändert." -#: motion/views.py:629 +#: motion/views.py:658 #, python-format msgid "%d new user was added." msgid_plural "%d new users were added." msgstr[0] "%d neuer Nutzer wurde erstellt." msgstr[1] "%d neue Nutzer wurden erstellt." -#: motion/views.py:633 participant/api.py:92 +#: motion/views.py:662 participant/api.py:92 msgid "Import aborted because of severe errors in the input file." msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen." -#: motion/views.py:635 participant/api.py:94 +#: motion/views.py:664 participant/api.py:94 msgid "Import file has wrong character encoding, only UTF-8 is supported!" msgstr "" "Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 " "wird unterstützt!" -#: motion/views.py:639 +#: motion/views.py:668 msgid "" "Attention: Existing motions will be modified if you import new motions with " "the same number." @@ -1332,7 +1343,7 @@ msgstr "" "Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit " "identischer Nummer importieren." -#: motion/views.py:640 +#: motion/views.py:669 msgid "" "Attention: Importing an motions without a number multiple times will create " "duplicates." @@ -1340,7 +1351,7 @@ msgstr "" "Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate " "entstehen." -#: motion/views.py:673 motion/views.py:811 +#: motion/views.py:702 motion/views.py:840 #: motion/templates/motion/poll_view.html:7 #: motion/templates/motion/poll_view.html:12 #: motion/templates/motion/view.html:7 motion/templates/motion/view.html:206 @@ -1350,21 +1361,21 @@ msgstr "" msgid "Motion" msgstr "Antrag" -#: motion/views.py:687 motion/templates/motion/overview.html:84 +#: motion/views.py:716 motion/templates/motion/overview.html:84 msgid "No motions available." msgstr "Keine Anträge vorhanden." -#: motion/views.py:692 motion/views.py:694 motion/views.py:709 -#: motion/views.py:711 motion/templates/motion/base_motion.html:24 +#: motion/views.py:721 motion/views.py:723 motion/views.py:738 +#: motion/views.py:740 motion/templates/motion/base_motion.html:24 #: motion/templates/projector/Motion.html:63 msgid "Motion No." msgstr "Antrag Nr." -#: motion/views.py:726 +#: motion/views.py:755 msgid "Signature" msgstr "Unterschrift" -#: motion/views.py:777 motion/templates/motion/base_motion.html:55 +#: motion/views.py:806 motion/templates/motion/base_motion.html:55 #: motion/templates/motion/poll_view.html:8 #: motion/templates/motion/poll_view.html:13 #: motion/templates/motion/view.html:66 motion/templates/motion/view.html:74 @@ -1372,20 +1383,21 @@ msgstr "Unterschrift" msgid "Vote" msgstr "Abstimmung" -#: motion/views.py:811 +#: motion/views.py:840 msgid "Poll" msgstr "Abstimmung" -#: motion/views.py:825 +#: motion/views.py:854 +#, python-format msgid "Motion No. %s" msgstr "Antrag Nr. %s" -#: motion/views.py:827 +#: motion/views.py:856 #, python-format msgid "%d. Vote" msgstr "%d. Abstimmung" -#: motion/views.py:884 +#: motion/views.py:913 msgid "Motion settings successfully saved." msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert." @@ -1429,7 +1441,7 @@ msgstr "Antrag als PDF" #: motion/templates/motion/base_motion.html:49 msgid "Show Motion" -msgstr "Zeige Antrag" +msgstr "Antrag projizieren" #: motion/templates/motion/config.html:5 motion/templates/motion/config.html:8 msgid "Motion settings" @@ -1653,12 +1665,16 @@ msgid "User groups" msgstr "Benutzerrollen" #: participant/forms.py:44 -msgid "Persmissions" +msgid "Permissions" msgstr "Rechte" -#: participant/forms.py:47 -msgid "Users" -msgstr "Benutzer" +#: participant/forms.py:47 participant/views.py:495 +#: participant/templates/participant/base_participant.html:12 +#: participant/templates/participant/overview.html:7 +#: participant/templates/participant/overview.html:18 +#: participant/templates/participant/overview.html:62 +msgid "Participants" +msgstr "Teilnehmer/innen" #: participant/forms.py:83 msgid "You can not edit the name for the anonymous user" @@ -1711,7 +1727,7 @@ msgid "Detail" msgstr "Detail" #: participant/models.py:42 -msgid "Will be shown behind the name." +msgid "Will be shown after the name." msgstr "Wird nach dem Namen angezeigt." #: participant/models.py:45 participant/templates/participant/overview.html:24 @@ -1719,8 +1735,8 @@ msgid "Gender" msgstr "Geschlecht" #: participant/models.py:45 participant/models.py:48 participant/models.py:51 -msgid "Only for filter the userlist." -msgstr "Nur zum Filtern der Benutzerliste." +msgid "Only for filtering the participant list." +msgstr "Nur zum Filtern der Teilnehmerliste." #: participant/models.py:48 msgid "Typ" @@ -1748,6 +1764,18 @@ msgstr "Darf die Teilnehmer/inen sehen" msgid "Can manage participant" msgstr "Darf die Teilnehmer/inen verwalten" +#: participant/models.py:113 +msgid "Use this user group as participant" +msgstr "Verwende diese Benutzerrolle als Teilnehmer/in" + +#: participant/models.py:113 +msgid "For example as submitter of a motion." +msgstr "Zum Beispiel als Antragsteller." + +#: participant/models.py:192 +msgid "Welcome to OpenSlides!" +msgstr "Willkommen bei OpenSlides!" + #: participant/views.py:212 msgid "Participant-list" msgstr "Teilnehmerliste" @@ -1810,16 +1838,16 @@ msgstr "%d neue Teilnehmer/innen wurden erfolgreich importiert." msgid "Do you really want to reset the password?" msgstr "Soll das Passwort wirklich zurückgesetzt werden?" -#: participant/views.py:346 +#: participant/views.py:343 #, python-format msgid "The Password for %s was successfully reset." msgstr "Das Passwort für %s wurde erfolgreich zurückgesetzt." -#: participant/views.py:428 +#: participant/views.py:422 msgid "Participants settings successfully saved." msgstr "Teilnehmer/innen-Einstellungen wurden erfolgreich gespeichert." -#: participant/views.py:438 +#: participant/views.py:432 #, python-format msgid "" "Installation was successfully! Use %(user)s (password: %(password)s) for " @@ -1832,21 +1860,13 @@ msgstr "" "Sie das Passwort nach der ersten Anmeldung! Anderenfalls erscheint diese " "Meldung weiterhin für alle und ist ein Sicherheitsrisiko." -#: participant/views.py:461 +#: participant/views.py:455 msgid "User settings successfully saved." msgstr "Nutzereinstellungen wurden erfolgreich gespeichert." -#: participant/views.py:483 +#: participant/views.py:477 msgid "Password successfully changed." -msgstr "Password wurde erfolgreich geändert." - -#: participant/views.py:501 -#: participant/templates/participant/base_participant.html:12 -#: participant/templates/participant/overview.html:7 -#: participant/templates/participant/overview.html:18 -#: participant/templates/participant/overview.html:62 -msgid "Participants" -msgstr "Teilnehmer/innen" +msgstr "Passwort wurde erfolgreich geändert." #: participant/templates/participant/base_participant.html:15 msgid "All participants" @@ -2034,23 +2054,23 @@ msgstr "Darf den Projektor sehen" msgid "Can see the dashboard" msgstr "Darf das Dashboard sehen" -#: projector/views.py:185 +#: projector/views.py:202 msgid "Errors in the form" msgstr "Fehler im Formular" -#: projector/views.py:361 projector/templates/projector/dashboard.html:17 +#: projector/views.py:378 projector/templates/projector/dashboard.html:17 msgid "Dashboard" msgstr "Dashboard" -#: projector/views.py:378 +#: projector/views.py:406 msgid "Projector live view" msgstr "Projektor-Live-Ansicht" -#: projector/views.py:404 +#: projector/views.py:432 msgid "Overlays" msgstr "Einblendungen" -#: projector/views.py:417 +#: projector/views.py:445 msgid "Custom Slides" msgstr "Benutzerdefinierte Folien" @@ -2075,7 +2095,6 @@ msgid "Projector view" msgstr "Projektor-Ansicht" #: projector/templates/projector/control_countdown.html:6 -msgctxt "seconds" msgid "s" msgstr "s" @@ -2158,6 +2177,10 @@ msgstr "Startseite" msgid "Logout" msgstr "Abmelden" +#: templates/base.html:30 +msgid "Welcome" +msgstr "Willkommen" + #: templates/front_page.html:12 msgid "You have access to the following pages:" msgstr "Sie haben Zugriff auf folgende Seiten:" @@ -2176,7 +2199,7 @@ msgstr "Gedruckt am: %s" msgid "Page %s" msgstr "Seite %s" -#: utils/utils.py:66 utils/views.py:271 +#: utils/utils.py:66 utils/views.py:290 #, python-format msgid "Do you really want to delete %s?" msgstr "Soll %s wirklich gelöscht werden?" @@ -2193,22 +2216,22 @@ msgstr "Sind Sie sicher?" msgid "Thank you for your answer" msgstr "Danke für Ihre Antwort" -#: utils/views.py:232 +#: utils/views.py:247 #, python-format msgid "%s was successfully modified." msgstr "%s wurde erfolgreich bearbeitet." -#: utils/views.py:263 +#: utils/views.py:278 #, python-format msgid "%s was successfully created." msgstr "%s wurde erfolgreich angelegt." -#: utils/views.py:274 +#: utils/views.py:296 #, python-format msgid "%s was successfully deleted." msgstr "%s wurde erfolgreich gelöscht." -#: utils/views.py:305 +#: utils/views.py:312 msgid "undefined-filename" msgstr "undefinierter-dateiname" @@ -2216,32 +2239,5 @@ msgstr "undefinierter-dateiname" msgid "Enter valid JSON" msgstr "Gebe valides JSON ein" -#~ msgid "Applications" -#~ msgstr "Anträge" - -#~ msgid "Application" -#~ msgstr "Antrag" - -#~ msgid "Application No. %s" -#~ msgstr "Antrag Nr. %s" - -#~ msgid "Application No." -#~ msgstr "Antrag Nr." - -#~ msgid "Show Application" -#~ msgstr "Antrag projizieren" - -#~ msgid "Application settings" -#~ msgstr "Antrags-Einstellungen" - -#~ msgid "Category" -#~ msgstr "Kategorie" - -#~ msgid "Do you really want to delete multiple motions?" -#~ msgstr "Wollen Sie wirklich mehrere Anträge löschen?" - -#~ msgid "Do you really want to delete %s?" -#~ msgstr "Soll %s wirklich gelöscht werden?" - -#~ msgid "You!" -#~ msgstr "Sie!" +#~ msgid "Users" +#~ msgstr "Benutzer" diff --git a/openslides/participant/forms.py b/openslides/participant/forms.py index 153285d8f..849cbd563 100644 --- a/openslides/participant/forms.py +++ b/openslides/participant/forms.py @@ -41,10 +41,10 @@ class UserUpdateForm(UserCreateForm): class GroupForm(forms.ModelForm, CssClassMixin): permissions = LocalizedModelMultipleChoiceField( - queryset=Permission.objects.all(), label=_("Persmissions"), + queryset=Permission.objects.all(), label=_("Permissions"), required=False) users = forms.ModelMultipleChoiceField( - queryset=User.objects.all(), label=_("Users"), required=False) + queryset=User.objects.all(), label=_("Participants"), required=False) def __init__(self, *args, **kwargs): # Initial users diff --git a/openslides/participant/models.py b/openslides/participant/models.py index cabb54b7a..4c356de36 100644 --- a/openslides/participant/models.py +++ b/openslides/participant/models.py @@ -39,16 +39,16 @@ class User(DjangoUser, PersonMixin, Person): django_user = models.OneToOneField(DjangoUser, editable=False, parent_link=True) detail = models.CharField( max_length=100, blank=True, default='', verbose_name=_("Detail"), - help_text=_('Will be shown behind the name.')) + help_text=_('Will be shown after the name.')) gender = models.CharField( max_length=50, choices=GENDER_CHOICES, blank=True, - verbose_name=_("Gender"), help_text=_('Only for filter the userlist.')) + verbose_name=_("Gender"), help_text=_('Only for filtering the participant list.')) type = models.CharField( max_length=100, choices=TYPE_CHOICES, blank=True, - verbose_name=_("Typ"), help_text=_('Only for filter the userlist.')) + verbose_name=_("Typ"), help_text=_('Only for filtering the participant list.')) committee = models.CharField( max_length=100, blank=True, default='', verbose_name=_("Committee"), - help_text=_('Only for filter the userlist.')) + help_text=_('Only for filtering the participant list.')) comment = models.TextField( blank=True, default='', verbose_name=_('Comment'), help_text=_('Only for notes.')) @@ -110,8 +110,8 @@ class Group(DjangoGroup, PersonMixin, Person): person_prefix = 'group' django_group = models.OneToOneField(DjangoGroup, editable=False, parent_link=True) - group_as_person = models.BooleanField(default=False) - description = models.TextField(blank=True) + group_as_person = models.BooleanField(default=False, verbose_name=_("Use this user group as participant"), help_text=_('For example as submitter of a motion.')) + description = models.TextField(blank=True, verbose_name=_("Description")) @models.permalink def get_absolute_url(self, link='edit'): From aa0abec970d52802686b3c6c1c4a819d588fcf1e Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 22:30:32 +0100 Subject: [PATCH 08/13] Fixed motion csv import error. --- openslides/motion/views.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/openslides/motion/views.py b/openslides/motion/views.py index 78873ba92..ce28780ce 100644 --- a/openslides/motion/views.py +++ b/openslides/motion/views.py @@ -615,16 +615,13 @@ def motion_import(request): user.last_name = last_name user.first_name = first_name user.username = gen_username(first_name, last_name) + user.detail = '' + user.committee = '' + user.gender = '' + user.type = '' + user.firstpassword = gen_password() user.save() - profile = Profile() - profile.user = user - profile.group = '' - profile.committee = '' - profile.gender = 'none' - profile.type = 'guest' - profile.firstpassword = gen_password() - profile.user.set_password(profile.firstpassword) - profile.save() + user.reset_password() users_generated += 1 # create / modify the motion motion = None From 4ee518dd96e171fd5dafbcb5735179ce9a0269ba Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 22:59:37 +0100 Subject: [PATCH 09/13] Updated translations (for sorting participants). --- openslides/locale/de/LC_MESSAGES/django.mo | Bin 33979 -> 34086 bytes openslides/locale/de/LC_MESSAGES/django.po | 72 +++++++++++---------- openslides/participant/forms.py | 3 +- 3 files changed, 40 insertions(+), 35 deletions(-) diff --git a/openslides/locale/de/LC_MESSAGES/django.mo b/openslides/locale/de/LC_MESSAGES/django.mo index 736f08d75c4f1c40b0328818ff420aa2e9e16df0..bbb46fe8a1b02875082c37f8a7d55387d97ef17e 100644 GIT binary patch delta 10020 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\n" "Language-Team: support@openslides.de\n" @@ -226,7 +226,7 @@ msgstr "Möchten Sie die geänderte Reihenfolge der Einträge speichern?" #: assignment/templates/assignment/view.html:170 #: assignment/templates/projector/Assignment.html:78 #: assignment/templates/projector/Assignment.html:82 motion/models.py:574 -#: motion/views.py:807 motion/views.py:858 +#: motion/views.py:804 motion/views.py:855 #: motion/templates/motion/view.html:79 #: motion/templates/projector/Motion.html:37 utils/utils.py:53 #: utils/views.py:111 @@ -236,7 +236,7 @@ msgstr "Ja" #: agenda/templates/agenda/overview.html:47 assignment/models.py:300 #: assignment/views.py:577 assignment/templates/assignment/view.html:167 #: assignment/templates/projector/Assignment.html:79 motion/models.py:574 -#: motion/views.py:807 motion/views.py:859 +#: motion/views.py:804 motion/views.py:856 #: motion/templates/motion/view.html:80 #: motion/templates/projector/Motion.html:38 utils/utils.py:53 #: utils/views.py:111 @@ -471,7 +471,7 @@ msgstr "Neue Wahl wurde erfolgreich angelegt." msgid "Election was successfully modified." msgstr "Wahl wurde erfolgreich geändert." -#: assignment/views.py:138 motion/views.py:257 motion/views.py:666 +#: assignment/views.py:138 motion/views.py:257 motion/views.py:663 #: participant/views.py:457 participant/views.py:480 utils/views.py:225 #: utils/views.py:243 utils/views.py:267 msgid "Please check the form for errors." @@ -572,7 +572,7 @@ msgstr "Wahlen: %s" msgid "Candidates" msgstr "Kandidaten/innen" -#: assignment/views.py:410 motion/views.py:800 +#: assignment/views.py:410 motion/views.py:797 #: motion/templates/motion/view.html:44 msgid "Vote results" msgstr "Abstimmungsergebnis" @@ -613,7 +613,7 @@ msgstr "Ungültige Stimmen" #: assignment/templates/assignment/view.html:202 #: assignment/templates/assignment/view.html:207 #: assignment/templates/projector/Assignment.html:111 -#: assignment/templates/projector/Assignment.html:117 motion/views.py:807 +#: assignment/templates/projector/Assignment.html:117 motion/views.py:804 #: motion/templates/motion/poll_view.html:35 #: motion/templates/motion/view.html:84 #: motion/templates/projector/Motion.html:42 poll/models.py:76 @@ -646,8 +646,8 @@ msgid "%d available posts" msgstr "%d verfügbare Posten" #: assignment/views.py:577 assignment/templates/assignment/view.html:168 -#: assignment/templates/projector/Assignment.html:80 motion/views.py:807 -#: motion/views.py:860 motion/templates/motion/view.html:81 +#: assignment/templates/projector/Assignment.html:80 motion/views.py:804 +#: motion/views.py:857 motion/templates/motion/view.html:81 #: motion/templates/projector/Motion.html:39 msgid "Abstention" msgstr "Enthaltung" @@ -712,7 +712,7 @@ msgstr "Wahl-Einstellungen" #: assignment/templates/assignment/overview.html:14 #: assignment/templates/assignment/overview.html:27 #: assignment/templates/assignment/view.html:11 -#: assignment/templates/projector/Assignment.html:18 motion/views.py:778 +#: assignment/templates/projector/Assignment.html:18 motion/views.py:775 #: motion/templates/motion/overview.html:20 #: motion/templates/motion/overview.html:40 #: motion/templates/motion/view.html:34 @@ -815,7 +815,7 @@ msgid "was not a
candidate" msgstr "war kein Kandidat" #: assignment/templates/assignment/view.html:190 -#: assignment/templates/projector/Assignment.html:101 motion/views.py:807 +#: assignment/templates/projector/Assignment.html:101 motion/views.py:804 #: motion/templates/motion/view.html:82 #: motion/templates/projector/Motion.html:40 msgid "Invalid" @@ -881,7 +881,7 @@ msgstr "Allgemein" #: config/models.py:131 config/templates/config/version.html:5 #: config/templates/config/version.html:8 -#: config/templates/config/version.html:11 motion/views.py:792 +#: config/templates/config/version.html:11 motion/views.py:789 #: motion/templates/motion/view.html:214 motion/templates/motion/view.html:244 msgid "Version" msgstr "Version" @@ -919,7 +919,7 @@ msgstr "Startseite" msgid "System" msgstr "System" -#: motion/forms.py:25 motion/models.py:542 motion/views.py:826 +#: motion/forms.py:25 motion/models.py:542 motion/views.py:823 #: motion/templates/motion/view.html:229 motion/templates/motion/view.html:249 #: motion/templates/projector/Motion.html:77 msgid "Reason" @@ -933,7 +933,7 @@ msgstr "Triviale Änderung" msgid "Trivial changes don't create a new version." msgstr "Triviale Änderungen erzeugen keine neue Version." -#: motion/forms.py:44 motion/views.py:765 motion/templates/motion/view.html:22 +#: motion/forms.py:44 motion/views.py:762 motion/templates/motion/view.html:22 msgid "Supporters" msgstr "Unterstützer/innen" @@ -1022,7 +1022,7 @@ msgstr "Verworfen (nicht zulässig)" msgid "Needs Review" msgstr "Benötigt Review" -#: motion/models.py:66 motion/views.py:745 +#: motion/models.py:66 motion/views.py:742 #: motion/templates/motion/overview.html:41 #: motion/templates/motion/view.html:18 #: motion/templates/projector/Motion.html:55 @@ -1150,7 +1150,7 @@ msgstr "Darf Anträge verwalten" msgid "The assembly may decide," msgstr "Die Versammlung möge beschließen," -#: motion/models.py:604 motion/views.py:695 motion/views.py:920 +#: motion/models.py:604 motion/views.py:692 motion/views.py:917 #: motion/templates/motion/base_motion.html:9 #: motion/templates/motion/overview.html:7 #: motion/templates/motion/overview.html:10 @@ -1304,38 +1304,38 @@ msgstr "Soll Version %s wirklich zurückgewiesen werden?" msgid "Ignoring malformed line %d in import file." msgstr "Fehlerhafte Zeile %d der Quelldatei wurde ignoriert." -#: motion/views.py:652 +#: motion/views.py:649 #, python-format msgid "%d motion was successfully imported." msgid_plural "%d motions were successfully imported." msgstr[0] "%d Antrag wurde erfolgreich importiert." msgstr[1] "%d Anträge wurden erfolgreich importiert." -#: motion/views.py:655 +#: motion/views.py:652 #, python-format msgid "%d motion was successfully modified." msgid_plural "%d motions were successfully modified." msgstr[0] "%d Antrag wurde erfolgreich geändert." msgstr[1] "%d Anträge wurden erfolgreich geändert." -#: motion/views.py:658 +#: motion/views.py:655 #, python-format msgid "%d new user was added." msgid_plural "%d new users were added." msgstr[0] "%d neuer Nutzer wurde erstellt." msgstr[1] "%d neue Nutzer wurden erstellt." -#: motion/views.py:662 participant/api.py:92 +#: motion/views.py:659 participant/api.py:92 msgid "Import aborted because of severe errors in the input file." msgstr "Import auf Grund von schweren Fehlern in der Quelldatei abgebrochen." -#: motion/views.py:664 participant/api.py:94 +#: motion/views.py:661 participant/api.py:94 msgid "Import file has wrong character encoding, only UTF-8 is supported!" msgstr "" "Die Quelldatei benutzt eine ungültige Zeichenkodierung, es wird nur UTF-8 " "wird unterstützt!" -#: motion/views.py:668 +#: motion/views.py:665 msgid "" "Attention: Existing motions will be modified if you import new motions with " "the same number." @@ -1343,7 +1343,7 @@ msgstr "" "Achtung: Existierende Anträge werden geändert wenn Sie neue Anträge mit " "identischer Nummer importieren." -#: motion/views.py:669 +#: motion/views.py:666 msgid "" "Attention: Importing an motions without a number multiple times will create " "duplicates." @@ -1351,7 +1351,7 @@ msgstr "" "Achtung: Bei mehrfachem Import eines Antrags ohne Nummer können Duplikate " "entstehen." -#: motion/views.py:702 motion/views.py:840 +#: motion/views.py:699 motion/views.py:837 #: motion/templates/motion/poll_view.html:7 #: motion/templates/motion/poll_view.html:12 #: motion/templates/motion/view.html:7 motion/templates/motion/view.html:206 @@ -1361,21 +1361,21 @@ msgstr "" msgid "Motion" msgstr "Antrag" -#: motion/views.py:716 motion/templates/motion/overview.html:84 +#: motion/views.py:713 motion/templates/motion/overview.html:84 msgid "No motions available." msgstr "Keine Anträge vorhanden." -#: motion/views.py:721 motion/views.py:723 motion/views.py:738 -#: motion/views.py:740 motion/templates/motion/base_motion.html:24 +#: motion/views.py:718 motion/views.py:720 motion/views.py:735 +#: motion/views.py:737 motion/templates/motion/base_motion.html:24 #: motion/templates/projector/Motion.html:63 msgid "Motion No." msgstr "Antrag Nr." -#: motion/views.py:755 +#: motion/views.py:752 msgid "Signature" msgstr "Unterschrift" -#: motion/views.py:806 motion/templates/motion/base_motion.html:55 +#: motion/views.py:803 motion/templates/motion/base_motion.html:55 #: motion/templates/motion/poll_view.html:8 #: motion/templates/motion/poll_view.html:13 #: motion/templates/motion/view.html:66 motion/templates/motion/view.html:74 @@ -1383,21 +1383,21 @@ msgstr "Unterschrift" msgid "Vote" msgstr "Abstimmung" -#: motion/views.py:840 +#: motion/views.py:837 msgid "Poll" msgstr "Abstimmung" -#: motion/views.py:854 +#: motion/views.py:851 #, python-format msgid "Motion No. %s" msgstr "Antrag Nr. %s" -#: motion/views.py:856 +#: motion/views.py:853 #, python-format msgid "%d. Vote" msgstr "%d. Abstimmung" -#: motion/views.py:913 +#: motion/views.py:910 msgid "Motion settings successfully saved." msgstr "Antrags-Einstellungen wurden erfolgreich gespeichert." @@ -1694,8 +1694,12 @@ msgid "Printed in PDF of first time passwords only." msgstr "Erscheint nur im PDF der Erst-Passwörter" #: participant/forms.py:118 -msgid "Sort users by first name" -msgstr "Sortiere Teilnehmer beim Vornamen" +msgid "Sort participants by first name" +msgstr "Teilnehmer/innen nach Vornamen sortieren" + +#: participant/forms.py:119 +msgid "Disable for sorting by last name" +msgstr "Deaktivieren für Sortierung nach Nachnamen" #: participant/models.py:29 participant/templates/participant/overview.html:25 msgid "Male" diff --git a/openslides/participant/forms.py b/openslides/participant/forms.py index 849cbd563..672b3ae4e 100644 --- a/openslides/participant/forms.py +++ b/openslides/participant/forms.py @@ -115,4 +115,5 @@ class ConfigForm(forms.Form, CssClassMixin): help_text=_("Printed in PDF of first time passwords only.")) participant_sort_users_by_first_name = forms.BooleanField( required=False, - label=_("Sort users by first name")) + label=_("Sort participants by first name"), + help_text=_("Disable for sorting by last name")) From 9a522f383589de78cd278742ff2cfe3d655a24f8 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 23:00:24 +0100 Subject: [PATCH 10/13] Use participant_sort_users_by_first_name config var for overview table, participant list (pdf) and first time passwords (pdf). --- openslides/participant/models.py | 2 +- openslides/participant/views.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/openslides/participant/models.py b/openslides/participant/models.py index 4c356de36..851be38d0 100644 --- a/openslides/participant/models.py +++ b/openslides/participant/models.py @@ -145,7 +145,7 @@ class UsersAndGroupsToPersons(object): if config['participant_sort_users_by_first_name']: self.users = User.objects.all().order_by('first_name') else: - self.users = User.objects.all() + self.users = User.objects.all().order_by('last_name') self.groups = Group.objects.filter(group_as_person=True) def __iter__(self): diff --git a/openslides/participant/views.py b/openslides/participant/views.py index 00599c327..99665a469 100644 --- a/openslides/participant/views.py +++ b/openslides/participant/views.py @@ -98,6 +98,8 @@ class Overview(ListView): else: if config['participant_sort_users_by_first_name']: query = query.order_by('first_name') + else: + query = query.order_by('last_name') if 'reverse' in sortfilter: query = query.reverse() @@ -215,7 +217,10 @@ class ParticipantsListPDF(PDFView): def append_to_pdf(self, story): data = [['#', _('Last Name'), _('First Name'), _('Group'), _('Type'), _('Committee')]] - sort = 'last_name' + if config['participant_sort_users_by_first_name']: + sort = 'first_name' + else: + sort = 'last_name' counter = 0 for user in User.objects.all().order_by(sort): counter += 1 @@ -257,7 +262,11 @@ class ParticipantsPasswordsPDF(PDFView): data = [] participant_pdf_system_url = config["participant_pdf_system_url"] participant_pdf_welcometext = config["participant_pdf_welcometext"] - for user in User.objects.all().order_by('last_name'): + if config['participant_sort_users_by_first_name']: + sort = 'first_name' + else: + sort = 'last_name' + for user in User.objects.all().order_by(sort): cell = [] cell.append(Spacer(0, 0.8 * cm)) cell.append(Paragraph(_("Account for OpenSlides"), From 3dd5ce9e73881927ba3cfc3e730d4293bbeb2fe7 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 23:10:23 +0100 Subject: [PATCH 11/13] Fixed default password generation while CSV import. --- openslides/motion/views.py | 2 +- openslides/participant/api.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openslides/motion/views.py b/openslides/motion/views.py index ce28780ce..4512f05a1 100644 --- a/openslides/motion/views.py +++ b/openslides/motion/views.py @@ -619,7 +619,7 @@ def motion_import(request): user.committee = '' user.gender = '' user.type = '' - user.firstpassword = gen_password() + user.default_password = gen_password() user.save() user.reset_password() users_generated += 1 diff --git a/openslides/participant/api.py b/openslides/participant/api.py index 9454cae67..5f5bf2b0b 100644 --- a/openslides/participant/api.py +++ b/openslides/participant/api.py @@ -84,7 +84,7 @@ def import_users(csv_file): user.type = type user.committee = committee user.comment = comment - user.firstpassword = gen_password() + user.default_password = gen_password() user.save() user.reset_password() count_success += 1 From 8ffeadfe88c30c6861588dda4a3e7d91e6865b73 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Tue, 30 Oct 2012 23:45:06 +0100 Subject: [PATCH 12/13] Cleared projector cache if countdown enabled or overlay message changed. --- openslides/projector/views.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openslides/projector/views.py b/openslides/projector/views.py index 7d9eea304..8536d6bf8 100644 --- a/openslides/projector/views.py +++ b/openslides/projector/views.py @@ -34,7 +34,7 @@ from openslides.config.models import config from openslides.projector.api import (get_active_slide, set_active_slide, projector_message_set, projector_message_delete, get_slide_from_sid, - get_all_widgets) + get_all_widgets, clear_projector_cache) from openslides.projector.forms import SelectWidgetsForm from openslides.projector.models import ProjectorOverlay, ProjectorSlide from openslides.projector.projector import SLIDE, Widget @@ -128,7 +128,9 @@ class Projector(TemplateView, AjaxMixin): if not data: data = self.data cache.set('projector_data', data) - + # clear cache if countdown is enabled + if config['countdown_state'] == 'active': + clear_projector_cache() context = super(Projector, self).get_ajax_context(**kwargs) content_hash = hash(content) context.update({ @@ -277,6 +279,7 @@ class CountdownEdit(RedirectView): pass def get_ajax_context(self, **kwargs): + clear_projector_cache() return { 'state': config['countdown_state'], 'countdown_time': config['countdown_time'], @@ -299,6 +302,7 @@ class OverlayMessageView(RedirectView): def get_ajax_context(self, **kwargs): + clear_projector_cache() return { 'overlay_message': config['projector_message'], } @@ -330,6 +334,7 @@ class ActivateOverlay(RedirectView): self.overlay.save() def get_ajax_context(self, **kwargs): + clear_projector_cache() return { 'active': self.overlay.active, 'def_name': self.overlay.def_name, From d9ccb02969cb4239ee2704c47c70b9d810159949 Mon Sep 17 00:00:00 2001 From: Emanuel Schuetze Date: Wed, 31 Oct 2012 07:11:53 +0100 Subject: [PATCH 13/13] Changed version number string. Important for building portable version. Used alpha|beta|rc without git commit hash. Added 'dev' suffix which use git hash only. It is easier to handle in file names of releases. --- openslides/__init__.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/openslides/__init__.py b/openslides/__init__.py index 0fd7c9fdd..fe637ceab 100644 --- a/openslides/__init__.py +++ b/openslides/__init__.py @@ -16,7 +16,7 @@ def get_version(version=None): if version is None: version = VERSION assert len(version) == 5 - assert version[3] in ('alpha', 'beta', 'rc', 'final') + assert version[3] in ('dev', 'alpha', 'beta', 'rc', 'final') # Now build the two parts of the version number: # main = X.Y[.Z] @@ -27,16 +27,17 @@ def get_version(version=None): main = '.'.join(str(x) for x in version[:main_parts]) if version[3] != 'final': - mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'} - sub = mapping[version[3]] + str(version[4]) - try: - git_head_path = '.git/' + open('.git/HEAD', 'r').read()[5:].rstrip() - except IOError: - git_commit_id = 'unknown' + if version[3] == 'dev': + try: + git_head_path = '.git/' + open('.git/HEAD', 'r').read()[5:].rstrip() + except IOError: + git_commit_id = 'unknown' + else: + import os + git_commit_id = open(os.path.abspath(git_head_path), 'r').read().rstrip() + sub = '-%s%s' % (version[3], git_commit_id) else: - import os - git_commit_id = open(os.path.abspath(git_head_path), 'r').read().rstrip() - sub = '%s commit %s' % (sub, git_commit_id) + sub = '-' + version[3] + str(version[4]) else: sub = ''