m
l>c           @   s  d  Z  d d d !Z d k Z d k l Z d k l Z l Z l Z l Z d k	 l
 Z
 d k l Z l Z d	 k l Z d
 k l Z l Z l Z l Z d k l Z d k l Z d k l Z d k l Z d k l Z d k l  Z  d k! l" Z" d k# l$ Z$ d k% l& Z& l' Z' d k( l) Z) l* Z* l+ Z+ l, Z, l- Z- l. Z. l/ Z/ l0 Z0 l1 Z1 l2 Z2 l3 Z3 l4 Z4 l/ Z/ l5 Z5 l6 Z6 l7 Z7 d k8 l9 Z9 l: Z: l; Z; l< Z< d k= l= Z= d k> l> Z> d e$ i$ f d     YZ? e e?  d S(   s=   Squishdot - a web-based news publishing and discussion systems   $Revision: 1.46 $i   iN(   s   time(   s   strips   joins   atois   replace(   s   unquote(   s   LOGs   ERROR(   s   ClassSecurityInfo(   s   PersistentMappings   HTMLFiles   MessageDialogs   InitializeClass(   s   aq_base(   s   IOBTree(   s   IISet(   s
   html_quote(   s   html_with_references(   s   Document(   s   REPLACEABLE(   s   ZCatalog(   s   html2safehtmls	   html2text(   s   CRLFs   tagRegexs	   file_paths   samedays   doAddPostings   getitems   addDTMLs   addImages   addTables   addArts   addFiles   addTexts   addDTMLs   addPythonScripts   stx_mins   stx_max(   s   ManageSquishdots   ModeratePostingss   AddPostingss   View(   s
   Squishfile(   s   Articlet
   SquishSitec           B   sH	  t  Z d  Z d Z d Z e   Z e i e d f  e i e	 d f  e i e
 d d f  e i e d d f  d Z d Z d Z h  d d <d	 d
 <d d <f Z d Z d Z d Z d Z g  Z h  d d <d e <d d <d d <h  d d <d d <d d <d d <h  d d <d d <d d <d d <h  d d <d d <d d <d d <h  d d <d d <d d <d d <h  d d <d d <d d  <d d <h  d d! <d d <d d" <d d <h  d d# <d d <d d$ <d d <h  d d% <d d <d d& <d d <f	 Z e i e	 d  e d' e    Z e i e	 d  e d( e    Z e i e	 d)  e d) e    Z e i e d   e d* e    Z e i e d  e d+ e    Z e i d,  e d- e    Z e i d.  e  e! d/ d.  d0 d. Z" e i d1  e  e! d2 d1  d0 d1 Z# e i d3  e  e! d4 d3  d0 d3 Z$ e i d5  e  e! d6 d5  d0 d5 Z% e i d7  e  e! d8 d7  d0 d7 Z& e i' d9  d:   Z( e i e d;  e) d<  Z* e i e	 d=  e) d>  Z+ e i e d?  d@   Z, e i' dA  dB   Z- e i dC  dD   Z. e i e dE  e/ Z0 e i' dF  dG   Z1 e i e dH  dI   Z2 e i e dJ  dK   Z3 e i e dL  dM   Z4 e i e dN  dO   Z5 e i e dP  dQ   Z6 e i e dR  dS   Z7 e i e dT  d d e) e) dU  Z8 e i e dV  g  e) dW  Z9 e i e dX  dY   Z: e i e dZ  d[   Z; e i' d\  d d]  Z< e i' d^  d_   Z= e i' d`  da   Z> e i' db  dc   Z? e i e	 dd  de   Z@ e i' df  dg   ZA e i e dh  di   ZB e i' dj  dk   ZC e i' dl  dm   ZD e i e dn  do   ZE e i' dp  dq   ZF e i e dr  d ds  ZG e i' dt  du   ZH e i e dv  dw   ZI e i e dx  dy   ZJ e i e dz  d{   ZK e i e d|  d}   ZL e i e d~  d   ZM e i e d  d   ZN e i e d  d   ZO e i e	 d  d   ZP e i d d  d   ZQ e i' d  d   ZR e i e
 d  d   ZS e i e
 d  d e) e) d d  ZT e i e d  d   ZU e i e d  e) d d d d  ZV e i e	 d  g  e) d  ZW e i e	 d  g  e) d  ZX e i e	 d  e) e) e) d  ZY e i e
 d  d   ZZ e i e
 d  d   Z[ e i' d  d d  Z\ e i e	 d  d   Z] e i e d  e) d d  Z^ e i e
 d  d   Z_ e` Za e i' d  e) d  Zb RS(   sT   A Squishdot Site is a self contained web-based news publishing and discussion systems   Squishdot Sitet   Managert	   Anonymouss   misc_/Squishdot/squishdot_imgi   s   misc_/Squishdot/squishlogot   idt   titlet   typet   stringt   modet   wt   HTMLi    it   labelt   Contentst   icont   actiont   manage_maint   targett   Viewt    t
   index_htmlt   Postingst   manage_postingst
   Moderationt   manage_moderationt   Subjectst   manage_subjectst   Optionst   manage_editFormt
   Propertiest   manage_propertiesFormt   Securityt   manage_accesst   Undot   manage_UndoFormt   Squishdot_manage_postingst   Squishdot_manage_moderationt   moderateArticlet   Squishdot_editFormt   Squishdot_manage_subjectst   Aboutt   aboutt   Readmes
   README.txtt   __name__t   Creditss   Credits.txtt   Licenses   License.txtt   Changess   Changes.txtt   Versions   version.txtt   _buildIndexingc         C   s   t  |  d  p t i i |  | |  n x! |  i   D] } |  i |  q7 Wx9 d d d d d d d g D] \ } } |  i
 | |  qj Wx! |  i   D] } |  i |  q Wx6 d d d d d d d
 d g D] } |  i | d  q Wd  S(   Nt   _catalogt	   meta_typet
   FieldIndext   authort   textToSearcht	   TextIndexR   t   subjectt   reviewedt   dateR   t	   reply_cntt   thread_patht   date_postedt   summaryR   (   s	   meta_types
   FieldIndex(   s   authors
   FieldIndex(   s   textToSearchs	   TextIndex(   s   titles	   TextIndex(   s   subjects
   FieldIndex(   s   revieweds
   FieldIndex(   s   dates
   FieldIndex(   t   hasattrt   selft   ZCatalogt   __init__R   R   t   indexest   namet   delIndext
   index_typet   addIndext   schemat	   delColumnt	   addColumn(   R=   R   R   RA   RC   (    (    tC   /home2/kennisonb/webapps/zope/Zope/Products/Squishdot/SquishSite.pyR.   q   s        t   updateIndexingc         C   s'   |  i |  i |  i  |  i |  d S(   sV    A a ZCatalog and appropriate indexes to this SquishSite if they aren't there already N(   R=   R.   R   R   t   recatalogPostingst   REQUEST(   R=   RK   (    (    RH   RI      s     RJ   c         C   sc   |  i i   x* |  i i   D] } |  i |  i   q W| d j	 o | i
 i | d  Sn d S(   s4    Clear the Catalog and then Index all the postings. t   HTTP_REFERERN(   R=   R/   t   cleart   datat   keysR   t   get_wrapped_postingt   indexRK   t   Nonet   RESPONSEt   redirect(   R=   RK   R   (    (    RH   RJ      s      t   manage_afterAddc         C   s2   y |  i   Wn t j
 o |  i   n Xd  S(   N(   R=   RJ   t   AttributeErrorRI   (   R=   t   itemt	   container(    (    RH   RU      s    R?   c         C   s#  |  i | |  |  i |
  } t   } | |  _	 | |  _
 | |  _ | |  _ | |  _ |	 |  _ d |  _ d |  _ | d j o d |  _ d |  _ n$ | d j o d |  _ d |  _ n | o | |  _ n
 d |  _ t   |  _ t   |  _ t   |  _ t |  d d  t |  d d d	  t |  i  } | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < t  |  |  _ |  i! d d  |  i! d d  |  i! d d  |  i! d |  t |  d d d  | d j o t |  d d d  t |  d d d  t |  d d d   t |  d! d" d#  t |  d$ d% d&  t |  d' d( d)  t |  d* d+ d*  t |  d, d- d.  n | d/ j p | d0 j o1t |  d d d1  t |  d d d2  |  i# } t$ |  o |   } n d } xE | D]= } | d3 d4 j o
 d5 } n | d3 d6 j o d7 } PqDqDW| o= t' | | d8 d9  t' | | d: d;  t' | | d< d=  n t |  d d d>  t |  d! d" d?  t |  d$ d% d@  t |  d' d( dA  t |  d* d+ dB  t |  dC dD dE  t |  dF dG dH  t |  d, d- dI  |  i( dJ dJ  |  i( dK dL  |  i( dM dN  |  i( dO dP  t) |  dM  } t | dQ dQ dR  t | dS dT dU  t | dV dV dW  t) |  dO  } t | dX dY dZ  } t | d[ d\ d]  } t | d^ d_ d`  } t | da db dc  } t | dd de df  } t) |  dJ  } t0 | dg dh  t0 | di dj  t0 | dk dl  t0 | dm dn  t0 | do dp  t0 | dq dr  t0 | ds dt  t0 | du dv  t) |  dK  } t0 | dw dx  t0 | dy dz  t0 | d{ d|  t0 | d} d~  t0 | d d  t0 | d d  t0 | d d  t0 | d d  t0 | d d  t |  i  } | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < | i h  d
 d <d d <d d < t  |  |  _ |  i! d d  |  i! d d  | d/ j o$ |  i! d d  |  i! d d  n! |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i! d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  |  i1 d d  h  } x1 t2 d d d  D] } t4 | d |  | | <q
