ZEXP"Ë^((U OFS.FolderqUFolderqtqNt.}q(UidqUbloggerqU__ac_local_roles__q}qUnathanq ]q UOwnerq asUblogToolq (U"ëq (U#Products.PythonScripts.PythonScriptqU PythonScriptqttQU_objectsq(}q(U meta_typeqUScript (Python)qhU getUserInfoqu}q(hhhU getUsersBlogsqu}q(hhhUnewPostqu}q(U meta_typeqU Page TemplateqUidqUblogsqu}q(hUScript (Python)qhh utUnewPostq (U"êq!(hU PythonScriptq"ttQh(U"éq#(hU PythonScriptq$ttQUtitleq%UUblogsq&(U'q'(U'Products.PageTemplates.ZopePageTemplateq(UZopePageTemplateq)ttQh(U"èq*(hU PythonScriptq+ttQu."ëJ8((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Usizeq U _getitem_q U_getitemq U _getattr_q U_getattrqUcalendarqUstringqUcontextqUrequestqUresponseqUtraverse_subpathqU mkdateStringqU dictToCSSqU dictToAttribsqUMonthqU cal_headerqUyearqUmonthqUcal_bodyqU isBlogDayqUmkcalqUistodayqU monthBlogsq Ucatalogq!Umypathq"U blogDaySearchq#U blogSearchq$UblogMonthSearchq%UmyDateq&UDateTimeq'UmDOq(UtodayDOq)Udayq*Ulenq+Ublogsq,Umycalq-tU co_argcountq.KubU_paramsq/Usize=''q0Uidq1UblogToolq2U__ac_local_roles__q3}q4Unathanq5]q6UOwnerq7asU _bind_namesq8(cShared.DC.Scripts.Bindings NameAssignments q9oq:}q;U_asgnsq<}q=(Uname_containerq>U containerq?U name_subpathq@Utraverse_subpathqAU name_m_selfqBUscriptqCU name_contextqDUcontextqEusbU func_defaultsqF(UtqGU_codeqHTB,csdd„ZdS(Nsc$0s•t}t}dk‰dk‰ |tdƒ}||dƒ} t d„} dd„} dd„‰h‡‡‡d†‰3‡‡ ‡‡‡ d †‰S‡‡ ‡d †}[‡‡ d †}d‡d †‰ k‡‡d †}rd‡‡d†}z‡‡‡‡‡ d†}…|tdƒ‰†| ƒ}‡|t|ƒdƒƒ}ˆtƒ}‰||dƒƒ||dƒƒjo |}n‹||dƒƒ‰ Œ||dƒƒ‰||dƒƒ‰Ž||dƒƒ} ||||dƒdƒdƒddƒ‰||ƒ‰‘t t ƒo’||ƒ}"n”||ƒ}"|•ˆdƒdƒ–|ƒ}#—h|#d<|"d%(dayname)sstemplatesattribsstags-<%(tag)s %(attribs)s>%(monthname)ss firstweekdayisdayname(s_write_s_writes _getitem_s_getitems _getattr_s_getattrsNones header_fmtskwargss day_namessday_fmtsMonths month_fmtscalendarsfdays dictToAttribss month_headers days_headersday(skwargss_write_s_writes _getitem_s_getitems _getattr_s_getattrsNones header_fmts day_namessday_fmtsMonths month_fmtscalendarsfdays dictToAttribss month_headers days_headersday(sMonths dictToAttribsscalendar(sScript (Python)s cal_headers*O&!9)" 5)"csù3t}t}t}4hhdd<d<hdd<dd<d<dd<d d <hd d <d d <d<8td<td<}|9|dƒ|ƒ:|ˆdƒˆˆƒ} ;g} <hdd<}=hdd<}?xî| d?rá}@d }A||d ƒ||ƒd<B||dƒ||ƒd<|C|dƒo||dƒ|ƒ}nDˆ||dƒƒ||ƒd<Exð|dErã}F|o||dƒ||ƒd%(day)sstemplates(<%(tag)s %(attribs)s > %(days)s %s %s s dayconditions(s cal_headersheaderscal_bodys isBlogDaysbodyscal(s cal_headersheaderscal_bodys isBlogDaysbodyscal(s cal_headers isBlogDayscal_body(sScript (Python)smkcalSs c s[t}t}t}\tƒ}|]|dƒƒˆjo8||dƒƒˆjo||dƒƒ||dƒjo˜^d||dƒ||ƒd<||_|dƒdƒdƒo6`|||dƒdƒd|||dƒƒd%ssattribsshas_keysstylesbackground-color: #ccc;( s_write_s_writes _getitem_s_getitems _getattr_s_getattrsDateTimesDTtodaysmonthsyearsitem_fmt( sitem_fmts_write_s_writes _getitem_s_getitems _getattr_s_getattrsDateTimesDTtodaysmonthsyear(syearsmonth(sScript (Python)sistoday[sT&6 c sædt}t}t}exÀˆder³}f|||dƒdƒƒ||dƒjogd|||dƒdƒƒ|||dƒdƒƒ|||dƒdƒƒf} hd| ||dƒf||ƒd%s( s_write_s_writes _getitem_s_getitems _getattr_s_getattrs monthBlogssblogsitem_fmtsblogURL( sitem_fmts_write_s_writes _getitem_s_getitems _getattr_s_getattrs monthBlogssblogsblogURL(s monthBlogs(sScript (Python)s isBlogDayds .U.c skt}mˆdh||dƒƒ||dƒƒgd<ddsqIU_bodyqJT import calendar,string request = context.REQUEST response = request.RESPONSE def mkdateString(t_s=traverse_subpath): if len(t_s) == 3 and len(t_s[0]) == 4: # we need to check for numbers only with re if len(t_s[1]) == 1: t_s[1] = '0'+t_s[1] if len(t_s[2]) == 1: t_s[2] = '0'+t_s[2] get_date = '%s-%s-%s 00:00:00' % tuple(t_s) else: get_date = DateTime().ISO() return get_date def dictToCSS(css_dict,css=''): for item in css_dict.items(): css += '%s{%s}\n' % item return css def dictToAttribs(attrib_dict,attribs=''): if not same_type(attrib_dict,{}): return '' for item in attrib_dict.items(): if len(item[0]) and len(item[1]): attribs += '%s="%s" ' % item if len(attribs): return attribs return '' def cal_header(kwargs={}): header_fmt = {'dayattribs':{'class':'daynames','style':''},'daytag':'td', 'monthattribs':{'class':'monthname','colspan':'7'},'monthtag':'td', 'daycondition':None,'monthcondition':None} header_fmt.update(kwargs) day_names = 'Mon','Tue','Wed','Thu','Fri','Sat','Sun' day_fmt = {'template':'<%(tag)s %(attribs)s >%(dayname)s', 'attribs':header_fmt['dayattribs'],'tag':header_fmt['daytag']} month_fmt = {'template':'<%(tag)s %(attribs)s>%(monthname)s', 'monthname':Month,'attribs':header_fmt['monthattribs'], 'tag':header_fmt['monthtag']} fday = calendar.firstweekday() if fday: day_names = day_names[fday:]+day_names[:fday] # reorder the days for the header if header_fmt['monthcondition']: month_fmt = header_fmt['monthcondition'](month_fmt) month_fmt['attribs'] = dictToAttribs(month_fmt['attribs']) month_header = month_fmt['template'] % month_fmt days_header = '' for day in day_names: day_fmt['dayname'],day_fmt['attribs'] = day,header_fmt['dayattribs'] if header_fmt['daycondition']: day_fmt = header_fmt['daycondition'](day_fmt) day_fmt['attribs'] = dictToAttribs(day_fmt['attribs']) days_header += day_fmt['template'] % day_fmt return month_header,days_header def cal_body(**kwargs): body_fmt = {'dayattribs':{'class':'day'}, 'nondayattribs':{'class':'day','style':'visibility: hidden;'}, 'daytag':'td','weektag':'tr', 'weekattribs':{'weekclass':'','weekstyle':''}, 'daycondition':None,'weekcondition':None} body_fmt.update(kwargs) month_data = calendar.monthcalendar(year,month) days = [] day_fmt = {'template':'<%(tag)s %(attribs)s>%(day)s'} week_fmt = {'template':'<%(tag)s %(attribs)s >\n%(days)s" + cal_header(htmltag='div') #body_css = cal_body(daytag='div',weektag=None,daycondition=istoday) + "" header = " %s %s " % cal_header() body = cal_body(daycondition=isBlogDay) + "
" cal = header + body return cal def istoday(item_fmt): DTtoday = DateTime() if DTtoday.month() == month and DTtoday.year() == year and DTtoday.day() == item_fmt['day']: item_fmt['day'] = '%s' % item_fmt['day'] if item_fmt['attribs'].has_key('style'): item_fmt['attribs']['style'] = item_fmt['attribs']['style'] + 'background-color: #ccc;' else: item_fmt['attribs']['style'] = 'background-color: #ccc;' return item_fmt def isBlogDay(item_fmt): for blog in monthBlogs: if blog.created.day() == item_fmt['day']: blogURL = "%s/%s/%s" %(blog.created.year(),blog.created.month(),blog.created.day()) item_fmt['day'] = '%s' % (blogURL,item_fmt['day']) return item_fmt def blogDaySearch(DateObject): "do blog serach: is in date range, is in my path, does it have a subject blog" blogs = catalog(created={'query':[DateObject.earliestTime(),DateObject.latestTime()],'range':'minmax'}, path={'query':'/'+mypath,'level':0}, Subject={'query':'blog'},sort_on='created',sort_order='reverse') return blogs def blogSearch(DateObject,maxBlogs=10): blogs = catalog(created={'query':DateObject,'range':'max'}, path={'query':'/'+mypath,'level':0}, Subject={'query':'blog'}, sort_on='created',sort_order='reverse') if len(blogs) > maxBlogs: blogs = blogs[:maxBlogs] return blogs def blogMonthSearch(): mrange = calendar.monthrange(year,month) if mrange[0] < 1: mrange = (1,mrange[1]) firstDay = DateTime('%s-%s-%s 00:00:00' % (year,month,mrange[0])) blogs = catalog(created={'query':[firstDay,firstDay + mrange[1]],'range':'minmax'}, path={'query':'/'+mypath,'level':0}, Subject={'query':'blog'}) return blogs catalog = context.portal_catalog # set default catalog myDate = mkdateString() # parse the date from the url mDO = DateTime(myDate).latestTime() # create a date object todayDO = DateTime() # create a date object for today if mDO.day() == todayDO.day(): mDO = todayDO # if its today set the time to now #set up global vars month = mDO.month() Month = mDO.Month() year = mDO.year() day = mDO.day() mypath = request.PARENTS[0].absolute_url(relative=1) monthBlogs = blogSearch(todayDO) if len(traverse_subpath): blogs = blogDaySearch(mDO) else: blogs = blogSearch(mDO) calendar.setfirstweekday(6) # set cal to display sun first mycal = mkcal() #make calendar return {'calendar':mycal,'blogs':blogs} qKU Script_magicqLKUwarningsqM)UerrorsqN)U Python_magicqOU*ë qPu."ê˜((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_argcountq KU co_varnamesq (Uappkeyq Ublogidq Uusernameq UpasswordqUcontentqUpublishqU containerqU post_formatqU _getitem_qU_getitemqU _getattr_qU_getattrqUcontextqUrequestqUstringqUproductqUDateTimeqUuidqU postTitleqU postContentqUgetattrqUitemq tubU_paramsq!UUappkey,blogid,username,password,content,publish=None,container=None,post_format='stx'q"Uidq#UnewPostq$U__ac_local_roles__q%}q&Unathanq']q(UOwnerq)asU _bind_namesq*(cShared.DC.Scripts.Bindings NameAssignments q+oq,}q-U_asgnsq.}q/(Uname_containerq0U containerq1U name_subpathq2Utraverse_subpathq3U name_m_selfq4Uscriptq5U name_contextq6Ucontextq7usbU func_defaultsq8(NNUstxq9tq:U_codeq;Tµ csttdd„ZdS(sƒThis makes a Document with a unique id if there is no container path the function uses the members home directory. Make sure to set home directory creation on if your members are imported from a external user folder. The first 6 options are required for blogger compatiblity, but the functionality can be extended in Zope by using default values for agruements like the container one sstxcsÜt} t} d| tdƒ}  | | | dƒdƒƒdjo dd‚n dk}| o"| | tdƒd ƒƒ}n| td ƒ|ƒ}| | |d ƒd ƒ}| | t ƒd ƒƒ dd …ƒ}| | |d| |dƒ|dƒ…ƒdd…ƒ}|}| |dƒ|d|d|d|d|ƒt||ƒ}| |dƒdƒ|o#| | tdƒdƒ|dƒn|o |Sn dd‚dS(sƒThis makes a Document with a unique id if there is no container path the function uses the members home directory. Make sure to set home directory creation on if your members are imported from a external user folder. The first 6 options are required for blogger compatiblity, but the functionality can be extended in Zope by using default values for agruements like the container one sREQUESTsAUTHENTICATED_USERs getUserNamesAnonymous UsersPermission ErrorsIncorect Username or passwordNsportal_memberships getHomeFoldersrestrictedTraversesmanage_addProducts CMFDefaultsmillisisfinds is addNewsItemstitles descriptions text_formatstexts setSubjectsblogsportal_workflows doActionForspublishs newPost ErrorsThe item was not created!(s _getitem_s_getitems _getattr_s_getattrscontextsrequestsstrings containersproductsDateTimesuidscontents postTitles postContents post_formatsgetattrsitemspublish(sappkeysblogidsusernamespasswordscontentspublishs containers post_formats _getitem_s_getitems _getattr_s_getattrscontextsrequestsstringsproductsDateTimesuids postTitles postContentsgetattrsitem((sScript (Python)snewPosts&%  ")9 +-  N(sNonesnewPost(sNonesnewPost((sScript (Python)ssqU Script_magicq?KUwarningsq@)UerrorsqA)U Python_magicqBU*ë qCu."éØ((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uappkeyq Uusernameq Upasswordq U _getitem_q U_getitemqU _getattr_qU_getattrqUcontextqUrequestqUNoneqU user_infoqtqU co_argcountqKubU_paramsqUappkey,username,passwordqUidqU getUsersBlogsqU__ac_local_roles__q}qUnathanq]qUOwnerqasU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments q!oq"}q#U_asgnsq$}q%(Uname_containerq&U containerq'U name_subpathq(Utraverse_subpathq)U name_m_selfq*Uscriptq+U name_contextq,Ucontextq-usbU func_defaultsq.NU_codeq/Týcsd„ZdS(Nc st}t}|tdƒ}|||dƒdƒƒdjodd‚nt} yph|||tdƒdƒƒd ƒƒd <|d <|||tdƒdƒƒd ƒƒd <} Wn  nX | o( hdd <|d <|d <} n | SdS(NsREQUESTsAUTHENTICATED_USERs getUserNamesAnonymous UsersPermission ErrorsIncorect Username or passwordsportal_memberships getHomeFolders absolute_urlsurlsblogids title_or_idsblognames Undefined( s _getitem_s_getitems _getattr_s_getattrscontextsrequestsNones user_infosusername( sappkeysusernamespasswords _getitem_s_getitems _getattr_s_getattrscontextsrequestsNones user_info((sScript (Python)s getUsersBlogss% 1- ((s getUsersBlogs(s getUsersBlogs((sScript (Python)ssq0U_bodyq1Trequest = context.REQUEST if request['AUTHENTICATED_USER'].getUserName() == 'Anonymous User': # if not loged in we can't continue raise "Permission Error","Incorect Username or password" user_info = None try: user_info = {'url':context.portal_membership.getHomeFolder().absolute_url(), 'blogid':username, 'blogname': context.portal_membership.getHomeFolder().title_or_id()} except: pass if not user_info: user_info = {'url':'Undefined','blogid':username,'blogname':username} return user_info q2U Script_magicq3KUwarningsq4)Uerrorsq5)U Python_magicq6U*ë q7u.' ø((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqUblogsqU__ac_local_roles__q}q Unathanq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqT¤ The title

