;ņ Ü,1Dc @sśdklZlZlZlZlZdklZlZlZdk Z dk Z dk Z dk l Z dklZdklZdklZdklZdklZlZdkZd klZd Zd d d !Ze idƒZddddddddddddf Z dZ!dZ"dZ#dZ$dZ%dZ&d Z'ei(ƒZ)e*d!„Z+d"d#„Z,d$„Z-d%„Z.d&„Z/d'„Z0d(„Z1d)„Z2d*„Z3d+„Z4e d,„Z5d-„Z6d.„Z7d/„Z8d0„Z9d1„Z:d2„Z;d3„Z<d4„Z=d5„Z>d6„Z?d7„Z@d8„ZAd9„ZBd:„ZCd;d<„ZDd;d=„ZEd;d>„ZFd?„ZGd@„ZHd;dA„ZId;d"dB„ZJdC„ZKdDdEd;dF„ZLdDd;dG„ZMdH„ZNd;dI„ZOdJ„ZPdK„ZQdL„ZRdMfdN„ƒYZSdO„ZTdS(P(sjoinsfindsrfindsreplacessplit(stimes localtimesmktimeN(slistdir(srandint(s package_home(smanage_addPythonScript(smanage_addPageTemplate(sServers Transport(s html2safehtmls^Zope Blog Product 'COREBlog:utility' $Id: utility.py,v 1.12 2006/04/03 14:08:13 ats_shib Exp $s$Revision: 1.12 $i iž’’’s<.*?>sbsasisimgspres blockquotesbrspsh3sulsliseuc-jps shift_jissutf-8s iso-2022-jpsus-asciisnones wholovesya?cCs yt|ƒSWn |SnXdS(N(sintsvsdefault(svsdefault((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysr2i>sicCsP|djo tƒ}nt|ƒ}|dd|dd|d}|SdS(Nii'iidi(ssecondstimes localtimestsint_date(ssecondsint_datest((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pyssec_to_date_intDs    "cCs|d|d|}|SdS(Ni'id(syearsmonthsdaysint_date(syearsmonthsdaysint_date((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysday_to_date_intMscCst|dddƒSdS(Nič’’’i<(sget_relative_int_datesint_date(sint_date((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys get_yesterdaySscCst|dddƒSdS(Nii<(sget_relative_int_datesint_date(sint_date((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys get_tomorrowXscCs$t|||dddd ƒSdS(Nii<i (sget_relative_int_date_tsyearsmonthsday(syearsmonthsday((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysget_yesterday_t]scCs#t|||ddddƒSdS(Nii<i (sget_relative_int_date_tsyearsmonthsday(syearsmonthsday((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysget_tomorrow_tbscCsatttƒƒƒ}|d|d<|dd|d<|d|d<dd<ddt ƒD]3} | | |dj otdt| ƒ‚qqW| |di| |dƒ}|o;x8| |dD]$} y|i| gƒWq†q†Xq†Wn|oō| |d} xć| |dD]Ļ}| i|dƒo=|i|dƒo%| i|d|i|dƒƒqynMd } |i|dƒo|i|dƒ} n| i|d| |d ƒ|i|dƒo|i|dfƒqÖqÖWn| |d} xŽ| |dD]~}d }| i|dƒo| i|dƒ}n|i|dƒo|i|d|ƒqŹ|i|d||d ƒqŹW|i|ƒdS( NsFoldersSkin:%s does not exist.s skin_objectss8Object:%s in Skin(%s) conflicts object in COREBlog root.sObject:%s required for skin.s skin_foldersskin_propertiessidsstype(sselfsskins objectIdssskin_idssget_skin_dictssskinsshas_keysaftersKeyErrorsbefores remain_idsssub_object_idssrequired_object_listsidsremovesstrsmanage_copyObjectssobjSpecsmanage_delObjectssfldsds hasPropertys_updatePropertys getPropertysoldvalsmanage_addPropertysmanage_delPropertiessvaluesmanage_pasteObjects(sselfsaftersbefores write_backsobjSpecsvaluesskin_idssdssub_object_idssskinssoldvals remain_idssfldsid((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys aplly_skinäsj   %  ) cCsGt|ddƒ}g}x$t|dƒD]}|i|ƒq(W|SdS(Ns ss (sreplacesssret_lssplitslinesappend(sssret_lsline((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pyssplit_in_newline4s seuc_jpsCOREBlogcCsDt|||ƒ}t|ƒ}|t_ |i i ||ƒ}|SdS(N(sconvert_charcodes blogtitles char_codesfromcodesServers serverurlssvrs version_strs Transports user_agents weblogUpdatesspingsurlsresp(s serverurls blogtitlesurls char_codes version_strsfromcodesrespssvr((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys send_ping=s   c Cs¼t|iƒ}xĶtd|ƒD]¼}|i|} |i| ƒ}|i ot |i ||ƒ|_ n|i ot |i ||ƒ|_ n|iot |i||ƒ|_n|iot |i||ƒ|_n|iot |i||ƒ|_n|iot |i||ƒ|_n|iot |i||ƒ|_nxŲ|iddƒD]Ä} | i ot | i ||ƒ| _ n| iot | i||ƒ| _n| iot | i||ƒ| _n| iot | i||ƒ| _n| iot | i||ƒ| _q^q^Wx²|iddƒD]ž}|i ot |i ||ƒ|_ n|iot |i||ƒ|_n|iot |i||ƒ|_n|iot |i||ƒ|_q9q9WqWx`|iƒD]R} | iot | i||ƒ| _n| iot | i||ƒ| _qģqģW|iƒ}xg|D]_} | dddgjoB|i!| dƒ}|o$|i#| dt |||ƒƒq“qUqUWdS(Nisconsider_moderationstypesstringstextsid($slensselfs entry_listscountsrangescsidsgetEntrysobjstitlesconvert_charcodestocodesfromcodessubtitlesauthorsbodys rendered_bodysextendsexcerpts comment_listscomsemailsurlstrackback_liststbks blog_names category_listscatsnames descriptions propertyMapspmapsds getPropertysprops_updateProperty( sselfstocodesfromcodescountscsobjspmapspropstbkscatscomsidsd((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pyschange_site_encodeFsl                  $     cCsVdddddg}d}x0|D](}yt||ƒ|}PWq"q"Xq"W|SdS(sM Guess encodings. possible_encodings should be set in conf file. sutf-8seuc_jps shift-jiss iso-2022-jpsus-asciiN(spossible_encodingss guessed_encsencsunicodess(sselfsssencs guessed_encspossible_encodings((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys guess_encode„s c CsDt|ƒtdƒjo|idƒ}t}n|}ycdk}d}| o{|i|ƒ}||i jo t }q5||i jo t }q5||i jo t}q5||ijo t}q5ni|t jo |i }nO|t jo |i }n5|tjo |i }n|tjo |i}n||i jor|t jo d}n/|t jo d}n|tjo d}n|tjot|dƒi|ƒ}qšnä|t jo|i||ƒ}nĮ|t jo|i||ƒ}nž|tjo| oti|ƒ}n|djo d}n/|djo d}n|d jo d}n|djot||d ƒid ƒ}qšnWnžydk}|i } |t jo |i } n|t jo |i } n|tjo |i } n|tjo|i| ƒi|ƒ}nWq<q<XnX|SdS( Nusutf-8isjapanese.shift_jissjapanese.euc-jpsjapanese.iso-2022-jps shift-jisseuc_jps iso-2022-jpsignoresutf8(stypesssencodes code_utf8s fromcodestrsretstrspykfs pkf_fromcodesguesssEUCscode_eucsSJISs code_sjissUTF8sJISscode_jisscodestrstocodesunicodestoeucstosjissselfs guess_encodesfcodeskconvsto_codescode_ussKconvsconvert( ssscodestrs fromcodestrsfcodeskconvsretstrspykfs pkf_fromcodestocodesto_code((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysconvert_charcode”s€                               '          cCs³d}xntd|ƒD]]}dt||ƒjo djno)|djo d}n|dd}qd}qWd}|djo d}n|djo d}n|SdS(Nii”iži’’’’ii(sstsrangespossordsbuffsret(sbuffspossretsst((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysis_euc_1įs(       cCslt||ƒdjot||ƒdjp+t||ƒdjot||ƒdjodSndSdS(NiiŸiąi’ii(sordsbuffspos(sbuffspos((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys is_sjis_1ós\cCsś|}t|ƒ|joŁ|tjo2t||ƒdjo|d}n|| }qņ|tjo0t||dƒo|d}n|| }qņ|t jo>y&t |dƒ}|| i dƒ}Wqī|| }qīXqņ|| d}n|SdS(Nisutf-8sutf8sweofije( sssret_strslenslengthscodestrscode_eucsis_euc_1s code_sjiss is_sjis_1s code_utf8sunicodesussencode(ssslengthscodestrsussret_str((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysget_string_partłs$   s EmptyClasscBstZRS(N(s__name__s __module__(((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys EmptyClasssc CsµtitiBtiB}d}ti||ƒ}d}ti||ƒ} |i |ƒ}|o|d}nd}|id|ƒ}| i |ƒ}| id|ƒ}|||fSdS(Ns(.*?)s(.*?)is(sresDOTALLs IGNORECASEs MULTILINEsflagss title_patscompilest_pats category_patsc_patsfindallscontentst_lstssubsbodysc_l( scontentsbodyst_ls title_patst_pats category_patsflagsstsc_lsc_pat((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pysparse_blogger_posts(Usstringsjoinsfindsrfindsreplacessplitstimes localtimesmktimesressyssossdircacheslistdirsrandomsrandints App.Commons package_homes#Products.PythonScripts.PythonScriptsmanage_addPythonScripts'Products.PageTemplates.ZopePageTemplatesmanage_addPageTemplates xmlrpclibsServers Transports ThreadLocks stripograms html2safehtmls__doc__s __version__scompileshtml_tag_regexs valid_tagsscode_eucs code_sjiss code_utf8scode_jisscode_uss code_nonesrotorkeys allocate_locks_mutexsNonesr2issec_to_date_intsday_to_date_ints get_yesterdays get_tomorrowsget_yesterday_tsget_tomorrow_tsget_relative_int_datesget_relative_int_date_ts remove_htmls validate_htmlsgetNewIDs call_scriptscall_addentry_hookscall_before_addcomment_hookscall_addcomment_hookscall_before_addtrackback_hookscall_addtrackback_hooks make_rotorkeysencryptsdecrypts make_uniquesget_property_dictsrequired_object_listsget_skin_dictssadd_skin_foldersaddDTMLsaddPageTemplatesaddPythonScriptsaddGIFsadd_files_to_folders aplly_skinssplit_in_newlines send_pingschange_site_encodes guess_encodesconvert_charcodesis_euc_1s is_sjis_1sget_string_parts EmptyClasssparse_blogger_post(Js html2safehtmls remove_htmlsget_property_dictscode_ussmanage_addPageTemplatescall_before_addtrackback_hooksaddGIFsdecryptsreplaces guess_encodes EmptyClasssget_relative_int_dates code_nonesget_string_partsencrypts code_utf8scall_addcomment_hooksfindscode_eucs valid_tagssget_tomorrow_tsrandintshtml_tag_regexs is_sjis_1ssplit_in_newlines call_scripts code_sjissres send_pingssplits get_tomorrowsgetNewIDs __version__s get_yesterdays__doc__s localtimesmanage_addPythonScriptscall_addentry_hookslistdirs make_uniquesmktimesr2isadd_files_to_foldersis_euc_1schange_site_encodescall_before_addcomment_hookscall_addtrackback_hooks_mutexsServerssyssconvert_charcodesparse_blogger_postscode_jissget_yesterday_tsrotorkeysjoins make_rotorkeysget_relative_int_date_tsday_to_date_ints ThreadLocksaddDTMLsrequired_object_listsrfindssec_to_date_intsaddPythonScripts package_homestimesget_skin_dictssaddPageTemplates aplly_skins validate_htmlsoss Transportsadd_skin_folder((s=/mnt/gmirror/ports/www/zope-coreblog/work/COREBlog/utility.pys?s„%           *                 ]    P  >  M