hwj35
2 天以前 8326668cd16a084cd30d82e844284d1beb6cbe0f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
zÙPc@s    ddlZddlmZddlZddlZddlmZddlmZddl    m
Z
d„Z defd„ƒYZ d    efd
„ƒYZ d efd „ƒYZd „Zddd„ƒYZd„Zd„Zd„Zd„ZedkreƒndS(iÿÿÿÿN(tSONManipulator(twraps(tsleep(t
CommFuncExc        CsÛy´d}|d|}|jdi|d6dii|d6d6dtƒ}|r]|d}nV|jdi|d6dii|d6d    6dtd
tƒ}|r©|d}n
tdfSWntk
rÐ}tdfSXt|fS( Nis%s_seqtqueryt_idtupdatetseqs$inctnews$settupsert(tfind_and_modifytTruetFalsetNonet    Exception(    tdbtcollectionNamet    fieldNametfeedt    incrementtresultt
collectiont    resultObjte((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRs3 0      tObjectIdRemovercBseZd„ZRS(cCsd|kr|d=n|S(NR((tselftsonR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttransform_outgoing%s 
(t__name__t
__module__R(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR$stEncodeStringManipulatorcBs#eZd„Zd„Zd„ZRS(cCs ||_dS(N(tencoding(RR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyt__init__+scsi‡‡‡fd†‰‡fd†‰‡fd†}t|tƒrLˆ|ƒSt|tƒre||ƒS|S(Ncswt|tƒrˆ|ƒSt|tƒrEg|D]}ˆ|ƒ^q/St|tƒrstjˆj|ƒ\}}|S|S(N(t
isinstancetdicttlistt
basestringRtEncodingToUnicodeR(tvaluetvR(Rttransform_valuettransform_dict(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR(/s
cs1x*|jƒD]\}}ˆ|ƒ||<q W|S(N(titems(tobjecttkeyR&(R((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR)9scsx|D]}ˆ|ƒqW|S(N((t    containertitem(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttransform_list>s (R!R"R#(RRRR/((RR(R)s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttransform_incoming-s
 
 
csi‡‡‡fd†‰‡fd†‰‡fd†}t|tƒrLˆ|ƒSt|tƒre||ƒS|S(Ncswt|tƒrˆ|ƒSt|tƒrEg|D]}ˆ|ƒ^q/St|tƒrstjˆj|ƒ\}}|S|S(N(R!R"R#R$RtUnicodeToEncodingR(R&R'R(RR(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR(Ks
cs1x*|jƒD]\}}ˆ|ƒ||<q W|S(N(R*(R+R,R&(R((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR)Uscsx|D]}ˆ|ƒqW|S(N((R-R.(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR/Zs (R!R"R#(RRRR/((RR(R)s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRIs
 
 
(RRR R0R(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR*s        tBase64StringManipulatorcBseZd„Zd„ZRS(csf‡‡fd†‰‡fd†‰‡fd†}t|tƒrIˆ|ƒSt|tƒrb||ƒS|S(Ncset|tƒrˆ|ƒSt|tƒrEg|D]}ˆ|ƒ^q/St|tƒratj|ƒS|S(N(R!R"R#R$tbase64t    b64encode(R&R'(R(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR(is
 cs1x*|jƒD]\}}ˆ|ƒ||<q W|S(N(R*(R+R,R&(R((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR)rscsx|D]}ˆ|ƒqW|S(N((R-R.(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR/ws (R!R"R#(RRRR/((R(R)s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR0gs    
 
csf‡‡fd†‰‡fd†‰‡fd†}t|tƒrIˆ|ƒSt|tƒrb||ƒS|S(Ncset|tƒrˆ|ƒSt|tƒrEg|D]}ˆ|ƒ^q/St|tƒratj|ƒS|S(N(R!R"R#R$R3t    b64decode(R&R'(R(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR(„s
 cs1x*|jƒD]\}}ˆ|ƒ||<q W|S(N(R*(R+R,R&(R((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR)scsx|D]}ˆ|ƒqW|S(N((R-R.(R)(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR/’s (R!R"R#(RRRR/((R(R)s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR‚s    
 
(RRR0R(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR2es    cstˆƒ‡fd†ƒ}|S(Ncsyd}d}d}x`trtyˆ||ŽSWqtjjk
rp}|d7}t|ƒ||krq|‚qqqXqWdS(Ni
gš™™™™™¹?ii(R tpymongoterrorst AutoReconnectR(targstkwdst MAX_RECONNECTtRECONNECT_INTERVALtfailCntR(tfunc(s6.\server\db\PyMongoDataServer\DBCommon\DBController.pytwrapper s    
 
 (R(R>R?((R>s6.\server\db\PyMongoDataServer\DBCommon\DBController.pytreconnect_decoratorŸst DBControllercBsÂeZd„Zd„Zd„Zd„Zd d„Zed d dd d„ƒZ    ee
d„ƒZ ee e
e d„ƒZ ee
d    „ƒZed e
d
„ƒZed „ƒZed „ƒZRS(cCs‰||_||_||_||_||_t|_d|_d|_    d|_
|dkrlt ƒ|_ nt |ƒ|_ |jƒdS(NR3(thosttporttdbNametusertpwdR t    connectedR tconRt    lastErrorR2t
translatorRt
initialize(RRBRCRDRERFR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR ²s                                     cCsj|jsf|j|j|jƒs%tS|j|j|j|jƒ}|j    rb|j    j
t ƒƒn|St S(N( RGt    doConnectRBRCR tdoAuthenticationRDRERFRtadd_son_manipulatorRR (Rt
authResult((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRKÃs        cCsytj||ƒ|_Wndtk
r1}‚nOtjjk
rS}||_tStk
ro}||_tSd|_tSXt    |_
t    S(NsUnknown exception occur!( R6t
ConnectionRHt    TypeErrorR7tConnectionFailureRIR RR RG(RtipRCt    typeErrortfailureR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRLÍs                cCs¢|j s|j r!d|_tS|j||_|jd}y|j||ƒSWnItk
rq}||_tStk
r}||_tSd|_tSXdS(NsNot connected yet!tadminsUnknown exception occur!(RGRHRIR Rt authenticateRQR(RRDRERFtauthDBRTR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRMÞs                  cCsP|j|||dƒ\}}|s.tdfSx|D] }t|fSWtdfS(Ni(tfindR R R (RtcolNametspectfilterRtrecListtrec((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pytfind_oneñs 
  ic CsE|js"|jƒs"tgfSnt}g}|j|}|jr\|jj|dƒ}ny_|j||d|d|ƒ}    |jr¤|jjt    |    ƒdƒ}n t    |    ƒ}t
|fSWnƒt k
rà}
|
|_ ||fSt jjk
r} | |_ ||fStk
r*} | |_ ||fSd|_ ||fSXdS(NtlimittsortsUnknown exception occur!(RGRKR RRJR0R RYRR#R RQRIR6R7tOperationFailureR( RRZR[R\tmaxCnttsortByRtresultDictListtcoltresultCollectionRTterrR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRYùs4                    
    
    
    cCs·|js|jƒstSn|j|}|jrJ|jj|dƒ}ny|j|d|ƒWnOtj    j
k
r†}||_ tSt k
r¢}||_ tSd|_ tSXt S(NtsafesUnknown exception occur!(RGRKR RRJR0R tinsertR6R7RbRIRR (RRZt doc_or_docstisSafeRfRhR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRjs$                      c     Cs÷|js|jƒstSn|j|}|jr_|jj|dƒ}|jj|dƒ}ny&|j||d|d|d|ƒWnktk
r¤}||_    tSt
j j k
rÆ}    |    |_    tSt k
râ}
|
|_    tSd|_    tSXtS(NR    RitmultisUnknown exception occur!(RGRKR RRJR0R RRQRIR6R7RbRR ( RRZR[tdoctisUpsertRltisMultiRfRTRhR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyR.s,          &                cCsÓ|js|jƒstSn|j|}|jrJ|jj|dƒ}ny|j|d|ƒWnktk
r€}||_    tSt
j j k
r¢}||_    tSt k
r¾}||_    tSd|_    tSXtS(NRisUnknown exception occur!(RGRKR RRJR0R tsaveRQRIR6R7RbRR (RRZRnRlRfRTRhR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRqIs*                          cCs·|js|jƒstSn|j|}|jrJ|jj|dƒ}ny|j|d|ƒWnOtj    j
k
r†}||_ tSt k
r¢}||_ tSd|_ tSXt S(NRisUnknown exception occur!(RGRKR RRJR0R tremoveR6R7RbRIRR (RRZR[RlRfRhR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRrbs$                      cCs‡|js|jƒstSn|j|}y|jƒWnItk
rV}||_tStk
rr}||_tSd|_tSXtS(NsUnknown exception occur!(    RGRKR RtdropRQRIRR (RRZRfRTR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRsxs                   cCs­|js"|jƒs"tdfSn|j|}y|jƒ}Wnatjjk
rj}||_tdfSt    k
rŒ}||_tdfSd|_tdfSXt
|fS(NisUnknown exception occur!( RGRKR RtcountR6R7RbRIRR (RRZRftcntRhR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRtŒs            
    
     N(RRR RKRLRMR R_R@RYR RjR RRqRrRsRt(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRA±s"        
         cCsÔtjƒ}|j}|jddƒs0dGHdSd}d}|d}|j|ƒ|jd|ƒt|||ddƒ\}}|r”|dksšt‚t|||ddƒ\}}|rÊ|dksÐt‚dS(    Ntsas auth failed!t
tagSeqTesttIDttests%s_seqii(R6RPRVRWtdrop_collectionRtAssertionError(RHRRZRRRx((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttest_seq s     
 c    CsÒtƒ}g}|j|dƒ}||ks3t‚|j|dƒ}||ksWt‚idd6g}|j|dƒ}||ks‹t‚|j|dƒ}||ks¯t‚idd6g}|j|dƒ}|rö|itjdƒd6gksüt‚|j|dƒ}|r ||ks&t‚iidd6idd6gd6g}|j|dƒ}|rž|iitjdƒd6itjdƒd6gd6gks¤t‚|j|dƒ}|rÈ||ksÎt‚dS(Nitatbtc(R2R0R R{RR3R4(RJRR((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttest_StringManipulator±s*    +$Hc CsDd}tdddddƒ}|j|ƒ}|s9t‚|j|ƒ\}}|r`|dksft‚idd6}|j||ƒ}|s‘t‚|j|ƒ\}}|r¾t|ƒdksÄt‚|d}||ksàt‚idd6}id    d6}i|d
6}    |j|||    ƒ}|s(t‚|j|ƒ\}}|rUt|ƒdks[t‚|d}|d =||ks~t‚|j|ƒ}|s™t‚|j|ƒ\}}|rÀ|gksÆt‚id d 6}
|j    ||
ƒ}|sñt‚|j|ƒ\}}|rt|ƒdks$t‚|d}||
ks@t‚dS(NttagTestControllert    localhosti‰iRyt1iiR}is$setRiR~(
RARsR{RtRjRYtlenRRrRq( t testColNamet dbControllerRRuRntrecsR^R[t    updateDoctupdateDocWithModifiertsaveDoc((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyttest_DBControllerÌsD   
 
 
cCstƒtƒtƒdGHdS(Nstest ok!(R|R€R‹(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyRyúst__main__((R6tpymongo.son_manipulatorRR3t    tracebackt    functoolsRttimeRtCommonRRRRR2R@RAR|R€R‹RyR(((s6.\server\db\PyMongoDataServer\DBCommon\DBController.pyt<module>s$       ;:    ï            .