From ed996977f9a05947a28e1fb9c43ede7ceee7dee1 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 4 Jun 2014 08:57:34 +0200 Subject: [PATCH] highlight missing questions; show team size --- knowledge/survey/browser.py | 21 ++++++++++++---- knowledge/survey/view_macros.pt | 41 +++++++++++++++++++------------- locales/de/LC_MESSAGES/loops.mo | Bin 25619 -> 25793 bytes locales/de/LC_MESSAGES/loops.po | 6 +++++ 4 files changed, 47 insertions(+), 21 deletions(-) diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py index 205ad5b..1ca783c 100644 --- a/knowledge/survey/browser.py +++ b/knowledge/survey/browser.py @@ -45,6 +45,7 @@ class SurveyView(ConceptView): data = None errors = None minBatchSize = 10 + teamData = None @Lazy def macro(self): @@ -170,8 +171,8 @@ class SurveyView(ConceptView): score=int(round(r['score'] * 100)), rank=r['rank']) for r in values] if self.showTeamResults: - teamData = self.getTeamData(respManager) - teamValues = response.getTeamResult(values, teamData) + self.teamData = self.getTeamData(respManager) + teamValues = response.getTeamResult(values, self.teamData) for idx, r in enumerate(teamValues): result[idx]['average'] = int(round(r['average'] * 100)) result[idx]['teamRank'] = r['rank'] @@ -182,7 +183,8 @@ class SurveyView(ConceptView): values = response.values for qu in self.adapted.questions: if qu.required and qu not in values: - errors.append('Please answer the obligatory questions.') + errors.append(dict(uid=qu.uid, + text='Please answer the obligatory questions.')) break qugroups = {} for qugroup in self.adapted.questionGroups: @@ -194,7 +196,12 @@ class SurveyView(ConceptView): if minAnswers in (u'', None): minAnswers = len(qugroup.questions) if count < minAnswers: - errors.append('Please answer the minimum number of questions.') + if self.adapted.noGrouping: + errors.append(dict(uid=qugroup.uid, + text='Please answer the highlighted questions.')) + else: + errors.append(dict(uid=qugroup.uid, + text='Please answer the minimum number of questions.')) break return errors @@ -229,6 +236,12 @@ class SurveyView(ConceptView): title=opt['description'])) return result + def getCssClass(self, question): + cls = '' + if self.errors and self.data.get(question.uid) is None: + cls = 'error ' + return cls + 'vpad' + class SurveyCsvExport(NodeView): diff --git a/knowledge/survey/view_macros.pt b/knowledge/survey/view_macros.pt index cd14558..1a32b32 100644 --- a/knowledge/survey/view_macros.pt +++ b/knowledge/survey/view_macros.pt @@ -37,9 +37,15 @@ +

+ Team Size: +
  +

