ó Û¶eTc@scdZddlZyddlmZWnek r9nXyddlmZWnek rjd„ZnXdefd„ƒYZ d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zddd„ƒYZdd d„ƒYZdeefd„ƒYZdefd„ƒYZdd!d„ƒYZdd"d„ƒYZdS(#s @@TR: This code is pretty much unsupported. MondoReport.py -- Batching module for Python and Cheetah. Version 2001-Nov-18. Doesn't do much practical yet, but the companion testMondoReport.py passes all its tests. -Mike Orr (Iron) TODO: BatchRecord.prev/next/prev_batches/next_batches/query, prev.query, next.query. How about Report: .page(), .all(), .summary()? Or PageBreaker. iÿÿÿÿN(treduce(t valueForKeycCs(t||ƒrt||ƒS||SdS(N(thasattrtgetattr(tobjtname((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt lookup_funcs t NegativeErrorcBseZRS((t__name__t __module__(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR"scCst|ttfƒS(N(t isinstancetinttfloat(tv((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt isNumeric%scCs1t|ƒ}|r-|dkr-t|ƒ‚ndS(Ni(RR(R tret((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt isNonNegative(s cCs |dk S(N(tNone(R ((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt isNotNone-scCs¾t|ƒ}|dkr+td|ƒ‚nd}x$|dkrW|d}|d}q4Wx$|dkr~|d}|d}q[Wx$|dkr¥|d}|d }q‚Wx$|d krÌ|d }|d }q©Wx$|d kró|d }|d }qÐWx$|dkr|d}|d}q÷Wx0|dkrM|dkrM|d}|d}qW|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|S(Nis.roman numeral for zero or negative undefined: tiètMiôtDidtCi2tLi tXitVtItDCCCCtCMtCCCCtCDtLXXXXtXCtXXXXtXLtVIIIItIXtIIIItIV(R t ValueErrortreplace(tntroman((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytRoman0s@         cCsttj|dƒS(Ni(Rtoperatortadd(tlis((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytsumSscCs6t|ƒ}|dkrdStt|ƒƒ}||S(s,Always returns a floating-point number. ig(tlenR R/(R.tlis_lenttotal((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytmeanVs   cCs%t|ƒ}|tt|ƒdƒS(Ni(tsortedR R0(R.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytmedian_s cCs tƒ‚dS(N(tNotImplementedError(R.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytvariancedscCs tƒ‚dS(N(R6(R.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt variance_ngscCs tƒ‚dS(N(R6(R.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytstandardDeviationjscCs tƒ‚dS(N(R6(R.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytstandardDeviation_nmst IndexFormatscBsƒeZdZd d„Zd„ZeZd„Zd„Zd„Z d„Z d„Z d„Z d „Z d „Zd „Zd „ZRS(s[Eight ways to display a subscript index. ("Fifty ways to leave your lover....") cCs#||_|d|_||_dS(Ni(t_indext_numbert_item(tselftindextitem((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt__init__vs  cCs|jS(N(R<(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR@{scCs|jS(N(R=(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytnumber€scCs|jddkS(Nii(R=(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytevenƒscCs |jƒ S(N(RD(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytodd†scCs|jddkS(Nii(R<(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyteven_i‰scCs |jƒ S(N(RF(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytodd_iŒscCs|jƒjƒS(N(tLettertlower(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytletterscCstdƒ|j}t|ƒS(NtA(tordR<tchr(R?R)((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRH’scCs|jƒjƒS(N(R+RI(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR*–scCs t|jƒS(N(R+R=(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR+™scCs|jS(N(R>(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRAœsN(RR t__doc__RRBR@t__call__RCRDRERFRGRJRHR*R+RA(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR;rs           tValuesGetterMixincBs eZd„Zddd„ZRS(cCs ||_dS(N(t _origList(R?torigList((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRB¤scCsY|r.g|jD]}t||ƒ^q}n |j}|rUtt||ƒƒ}n|S(N(RQRtlisttfilter(R?tfieldtcriteriatelmR((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt _getValues§s ( N(RR RBRRX(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRP£s t RecordStatscBs³eZdZd„Zd„Zd„Zd„Zd„Zdd„Z dd„Z ddd d d „Z d „Z d „Z d„Zd„Zd„ZeZeZd„Zd„ZRS(s6The statistics that depend on the current record. cCs1||}tj|||ƒtj||ƒdS(N(R;RBRP(R?RRR@trecord((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRB´s cCs t|jƒS(N(R0RQ(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytlength¹scCs |jdkS(Ni(R<(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytfirst¼scCs|jt|jƒdkS(Ni(R<R0RQ(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytlast¿scCsd|j|}y|j|}Wntk r2tSX|rZt||ƒ}t||ƒ}n||kS(N(RQt IndexErrortTrueR(R?RUt currentIndext otherIndext currentValuet otherValue((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt_firstOrLastValueÂs  cCs|j||j|jdƒS(Ni(RdR<(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt firstValueÍscCs|j||j|jdƒS(Ni(RdR<(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt lastValueÐst%sN/Aic Csî|j|j}|r(t||ƒ}n|}y|j|tƒ}Wntk rX|SXt|ƒ}|dkru|St|ƒ}y||d} Wntk r§|SX|dkrÃt | ƒ} nt | |ƒ} |ræt | ƒ|S| SdS(Ngidi( RQR<RRXRRR/R tZeroDivisionErrorR troundtstr( R?RUtsuffixtdefaulttdecimalstrectvalR.R2tpercent((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytpercentOfTotalÕs,      cCs tƒ‚dS(sHThis instance is not callable, so we override the super method. N(R6(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyROðscCsC|jdkrdS|jƒ}|j|}t|j||ƒSdS(Ni(R<RR[t PrevNextPageRQ(R?R[tstart((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytprevõs   cCsS|j|jƒ|jƒkr#dS|jƒ}|j|}t|j||ƒSdS(N(R<R[RRrRQ(R?R[Rs((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytnextýs   cCs tƒ‚dS(N(R6(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt prevPagesscCs tƒ‚dS(N(R6(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt nextPagesscCs tƒ‚dS(N(R6(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytsummaryscCs‚|dkrJ|dkrA|dkrA||krA|d|}qJd}n|dkrÛy||dWnt|ƒ}nX|dkr ||krØ|}qØqu||d}y|||dWqut|ƒ}quXnš|dkr7y||dWnt|ƒ}nX|d|}|d|krud}qun>d}||d}y|||dWnt|ƒ}nX|||fS(s8Copied from Zope's DT_InSV.py's "opt" function. iii(R0(R?Rstendtsizetorphantsequence((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyt_prevNextHelpers@ $      N(RR RNRBR[R\R]RdRReRfRqRORtRuRvRwt prev_batchest next_batchesRxR}(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRY±s$            tSummarycBs›eZdZd„Zd d„ZeZd d„Zd d„Zd d„Z d d„Z e Z d d„Z d d„Z d d „Zd d „Zd d „ZRS( sEThe summary statistics, that don't depend on the current record. cCstj||ƒdS(N(RPRB(R?RR((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRB;scCs|j|tƒ}t|ƒS(N(RXRR/(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR/>scCs|j|tƒ}t|ƒS(N(RXRR0(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytcountDscCs|j|tƒ}t|ƒS(N(RXRtmin(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR‚HscCs|j|tƒ}t|ƒS(N(RXRtmax(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRƒLscCs|j|tƒ}t|ƒS(s0Always returns a floating point number. (RXRR3(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR3PscCs|j|tƒ}t|ƒS(N(RXRR5(R?RUR.((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR5XscCs tƒdS(N(traiseNotImplementedError(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR7\scCs tƒdS(N(R„(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR8_scCs tƒdS(N(R„(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR9bscCs tƒdS(N(R„(R?RU((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR:esN(RR RNRBRR/R2RR‚RƒR3taverageR5R7R8R9R:(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR€8s          RrcBseZd„ZRS(cCsC||}t|||ƒ|_t|||ƒ|_||_dS(N(R;RsRyR[(R?RRRzRsRy((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRBjs (RR RB(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRrist MondoReportcBsDeZeZeZd„Zddd„ZeZd„Z d„Z RS(cCs ||_dS(N(RQ(R?toriglist((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRBvsicCsø|dkrtdƒ‚n|dkr6tdƒ‚n|j}t|ƒ}td|ƒ}t||t|jƒƒ}|||!}g} xht|ƒD]Z} || } || } |j|| ƒ} |j|| ƒ}| | |f}| j|ƒq–W| S(s%Returns list of ($r, $a, $b) isnon-zero overlapsnon-zero orphan(R6RQR0RƒR‚tranget_RecordStatsClasstappend(R?RzRstoverlapR{RRt origList_lenRytmySliceRtreltabs_trtatbttup((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytpageys$       cCs%t|jƒ}|j|dddƒS(Ni(R0RQR”(R?RŒ((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pytall’scCs|j|jƒS(N(t _SummaryClassRQ(R?((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyRx—s( RR RYR‰R€R–RBR”tbatchR•Rx(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyR†rs  (((((RNR,t functoolsRt ImportErrortCheetah.NameMapperRRR'RRRRR+R/R3R5R7R8R9R:R;RPRYR€RrR†(((sH/opt/freeware/lib64/python2.7/site-packages/Cheetah/Tools/MondoReport.pyts8        #      1‡1 \