mò 1×Dc@sfdklZdkZdkZdkZdkZdkZdkZdkZdefd„ƒYZ dS((s ConnectionNtBasiccBsFtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zdddd „Z dd „Z d „Z d „Z d „Z d„Zd„Zd„Zd„Zdd„Zdd„Zd„Zd„Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Z d!„Z!d"„Z"RS(#NcCsN|iiƒ}|id|iƒ|id|i|ifƒ|iƒdS(Ns1CREATE TABLE %s ( name TEXT, type TEXT, value TEXT, time TIMESTAMP, PRIMARY KEY (name, type) ) sUCREATE INDEX %s_index ON %s (value) (tselft connectiontcursortexecutetnametclose(RR((tG/data/zmath/mirror/zope/Products/zauthors/zsite/zsystem/system/basic.pytinits  cCsK|iiƒ}y|id|iƒWntj onX|iƒdS(Ns)DROP TABLE %s (RRRRRt ExceptionR(RR((Rtkills cCsF|iiƒ}|id|i|||i|ƒfƒ|iƒdS(NsyINSERT INTO %s(name, type, value, time) VALUES('%s', '%s', '%s', 'now') ( RRRRRttypetquotetvalueR(RRR R R((Rtaddentry#s) cCs:|iiƒ}|id|i||fƒ|iƒdS(Ns^DELETE FROM %s WHERE name='%s' AND type='%s' (RRRRRR R(RRR R((Rtdelentry,s cCs:|iiƒ}|id|i||fƒ|iƒdS(Ns^DELETE FROM %s WHERE name~'%s' AND type~'%s' (RRRRRR R(RRR R((Rt delentries5s cCsF|iiƒ}|id|i||fƒ|iƒ}|iƒ|S(NsSELECT name, type, value, time FROM %s WHERE name='%s' AND type='%s' ( RRRRRR t dictfetchonetentryR(RRR RR((Rtgetentry>s   cCsF|iiƒ}|id|i||fƒ|iƒ}|iƒ|S(Ns¾SELECT name, type, value, time FROM %s WHERE name~'%s' AND type~'%s' ORDER BY name, type ( RRRRRR t dictfetchalltentriesR(RRR RR((Rt listentriesIs   s.*cCsU|iiƒ}|id|i|||fƒt|i|i ƒƒ}|i ƒ|S(Ns½SELECT DISTINCT name FROM %s WHERE type~'%s' AND name~'%s' AND value~'%s' ORDER BY name ( RRRRRR R tmaptheadtfetchalltnamesR(RR RR RR((Rt listnamesUs   cCsO|iiƒ}|id|i|fƒt|i|iƒƒ}|i ƒ|S(Ns SELECT DISTINCT type FROM %s WHERE type~'%s' ORDER BY type ( RRRRRR RRRttypesR(RR RR((Rt listtypesas  cCsF|iiƒ}|id|i|i|ƒ||fƒ|iƒdS(NsŽUPDATE %s SET value='%s', time='now' WHERE name='%s' AND type='%s' ( RRRRRR R R R(RRR R R((Rtsetvaluems) cCsa|iiƒ}|id|i||fƒ|iƒ}|iƒ|o|ddSndSdS(Ns~SELECT value FROM %s WHERE name='%s' AND type='%s' i( RRRRRR RR RtNone(RRR R R((Rtgetvaluews  cCsR|iiƒ}|id|i||fƒt|i|iƒƒ}|i ƒ|S(Ns~SELECT value FROM %s WHERE name~'%s' AND type~'%s' ( RRRRRR RRRtvaluesR(RRR RR!((Rt listvalues…s  cCs}tii|ƒ}tii|ƒp!ti|ƒti|dƒn|i i ƒ}|i d|i |fƒ|i ƒdS(Niÿs'COPY %s TO '%s' (tostpathtdirnametfiletfoldertisdirtmkdirtchmodRRRRRR(RR&RR'((Rtdumps  cCs7|iiƒ}|id|i|fƒ|iƒdS(Ns)COPY %s FROM '%s' (RRRRRR&R(RR&R((Rtloadœs cCs||jo|Sn|S(N(txty(RR-R.((Rtmin¤s cCs||jo|Sn|S(N(R-R.(RR-R.((Rtmaxªs cCs#|iƒ|o|iƒn|S(N(tlisttsorttreverse(RR1R3((RR2°s cCs'|ob|iddƒ}|iddƒ}|iddƒ}|iddƒ}|id d ƒ}|Snt|ƒtifjoZxAtt|ƒd ƒD])}t i d d ||ƒi ƒ||t|ƒtitifjoti|ƒSn t|ƒSdS(N( R R RRCRDtpsycopgtDATETIMERIR(RR ((Rt pgdatetimeÚs cCs|dS(Ni(R1(RR1((RRâscCs|dS(Ni(R1(RR1((RttailæscCsP|djo|i|iƒn,|djo|i|iƒn |iƒ|S(NtidR(tbyR1R2Rt_by_idt_by_name(RR1RT((RR2ês    cCsOt|dƒt|dƒ}}||jodSn||jodSndS(NRSiÿÿÿÿii(RMtlefttrighttltr(RRWRXRYRZ((RRUós !  cCsC|d|d}}||jodSn||jodSndS(NRiÿÿÿÿii(RWRXRYRZ(RRWRXRZRY((RRVûs   cCs¬tit|ƒƒ}tidd|ƒ}tidd|ƒ}tit|ƒƒ}tidd|ƒ}tidd|ƒ}||jodSn||jodSndS(Ns &(\w)uml;s\1esßtssiÿÿÿÿii(RAtlowerRIRWR>R?RX(RRWRX((Rtsorthtmls  cCsStid|ƒp|Sn|djodSnd|dd!|dd!|d fS(Ns^\d\d\d\d\d\d\d\d$t00010101R6s%s.%s.%siii(R>tmatchttext(RR`((Rt text2dates  cCs>tid|ƒp|Snd|dd!|dd!|d fS(Ns^\d\d\.\d\d\.\d\d\d\d$s%s%s%sii iii(R>R_tdate(RRb((Rt date2textsc Cs5tiddtiddtiddd|ƒƒƒS(Ns,$s,0s0+$R6s\.RHs%f(R>R?tfloat(RRd((Rt float2text scCstiddd|ƒS(Ns\.RHs%.2f(R>R?Rd(RRd((Rt float2price$scCs"ttiti|dƒdƒƒS(NRHt.(RdRARBRJtprice(RRh((Rt price2float(scCs.ti|ƒ}tid|ƒodSndS(NsM^[0-9a-zA-Z_&.%+-]+@([0-9a-zA-Z]([0-9a-zA-Z-]*[0-9a-zA-Z])?\.)+[a-zA-Z]{2,6}$ii(RAR@temailR>R_(RRj((Rtis_valid_email,s(#t__name__t __module__RR RRRRRRRRR R"R+R,R/R0RR2R RGRNRQRRRRURVR]RaRcReRfRiRk(((RRsB                   ( Rt ConnectiontcryptRAR>R#RREROR( RARoRER>RnRORR#R((Rt?s ?