- + Back to Questionnaire
@@ -56,7 +62,7 @@ tal:condition="errors">
+ tal:content="error/text" />
@@ -79,20 +85,21 @@ i18n:translate="" tal:content="opt/label" /> - - - - - - + + + + + + + + 30PKD9>?*EEXpQ=0t(2gAtJb-C@Lu;ZsZ0okxPN#j;5FkSyv@Bb7^_iNz1KF z(-tEX$Ho@ZM$Kk2O3O5}QqjzEE46f-?~i+Up6>Jf=X1`v=bn4c|D5}(jq8xxzQbV9Km zGHRkdu^wid`ViCvMqoqUZxxvib4-T?7(j<5sFkh3T-=1c@ORXJUGK9jPs~E~%SN^5 zn)*m=NWBn)aJIR>6g7dB*nsz2>nV^5Ylm?!YM{dyh*ju?XHoqwp$52xx?d;WS$QK= zid&*y+yz5%AgbRu)WYVV`Yk~_mcm*JP4InegkPf``~{U#j~32=VW`w6qXx`E4K&=; z$75sarKlCVP+PPGwZ%J83)qjE$k7($Uo$;JgU;Ix)C&U=oC!5YO{5#DeK@LrF>0do zQ4?Q{G5C&YuR`^&#-?}|HKFj9&hyF0IktMVB>y_qV`s|K{8@nZ7FD=PN-D&LZzl3YC^fF zl@y{5-wf1ew-kNxdDH~gp`P1ndh!*W`cttIlkiJyfo>`M3Svu)$2@F?^D!K^pkDAXYAcSQCVbM= ze?m>V=u80s5e3Iuw9Aew5lj@`{0yWbN)Bt&?y)Hma=xNkMmZK)%LT%9o)4mLX2kENUyJA@8zm z)Qc-oFFb@gLq||&<~Hj5Suvd~YYYy-LHJKpD!tPzOMg5!M`ffB*1Q-sp^?}K3s9fi zEYtqDaXxB6i&4+LgxbS&+;b_zf3QWg|reg_eqNS(_ zJcS{+7B!J_)WCaD6aNHtrjB4bR$&utKt<2BM7<}&rl1G=q7F+A>P3a7J_U8E=b?T` zo;USPs4aNcv>!ob=pds^?bc7=Y9y*WDd0j9ka;43is0x zfmx^l3s4VEM7?-6Dnn(cRIf&@XeWl@XQp0_>UR%yW`cS-Hp6J@si=$%M?F8qrl8Mg zk-4!EwUXVY!)F*p{VZxgkKWD;LQu~op!#Q;_6LoVPz!hxmEmQmtz3sOSb>_jeT+gp zg)7($8~1Tmn2zDpN1!^+!bp4p)xR7yffJ~H*HIY^=MR|= zdiwsqp`aB1fLiG<=!t&)oUI8$t)vOMV?6Spm55qdd(>Bwg*t>eSQiV>2PdMQe+;9s z3^o2{4CVdScGKZw^x?))RH{y5G+sqzASl~uPeSc+CTcH-nf7ATR+JfEL}lnLRAvsE z`dQRZ_x~`I_gkS4I4@|8+T(tx?{y?bXE;7-|A>1IfQ;oKJ%u7>7#nB&_+~QG34{XJR=9V2eS{7IZ?bd;scq zp#ZhF^HAfgL2YR{*2n#*EvYj1FWRPq+hFH2YKVGqYxKt+s0<83t+)i0u~O8F7oaA- z8vSrB>acA^J%0c-;VKNoAF%=6KrP(%%yIsq;fo__$VDBVcTg#>LcQ=7Y6bdFVTllc zT1gjFYI9H%7=bzy>!!7t~?6~Bxc=N0tP_kV=K!!#U69j4S_&R%xG zVCs3OlubnqIM1}ZP%GYsN_8cM-~rU>KZ(l3In)HNU^3o8O(=0V{q+5(P|%CgQ4i#z zRxld%U=b?y(@?3Nhw8rs)qex3-*(glE3qpcM*RSJJ?I?9XlzTp6KabmqOF-PqtFi5 zqGt9V)C7*9?w>OCpN&_sG3~cdhb=JAnLsjX0-aH*?vHga*VKoh#vh3du`thk|Fg}F zd8idWjY{G3rsGSfJ>P*E;5*a{&S6KqgnDt@L(U6Ru|4%P)E`Q{)$KnZHRnW)dz z#&9fCL8pHMYQ;NH9ru{_k5NA?RoEA=;1TRR%E^S+Xy>Q8K5DDtP~)^kWvUBm0-30B zd*MJFh&|BWKtU_{5jEorsITBAYGrp&r@Stoi1xe@YM>-k|5QxHEYw8jn)_=}&%cTq z|83Ns??fHeLyorf6$Pd23~J`pro&YXrG6Kcq2NcH6*fn`I0ZGa9;lTMM6GBPhTul* zhr3aksFUwZ$On~?VD#4a-cNfjlZEj%bTbS z`4>172|+C|2{mqe)ctO%^M0!j1x+9q^@2j(z-g$J%|&JA8PwrfiAw2<#`UNSZAMLK zr*SVT)dx^pdK5M8G1NF`(AKFvOF=XI12w>1Q}-O>Ow14Uf~LkK)Wp(J6U##E#~AXj0p6!UDLIIm&{5P2e?)zD*RT;bD|Gfg4Yf6WPy@|E z4ZINb+;Y@J)}b=G4Yl%0bi>-KkLB7P7Sth_w$-%hCu9!gSYj&W7$TSQZPXP_`4^{X zWxB40weEYF+D_u4X%)|y@=$soHD&$yyhL5s1H=-_Z{T$FB$m1+gh$!+C_O>zAoZer z6TMJZPmCj$Q!YTA$g@O!%1wwrDC;`rV2!1%_Bu#G|G->?jZOP1EFn(UcCxJdEcV@+ zMXck-0c?j8iLHb#9g?SANfDuL%UxL!i5bIb->4g0`X*OWFR!U_8ZpN_r>3h!C*oUG zxU^sMUF8uC?IH9k{#(!Wl!p=f>9H335$Sq_Ya-E+xJHD~KAUJwc?nTP{6@5;O_z&E zraTOvFm0uj6DWUyi-}A=0qcJh))RfWF^PDVD5L%g@g1>(*g<&EUVG{PFYQ4*N$3d9 z!^eqxro(KkBsS8vjTlYnN+m`U|00^zw6UDt6xPs?hAoK=#3R&o1ySxxBvRHHev0xo z^mg5D8t&;%?Jrl8$awo#+7=R9Xh}f*vgmRr*3dSA7*DwnKhX`YX9@m9vzF0z3tJGn zsvWFxw0G5W#9~6%N(XBO^@YTI>S6jEcT*^$;RwD(Tq0_(muX*0Win>t6xZd*a66yc zE5xfrvFZ9FK4{8~agOTTuf2v+c*N9Qe`~Kxxe-ys{W8-YhR+i*L<{0g?yV#AW6PCl z^{27+szYHa^-zp3?G=<8P~MJFgs#_J??;9Dccb+=B83>?`XMT=Ln5Vo?zcu=4UK*Ke4vaLOZzS+2C`D7V$Fyy*D!E3{`3UlFO?YeftqdQrbYEF)eZI?&dM_<-_c zLO-zGUGGPS+hb_8iAM=temE9KnYst%U4$?76s&`TiD!tz)Ta{zDK{r-uR9dF69Y`! zmf9N_OZ-l(;GVB@IGwu-T=_BKLz~jPi3lWKB>sMFrtU{We_{_2Kt0d&>1H}UOnnvQ zM~NtNFT?dkOkB(h)MlENx%dz{Y2bHIg6M?`7ZG?q3dlTy<%G2f&ky~ z6UL37Ow1@MtT@)LyN6ePadhs4(u%;2p-p{?^QTXmP&9o;(G=Iw+^C9XLwr4xGNzQ~ zkDnY}STsF)=G5ZoAw@ip|5(YmqOtq;PM%EH=w8$F#}yUquN+r2r6M`+oX`IO#wx@Z delta 8607 zcmYk>3!INt{=o5P!nn^EBQp$U%(&k#gNVxg7AlvB#y#muCA4dw5D_JQXtOE0kV=$Y zODTHMU;eiKE39tXtaDc+?k$RCRm!R4)y0Y0g6z5_eJc@Q$r%@D@!-i(q{1J3(H=#$e9c{lKJ%VFs{m;>z_#WM%xO|JG!@6k0wrGbv&@CQ@u5@a6 ze<#|}eQ3w2P`)0kkbgOp@5V~x-wyfr&?Ei=omg7S(jAGTEE0B0T_xW2G-xO{=6q zHddv)Zm>DlBi|XlbR*F_b5C#{I^YArW$3^w(Fr~t@*6ST@BbwdcCZ6I`#tCiKR{>t zH*|t0&>cC0)~nb$iY8$ZdSr{xBU^)+xCL#u8-0Hm-NDb%1^pZ23=);vB%fI=v_V_6 zymu%chE>Slf;OCuUfTQ7TfGilz(#b1Td;JC(IeW0)_)7#iBE!GwPF9=svjt@JCuKb)yPNflJ{A`T4=rc=+3r6CtBQ&{db^l z6u6Sx(9dE9dV80ke=4rVmbeYs{pb^HjMdunCmddad3ZhA@odb*dFVt}g!~$G0?(oK zw#FpJ<3@TEtyJh!JT<(J(UmSjf5KOV^3CYhZx8uB z=mO#cq2M$+;90bT^XN>gbVzolI(nA1&!!zjCokIt%&?zw+J%W13tEdG!;6!ww8R(sv zg>Ll*6_QqGbaQ=L<{ADazNjtRRC1}I$=mh(q9ghk5DQLYp=n*W$ z7Pu1g@eTA2e1g{dGUQLAm+%a_gO$6o|E@5zYf>=>ZCHTLv@tq?wpbJUq7x}WJD!Rj z!5wJ3S=bF@tc9{2mw6Y)%z0EDrACSvJelU6jV?+5YbcYt9 z6L=7vKnh*q8g!t|SOd4C{T&SNKSalgzae2q=fjJ#mn9R)K`S&3`7Y>+u0(g>26W)* z!I|iQbI^$_L|6PE+W#u_j;%r4ZA6YBjy8uEFQFA*M;q=99t<8vC-fn@V_%2zAA{$@ z`}E6`iR57EQKCoK811)Pc;CA;A4k#P@L~iyff6kJj?v3C1N|kNA6yY!AKZ%8-;Mrm z970!m9Nm$V=tTaB_J0<;@UN}&*ej->OZUTF~?GkWeH%*$K+DgfTbr`W3ZD%Lm0IT*;(RVK(NIUygS85<0+MwBcXS z`rn4~a($Ecx#-H9qg&h=J<0)CAIG5+pNEZcEjGaTO%kr~B<5j-eo4g!SdaYWXoC`T z0t?Z4>(DLSg?9Wtx@aTi;W%8yEGju-~x1qA3_!yM~{*yN5M`^$KB{k{s+t8 z5wziZ=*m7pzmo6JOL!j3W9ERQ;~cboAr@d8wEwHo30@oC-;R|SKbk|rty+Wy_&Bz%4^ED>_F(qk z85U8X?XVELV?&&Tp8W%8hbeR=Yl2Up6MP!ID_hZt{2p!hdT>8Ffj^@Y&KQ!^uQ7!E zcZ+i=a3|WJXVVk!#uCiLqv#QQj;{P?^sC9dDmmMhXg__>&$a|Ja2k3fad^Kvynhk> ziuU-zfj`2kcnaNt|DY=_xH{Rg#^}JU(UtbZD%cmjY{Ss@)6ogXn1#!*8m>oI{xbH( z9XJN#=$hp6T#s&fjGoam=n6JtbKHfl!95;puC-SX4u7Dm@54Jx7y^3i(D&Sljy{&j73ToQ}EVXQ7vDIXZzC(FweQZuQ&f zcYiqK|AG$i5oY6wkUtZQMkNcZFpB+mYqBV?VjkMCHQI3}?1bIW0cW5CEy7}4g8m`3 z2fN^3@lLFL9si*jAHt^i33|CJk4|>7ExN;9M|1uT)SCjgY#@3BbI|go=+>{mEL@B3 z&=$1bc635-q8+}4ex8Rg509d^{WQAJG`>0ORYuEe#3cM7X@LE)2Oh+w=uV8hKKW@L zhaS-kw4?dx`v=hptU^2fEe^r;*aJ_a3n?y1Cfo(R{r%B}#e+$ByGLOz-hg%#qbpp5 z9q|#Yi|>T@U!xuTfDYidY(q_#FO`u+AtcW5j+ksHw!#%Q~R;r;TEUxQBI8FWG0L-}5;%J|VcB%J9-=;iqW z-O`i6Z_yq45uH%_gv1PVt81cXT8K`dG1^Z%^wM@jC)f{dKP2R@#n_pZkZ^$8gE4v( z%g~9fMb0YPhz__rlpn-ep$-3vPUIB2r9Y!9uaMeVyQo8rH2!Kr&R>j~r0Wy6ldex(P5KP_ zI3ZD$K&|#N(80B*qXv9SME`qgRQ-(lVCQo5Z6ObiyXYT4Ee|pDfaS ziRPrevhzr9!V0Nc_43MHMDA>=bG^p#KPX#3JWWYc^oPQy4DkqMQ-~W$Prx^Q!Ly9u z51Qx!%Kn8-2%j$!qREu|Umk8C77#uw6QVoF&nM=RukF|OM-me$IEb5xlf;E*4dqM7 z+=K)1mQ>aJym&0Rb;Nq&)(cf}WJu@YY+?lOFFeCZl!W~9UzDel&L$@Fer_nQh0BNn zq7m@|@75Cjgzn2{P)ke{|PHM^j3w^Nk&CXNurylX}bCi;;7 zC$W@RLA0l=Bk?-vTL^zoFH0RS$cx8QI)}K8@TrV9;OLO|C;tybCGzbt4Tlhmhy&#B zAO?{xA}%~XlemJoGL&t&@B#~o?}??ntDIcU