W|  i | d } t6 | d  | i7 t8 | d  t8 | d  t8 | d  f } | | _7 | i7 t8 | d  } | | _7 n d  S(   Ni    t   bothi   t   articlesi   t   validatePostingt   rdfs   Netscape RDF/RSS channel paget   Squishdot_rdf_rssR   t   rss_descriptionR   R   R   t   wdt	   rss_titlet   rss_image_urlt   admin_addressR   s   squishdot@yahoo.coms   Squishdot: Cool Dope on Zopet	   mail_htmls   Notification Emailt   Squishdot_mail_htmlt   plaint   showMessages   Show Messaget	   showErrors
   Show ErrorR   s   Squishdot Homepaget   Squishdot_index_htmlt   posting_htmlt   Postingt   Squishdot_posting_htmlt
   searchForms   Search Formt   Squishdot_searchFormt   showSearchResultss   Search Resultst   Squishdot_searchResultst   addPostingForms   Add Posting Formt   previewPostings   Preview Postingt   Squishdot_previewFormt   demo1t   demo2s   demo/showMessages   demo/showErrorRA   t	   TinyTablet   manage_addTinyTablet   TinyTablePlust   manage_addTinyTablePlust   bottom_itemss   demo/bottom_itemst   leftbox_itemss   demo/leftbox_itemst   rightbox_itemss   demo/rightbox_itemss   demo/Squishdot_index_htmls   demo/Squishdot_posting_htmls   demo/Squishdot_searchForms   demo/Squishdot_searchResultss   demo/addPostingFormt   site_footers   Site Footers   demo/site_footert   site_headers   Site Headers   demo/site_headers   demo/Squishdot_previewFormt   Imagest   TopicImagess   Topic Imagest   misc_methodss   Misc. methodst   rightbox_methodss   Right box methodst   advertisings   demo/misc_methods/advertisingt   copyright_noticet	   copyrights   demo/misc_methods/copyrightt	   quotations   demo/misc_methods/quotationt   featurest   Featuress   demo/rightbox_methods/featurest   prev_articless   Previous Articless"   demo/rightbox_methods/prevarticlest   quick_linkss   Quick Linkss    demo/rightbox_methods/quicklinkst   request_commentss   Requests for Commentss!   demo/rightbox_methods/reqcommentst   reviewst   Reviewss   demo/rightbox_methods/reviewst   botshadow_imgs   demo/Images/botshadow.gift   roundedge_imgs   demo/Images/roundedge.gift   rtbotshadow_imgs   demo/Images/rtbotshadow.gift   rtshadow_imgs   demo/Images/rtshadow.gift   sitetitle_imgs   demo/Images/sitetitle.gift   bluepix_imgs   demo/Images/bluepix.gift   greenpix_imgs   demo/Images/greenpix.gift
   advert_imgs   demo/Images/advert.gift   dc_imgs   demo/TopicImages/dc.gift   zope_imgs   demo/TopicImages/zope.gift   dtml_imgs   demo/TopicImages/dtml.gift   help_imgs   demo/TopicImages/help.gift   squishdot_imgs   demo/TopicImages/squish.gift   zopedev_imgs   demo/TopicImages/zopedev.gift   zdp_imgs   demo/TopicImages/zdp.gift   zserver_imgs   demo/TopicImages/zserver.gift   dope_imgs   demo/TopicImages/dope.gift   color1t   color2t   color3t   linedot_imaget   color4t   color5t   drop_shadowt   intt
   round_edget   title_imaget	   site_namet   comment_spillovert   prevday_cntt
   admin_names   #000000s   #ffffffs   #006666s   Images/greenpix_imgs   #0066ccs   Images/bluepix_imgs   #ccccccs   #333333s   Images/sitetitle_imgt	   Squishdoti
   i   s   the ZopeMeistert   Zopes   TopicImages/zope_imgs	   Zope DTMLs   TopicImages/dtml_imgt   Helps   TopicImages/help_imgs   Digital Creationss   TopicImages/dc_imgs   TopicImages/squishdot_imgs   Zope Developments   TopicImages/zopedev_imgs   Zope Doc Projects   TopicImages/zdp_imgt   ZServers   TopicImages/zserver_imgs
   Zope Dopess   TopicImages/dope_imgis   demo/messages/message%s.txti   s   demo/messages/images.zipi   i   i   (9   R=   R.   R   R   t   __of__t   parentt   wrapped_selft   timet   tt   createdt   modifiedt   mhostt	   mail_hostt   expt   expiret   mail_articlest   mail_repliest	   moderatedt   mod_commentt   max_itemlistt   IOBTreeRN   t   IISett   idst   PersistentMappingt   subjectst   addPythonScriptt   addDTMLt   listt   _propertiest   newpropt   appendt   tuplet   _updatePropertyt   default_doct   all_meta_typest   callablet   table_add_methodR0   t   addTablet   manage_addFoldert   getattrt   curr_foldert   feat_methodt   prev_methodt   quik_methodt
   rfc_methodt
   rev_methodt   addImaget   add_subjectt   ranget   it   addArtt   art8t   addFilet   rawt   str(   R=   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R0   R   (    (    RH   R?      s`   												((((	 
	((((((((((((( 4	t   __len__c         C   s   d S(   Ni   (    (   R=   (    (    RH   R   }  s    t   __getitem__RP   c         C   s@   |  i | } |  i |  i   t t t | i	   | i f  S(   N(
   R=   RN   R   t   objt   unrestrictedTraverset   getPhysicalPathR   t   mapR   t   thread(   R=   R   R   (    (    RH   RP     s    t	   dupStringc         C   s   | | S(   N(   t   dstrt   count(   R=   R   R   (    (    RH   R     s    t	   striptagsc         C   s   t  i d |  S(   NR   (   t   tagRegext   subt   s(   R=   R   (    (    RH   R     s    t	   html2textc         C   s
   t  |  S(   N(   R   R   (   R=   R   (    (    RH   R     s    t   html2safehtmlc         C   s   t  t | |  i d d    S(   Nt
   valid_tagst   bt   aR   t   brt   pt   h3t   ult   lit   font(
   R   R   R   s   brR   s   h3s   uls   lis   fonts   br(   t   stripR   t   textR=   t   getProperty(   R=   R   (    (    RH   R     s    t   has_subjectsc         C   s   t  |  i  S(   N(   t   lenR=   R   (   R=   (    (    RH   R     s    t   subject_countc         C   s
   |  i   S(   N(   R=   R   (   R=   (    (    RH   R    s    R   c      	   C   sk   | p+ t d d d d d | d d d d	  Sn | |  i | <d
 |  _ | o | i i | d  Sn d S(   s    add a subject topic R   s   Data Missingt   messages   You must enter a subject!R   t   URL1s   /manage_subjectsR   R   i   RL   N(	   R5   t   MessageDialogRK   t   imgurlR=   R   t
   _p_changedRS   RT   (   R=   R5   R  RK   RS   (    (    RH   R     s     		t   delete_subjectsc         C   sG   x | D] } |  i | =q Wd |  _ | o | i i | d  Sn d S(   s    delete a subject topici   RL   N(   t   subjst   subjR=   R   R  RK   RS   RT   (   R=   R  RK   R	  (    (    RH   R    s      	t   subjects_listc         C   s   |  i i   } | i   | S(   N(   R=   R   RO   t   sort(   R=   R   (    (    RH   R
    s    
t   subject_imagec         C   s*   |  i i |  o |  i | Sn d Sd  S(   NR   (   R=   R   t   has_keyR	  (   R=   R	  (    (    RH   R    s    t   setItemc         C   sH   t  | d |  } |  i i |  | |  i | <| o | i   n d  S(   Nt   aq_base(	   R   R   t   bobjR=   R   t   insertR   RN   RQ   (   R=   R   R   RQ   R  (    (    RH   R    s
    t   delItemc         C   s  |  i   } |  i }
 y |
 | i |   } Wn t j
 o d  Sn Xt   } | i
 |  | i |  } | i } | i } | i o | d } n | d } |  i	 i |  o |  i	 i |  nz |
 | i d } | i	 i |  x; | i D]0 } |
 | } | i | | _ | i | | _ q W|  i | i d  i   d  } xG | D]? } |
 | }	 |  i t |  i   d  |	 i   d |  qLWx | D] } |
 | =qWd  S(   Ni   it   /(   R=   R   t   physical_pathRN   R   R   RW   t   KeyErrorR   R   R  t   sub_idst   revsubt   review_countR8   R6   R  t   removeR   R   R   t   postingRP   RQ   RR   R   t   uncatalog_objectt   joinR9   (   R=   R   R  R8   R   R   R   RW   R  R   RN   R  (    (    RH   R    s@    					


 
 
3 t   createIdc         C   s8   t  t    } x" |  i i |  o | d } q W| S(   Ni   (   R   R   R   R=   RN   R  (   R=   R   (    (    RH   R    s
     t   data_mapc         C   s8   g  } x+ | D]# } | i |  i | i |    q W| S(   N(   t   resultR   R   R   R=   RN   R   (   R=   R   R   R  (    (    RH   R    s
     !t   postingValuesc         C   s    |  i |  i  } | i   | S(   N(   R=   R  R   RZ   t   reverse(   R=   RZ   (    (    RH   R   !  s    
t   rev_id_listc         C   s5   t  d  |  i  } t |  d  |  } | i   | S(   Nc         C   s   | i |  i S(   N(   R   RN   t   xR6   (   R#  R   (    (    RH   t   <lambda>+  s    (   R   RR   R=   R   t   rlistt   filterR!  (   R=   R%  (    (    RH   R"  (  s    
t	   item_listc         C   s%   t  t    } |  i |  i |   S(   N(   R   R   t   currtimeR=   R  t   id_list(   R=   R(  (    (    RH   R'  0  s    R)  c         C   s   |  i   } |  i } | d } t |  } | | j o nX |  i |  } t |  } | | j o | |  } n" | | j o | |  } n | } | S(   Ni   (   R=   R"  R%  R   t   maxt   minR   t   rlent   date_id_listR(  t
   today_listt   tlen(   R=   R(  R%  R+  R*  R,  R/  R.  (    (    RH   R)  6  s    	
t   other_id_listc         C   sW   |  i |  } t |  } |  i |  } t |  } | | j o | | Sn g  Sd  S(   N(	   R=   R-  R(  R.  R   R/  R)  t	   curr_listt   clen(   R=   R(  R2  R/  R.  R1  (    (    RH   R0  K  s    t
   other_listc         C   s%   t  t    } |  i |  i |   S(   N(   R   R   R(  R=   R  R0  (   R=   R(  (    (    RH   R3  W  s    R-  c         C   s   |  i   } t | d  |  S(   Nc         C   s   t  |  |  S(   N(   t   samedayR#  R   (   R#  R   (    (    RH   R$  `  s    (   R=   R"  R%  R&  R(  (   R=   R(  R%  (    (    RH   R-  ]  s    t	   date_listc         C   s-   t  t    d | } |  i |  i |   S(   NiQ (   R   R   t   dayR(  R=   R  R-  (   R=   R6  R(  (    (    RH   R5  c  s    t   site_id_listc   	      C   s   |  i |  } h  } g  } t |  } d } xw | | j  oi t |  d j  oV | | } |  i
 | } | i | i  o n | | | i <| i |  | d } q0 W| S(   Ni    i   i   (   R=   R)  R(  t   ilistt   tdictt   tlistR   t   ilent   cntR   RN   RW   R  R5   R   (	   R=   R(  R<  RW   R   R9  R8  R:  R;  (    (    RH   R7  i  s      
t   site_item_listc         C   s%   t  t    } |  i |  i |   S(   N(   R   R   R(  R=   R  R7  (   R=   R(  (    (    RH   R=  }  s    t   tpIdc         C   s   |  i S(   N(   R=   R   (   R=   (    (    RH   R>    s    t   tpURLc         C   s   |  i S(   N(   R=   R   (   R=   (    (    RH   R?    s    t   thisc         C   s   |  S(   N(   R=   (   R=   (    (    RH   R@    s    t   sitec         C   s   |  f S(   N(   R=   (   R=   (    (    RH   RA    s    t   site_urlc         C   s
   |  i   S(   N(   R=   t   absolute_url(   R=   (    (    RH   RB    s    t	   has_itemsc         C   s   t  |  i  S(   N(   R   R=   R   (   R=   (    (    RH   RD    s    t
   item_countc         C   s   t  |  i  S(   N(   R   R=   RN   (   R=   (    (    RH   RE    s    s   Add Squishdot Sitest   mailhost_listc         C   s#   y |  i d  SWn g  Sn Xd  S(   Ns	   Mail Host(   s	   Mail Host(   R=   t   superValues(   R=   (    (    RH   RF    s      t   expire_itemsc         C   s   |  i o |  i } t t   |  i d  } g  } x9 | i   D]+ } | | i
 | j  o | i |  q@ q@ Wx- | D]! } y |  i |  Wqv qv Xqv Wn d S(   Nf86400.0R   (   R=   R   RN   t   dR   R   R   R   RO   R   R   R   R  (   R=   RI  R   R   R   (    (    RH   RH    s    
	    t   dummyPostingc         C   s   t  d g  d d  i |   S(   s7    returns a dummy posting for the previewPosting method i    i   N(   t   ArticleR   R=   (   R=   (    (    RH   RJ    s     t
   addPostingc         C   s+   t  |  | | | d d d d d t d | S(   s    add an article R   R  s   Your article has been postedt   klassRQ   N(   t   doAddPostingR=   t   fileRK   RS   RK  RQ   (   R=   RO  RK   RS   RQ   (    (    RH   RL    s     t   searchc         C   s   | i d  o# | d o | i d | d  n | i d  o% | d d j o | i d d  n | i d d  |  i |  } t |  } |  i |  | d	 | d
 | S(   s    fulfill a search request t   bodyR3   t   opRZ   R0   RK  R6   i   t   search_resultst   result_countN(	   RK   R  t   setR=   t   __call__t   srR   t   rcRn   (   R=   RK   RW  RX  (    (    RH   RP    s     !t   manage_editc	   
      C   s9  | o t |  } n d } | oB y t |  |  }	 Wqf t d d d d d | d d  Sqf Xn | |  _	 | |  _ | |  _
 | |  _ | d	 j o d
 |  _ d
 |  _ nG | d j o d
 |  _ d |  _ n$ | d j o d |  _ d |  _ n | o | |  _ n
 d |  _ | d j	 o | i i | d  Sn d S(   s    edit SquishDot options  i    R   s   Invalid Mail HostR  s    Cannot find the named mail host!R   t   URLs   /manage_mainRY   i   RZ   t   nonei   RL   N(   R   t   atoiR   t   mailhostR   R=   t   vR  RK   R   R   R   R   R   R   RR   RS   RT   (
   R=   R   R   R   R   RK   R   R   R]  R^  (    (    RH   RY    s:       									t   manage_deletec         C   sV   t  t |  } x | D] } |  i |  q W| d j	 o | i i	 | d  Sn d S(   s0    delete selected articles from a Squishdot site RL   N(
   R   R\  R   R   R=   R  RK   RR   RS   RT   (   R=   R   RK   R   (    (    RH   R_    s      t   manage_reviewc         C   s_   t  t |  } x$ | D] } |  i |  i |   q W| d j	 o | i	 i
 | d  Sn d S(   s1    approve selected articles from a Squishdot site RL   N(   R   R\  R   R   R=   t   set_reviewedRP   RK   RR   RS   RT   (   R=   R   RK   R   (    (    RH   R`    s      t   moderation_processc         C   sg   | o |  i | d |  n | o |  i | d |  n | d j	 o | i i | d  Sn d S(   s6    do the processing for things from the moderation tab t   approvet   deleteRL   N(	   Rc  R=   R`  RK   Rd  R_  RR   RS   RT   (   R=   Rc  Rd  RK   (    (    RH   Rb    s     t   suggest_authorc         C   sF   d } y |  i i d } Wn n X| o t |  } n | p d  S(   NR   t   _suggest_author(   R2   R=   RK   t   cookiest   unquoteRR   (   R=   R2   (    (    RH   Re    s       t   suggest_emailc         C   sF   d } y |  i i d } Wn n X| o t |  } n | p d  S(   NR   t   _suggest_email(   t   emailR=   RK   Rg  Rh  RR   (   R=   Rk  (    (    RH   Ri    s       Ra  c         C   s   t  |  } | | i j o | | _ | d j o
 d } n! | d j o
 d } n
 t d  x> | i D]3 } |  i | } | i
 | | _
 | i | | _ qf W| i   n d  S(   Ni    i   is   unexpected value for reviewed(   R   R6   RW   t   modt   RuntimeErrorR   R   R=   RN   R   R  R8   RQ   (   R=   RW   R6   R   R   Rl  (    (    RH   Ra  (  s    	

	
 t   unmoderated_postingsc         C   s+   t  |  i h  d d <  t  |  i  j  S(   NR6   i   (   R   R=   t   searchResultsRN   (   R=   (    (    RH   Rn  <  s    RV  c         K   s7   t  |  i | f |  } | o t d   |  Sn | S(   Nc         C   s
   |  i   S(   N(   R#  t	   getObject(   R#  (    (    RH   R$  F  s    (   t   applyR=   Ro  RK   t   kwt   brainst   internalR   (   R=   RK   Rt  Rr  Rs  (    (    RH   RV  C  s    t   renderc         C   s   | p d Sn | d j o t t t |  d  Snb | d j o t | d  SnD | d j o6 t t t t | d  d d  d d	  t t	 !Sn d
 S(   NR   t   Plains   <BR>
R	   s   
t   STXs   t   leveli   s   Invalid Format!(
   t   storedLinest   formatR  R   t
   html_quoteR   t   html_with_referencest   replacet   stx_mint   stx_max(   R=   Ry  Rz  (    (    RH   Ru  M  s    6t	   sendEmailc      	   C   s   yU |  i oG t |  |  i  } |  i |  | d | d | d | } | i
 |  n WnB t d t d d |  i   | i   | i f d t i   n Xd  S(   Nt   newItemRk  t   manage_notifyR   s    Error sending notification emails   URL: %s%s/%st   error(   R=   R   R   R   Rc   RK   t   msgt   addressR  t   mailt   sendt   LOGt   ERRORRC  R9   R   t   syst   exc_info(   R=   R  R  RK   R  R   R  (    (    RH   R  [  s    
$(c   R)   t
   __module__t   __doc__R0   t   descriptiont   ClassSecurityInfot   securityt   setPermissionDefaultt   ManageSquishdott   ModeratePostingst   AddPostingsR   R   t   roott
   squishlogoR   t   encodingR   R   Rx  R   t   manage_optionst   declareProtectedt   HTMLFilet   globalsR   R   R#   R   R   t   declarePublicR&   t   Documentt   addTextR(   R*   R+   R,   R-   t   declarePrivateR.   RR   RI   RJ   RU   R?   R   t   getitemR   RP   R   R   R   R   R   R  R   R  R
  R  R  R  R  R  R   R"  R'  R)  R0  R3  R-  R5  R7  R=  R>  R?  R@  RA  RB  RD  RE  RF  RH  RJ  RL  RP  RY  R_  R`  Rb  Re  Ri  Ra  Rn  RV  Ru  t   REPLACEABLEt   render__replaceable__R  (    (    (    RH   R    *   s0   	$ f															9																						%							(@   R  t   __version__R  R   R   R   R  R\  R}  t   urllibRh  t   zLOGR  R  t   AccessControlR  t   GlobalsR   R  R  t   InitializeClasst   AcquisitionR  t   BTrees.IOBTreeR   t   BTrees.IIBTreeR   t   DocumentTemplate.DT_UtilR{  t   StructuredTextR|  t   OFS.DocumentR  t   OFS.ObjectManagerR  t   Products.ZCatalogR>   t
   stripogramR   R   t   Utilityt   CRLFR   t	   file_pathR4  RN  R  R   R   R   R   R   R  R   R~  R  t   SquishPermissionsR  R  R  R   t
   SquishfileRK  R    (0   Rh  R   R  R}  R   R   R   R   R  R  R  R   R  R    R   R   R4  RK  R|  R  RN  R  R  R  R   R~  R  R  R  R\  R  R  R  R>   R  R  R  R   R   R  R  R   R  R   R   R  R   R{  (    (    RH   t   ?   s4   	g   C