content title or id optional template id

Tuesday, March 11
calendar
Link qU content_typeqU text/htmlqUtitleqU Z bwriterqu."èÏ((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_argcountq KU co_varnamesq (Uappkeyq U _getattr_q U_getattrq UcontextqU getUserInfoqUemailqUnameqUuseridqU firstnameqUlastnameqUurlqtqubU_paramsqUappkeyqUidqU getUserInfoqU__ac_local_roles__q}qUnathanq]qUOwnerqasU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments q!oq"}q#U_asgnsq$}q%(Uname_containerq&U containerq'U name_subpathq(Utraverse_subpathq)U name_contextq*Ucontextq+U name_m_selfq,Uscriptq-usbU func_defaultsq.NU_codeq/Ttcsd„ZdS(Nc sÑt}||tdƒdƒ}|ddƒ}|ddƒ}|ddƒ}|d d ƒ}|d d ƒ} |d dƒ}  h|d<|d<| d <|d< | d<|d sq0U_bodyq1T getUserInfo = context.portal_memberdata.getProperty email = getUserInfo('email','no email') name = getUserInfo('name','no name') userid = getUserInfo('userid','no id') firstname = getUserInfo('firstname','no firstname') lastname = getUserInfo('lastname','no lastname') url = getUserInfo('url','no url') return {'name':name,'userid':userid,'url':url,'email':email, 'lastame':lastname,'firstname':firstname} q2U Script_magicq3KUwarningsq4)Uerrorsq5)U Python_magicq6U-í q7u.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