;ò
¢)?Bc           @   sÛ   d  Z  d k Z d k Z d k Z d k Z d k Z d k Z d k l Z d Z	 d Z
 d Z d Z d Z d Z e	 e
 e e e e f Z y e e f Wn e j
 o d	 Z d
 Z n Xg  Z d f  d „  ƒ  YZ d „  Z d S(   s1   Track pending actions which require confirmation.N(   s   mm_cfgs   Ss   Us   Cs   Hs   Es   Pi   i    s   Pendingc           B   sG   t  Z d „  Z d „  Z d „  Z d „  Z e d „ Z e i	 d „ Z
 RS(   Nc         C   s"   t  i i |  i ƒ  d ƒ |  _ d  S(   Ns   pending.pck(   s   oss   paths   joins   selfs   fullpaths   _Pending__pendfile(   s   self(    (    s   /var/mailman/Mailman/Pending.pys   InitTempVars5   s    c   
      O   s  | t j p t d | ‚ | i d t i ƒ } |  i	 ƒ  p t ‚ |  i
 ƒ  } xk t oc t i ƒ  }	 t i ƒ  |	 d t i ƒ  d } t i t | ƒ ƒ i ƒ  } | i | ƒ o PqS qS W| f | | | <| i d h  ƒ } |	 | | | <|  i | ƒ | Sd S(   sM   Create a new entry in the pending database, returning cookie for it.
        s   op: %ss   lifetimef1.0s	   evictionsN(   s   ops   _ALLKEYSs   AssertionErrors   kwss   gets   mm_cfgs   PENDING_REQUEST_LIFEs   lifetimes   selfs   Lockeds   _Pending__loads   dbs   Trues   times   nows   randoms   clocks   xs   shas   news   reprs	   hexdigests   cookies   has_keys   contents
   setdefaults	   evictionss   _Pending__save(
   s   selfs   ops   contents   kwss   xs	   evictionss   dbs   cookies   lifetimes   now(    (    s   /var/mailman/Mailman/Pending.pys   pend_new8   s"      "
c         C   su   y t  |  i ƒ } Wn< t j
 o0 } | i t i j o ‚  n h  d h  <Sn Xz t i	 | ƒ SWd  | i
 ƒ  Xd  S(   Ns	   evictions(   s   opens   selfs   _Pending__pendfiles   fps   IOErrors   es   errnos   ENOENTs   cPickles   loads   close(   s   selfs   fps   e(    (    s   /var/mailman/Mailman/Pending.pys   __loadX   s      c   
      C   s[  | d } t i ƒ  } x] | i ƒ  D]O \ } } | d d f j o q# n | | } | | j o | | =| | =q# q# Wx0 | i ƒ  D]" } | i	 | ƒ o | | =qƒ qƒ Wt
 i | d <d |  i t i ƒ  | f } t i d ƒ }	 ze t | d ƒ } z1 t i | | ƒ | i ƒ  t i | i ƒ  ƒ Wd  | i ƒ  Xt i | |  i ƒ Wd  t i |	 ƒ Xd  S(   Ns	   evictionss   versions   %s.tmp.%d.%di   s   w(   s   dbs	   evictionss   times   nows   itemss   cookies   datas	   timestamps   keyss   has_keys   mm_cfgs   PENDING_FILE_SCHEMA_VERSIONs   selfs   _Pending__pendfiles   oss   getpids   tmpfiles   umasks   omasks   opens   fps   cPickles   dumps   flushs   fsyncs   filenos   closes   rename(
   s   selfs   dbs   fps   tmpfiles	   timestamps	   evictionss   cookies   nows   datas   omask(    (    s   /var/mailman/Mailman/Pending.pys   __savec   s8    
 
 
  c         C   s‡   |  i ƒ  } | o | i | ƒ Sn |  i ƒ  p t ‚ | i | t ƒ } | t j o t
 Sn | | =| d | =|  i | ƒ | Sd S(   s    Return data for cookie, or None if not found.

        If optional expunge is True (the default), the record is also removed
        from the database.
        s	   evictionsN(   s   selfs   _Pending__loads   dbs   expunges   gets   cookies   Lockeds   AssertionErrors   _missings   contents   Nones   _Pending__save(   s   selfs   cookies   expunges   dbs   content(    (    s   /var/mailman/Mailman/Pending.pys   pend_confirm   s     c         C   sS   |  i ƒ  p t ‚ |  i ƒ  } | | | <t i ƒ  | | d | <|  i	 | ƒ d  S(   Ns	   evictions(
   s   selfs   Lockeds   AssertionErrors   _Pending__loads   dbs   datas   cookies   times   lifetimes   _Pending__save(   s   selfs   cookies   datas   lifetimes   db(    (    s   /var/mailman/Mailman/Pending.pys   pend_repend—   s
    
(   s   __name__s
   __module__s   InitTempVarss   pend_news   _Pending__loads   _Pending__saves   Trues   pend_confirms   mm_cfgs   PENDING_REQUEST_LIFEs   pend_repend(    (    (    s   /var/mailman/Mailman/Pending.pys   Pending4   s   		 		c         C   s˜   h  } |  i d ƒ o |  d =n | i d h  ƒ } xZ |  i ƒ  D]L \ } } t | ƒ } t	 f | d  t
 i f | | <| d t
 i | | <q@ W| Sd  S(   Ns   lastculltimes	   evictionsiÿÿÿÿ(   s   dbs   olddbs   has_keys
   setdefaults	   evictionss   itemss   cookies   datas   strs   SUBSCRIPTIONs   mm_cfgs   DEFAULT_SERVER_LANGUAGEs   PENDING_REQUEST_LIFE(   s   olddbs	   evictionss   dbs   cookies   data(    (    s   /var/mailman/Mailman/Pending.pys   _update    s     (   s   __doc__s   oss   shas   times   errnos   randoms   cPickles   Mailmans   mm_cfgs   SUBSCRIPTIONs   UNSUBSCRIPTIONs   CHANGE_OF_ADDRESSs   HELD_MESSAGEs	   RE_ENABLEs   PROBE_BOUNCEs   _ALLKEYSs   Trues   Falses	   NameErrors   _missings   Pendings   _update(   s   CHANGE_OF_ADDRESSs   _ALLKEYSs   cPickles   PROBE_BOUNCEs   Falses   HELD_MESSAGEs   errnos   randoms   UNSUBSCRIPTIONs   _updates   Trues   shas	   RE_ENABLEs   mm_cfgs   times   oss   _missings   Pendings   SUBSCRIPTION(    (    s   /var/mailman/Mailman/Pending.pys   ?   s,   						l