mς
§DEc           @   sJ  d  k  Z  d  k Z d k l Z h  Z d d  Z d d  Z d d  Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d f  d     YZ d f  d     YZ d  d  Z d f  d     YZ e h  d e <d d <d  e h  d e <d d <d  e h  d e <d d <d  d f  d     YZ e   Z d   Z d  S(   N(   s   logt   languagec         C   s
   |  i   S(   s   this is patched on prefs classes which don't define the getAccepted
    classes but define the deprecated getPreferredLanguages methodN(   t   selft   getPreferredLanguages(   R   t   requestt   kind(    (    tU   /home2/kennisonb/webapps/zope/Zope/Products/PlacelessTranslationService/Negotiator.pyt   getAcceptedHelper   s     c         C   s‘   t  |   t  h   j	 o h  d |  <d d <}  n t i |  p g  t | <n t |  d d  p t |  d _ n t | i |   t | i	 d    d  S(   Nt   klasst   priorityi    t   getAcceptedc         C   s   t  | d |  d  S(   NR   (   t   cmpt   yt   x(   R   R   (    (    R   t   <lambda>   s    (
   t   typet   prefst   _langPrefsRegistryt   has_keyR   t   hasattrR   R	   t   appendt   sort(   R   R   (    (    R   t   registerLangPrefsMethod   s       c         C   sJ   xC t  | D]7 } | d |   } | i |  |  } | o | Sq q Wf  S(   s   get higest prio method for kindR   N(   R   R   t   preft   envt   handlerR	   t   accepted(   R   R   R   R   R   (    (    R   t   getLangPrefs   s      c         C   s   |  i d d  S(   t   filtert   _t   -N(   t   langt   replace(   R   (    (    R   t   lang_normalize!   s     c         C   s
   |  i   S(   R   N(   t   aStringt   lower(   R!   (    (    R   t	   str_lower%   s     c         C   s
   |  i   S(   R   N(   R!   t   strip(   R!   (    (    R   t	   str_strip)   s     c         C   so   |  i d  } | i d  } t |  d j  p t |  d j  o t Sn | d d j o | d | d j S(   Nt   /i   i   t   *i    (   t	   availablet   splitt   avt	   preferredt   prt   lent   False(   R(   R+   R,   R*   (    (    R   t   type_accepted-   s
    &c         C   s   |  i |  S(   N(   R(   t
   startswithR+   (   R(   R+   (    (    R   t   lang_accepted5   s    c          O   s   d  S(   N(    (   t   at   kw(    (    R   t   _false9   s    t   BrowserAcceptc           B   sA   t  Z h  d e f <d e e e f <Z d   Z d d  Z RS(   Ns   content-typeR    c         C   s   d  S(   N(    (   R   R   (    (    R   t   __init__D   s    c         C   sΡ  | i } d | i   } | d j o d i   } n d | i   } y" | | d  } | | d  }	 Wn d k	 l
 } |   d  Sn X| oΝ |	 oΖ | | i i d  j o­ g  } | i d  D] } | | i   qΕ ~ } g  } |	 i d  D] } | | i   qυ ~ }	 xa | D]> } | |	 j o | |	 } Pq| i i d d	 d
 |	 } qWn | d |	 i d  } g  } d } t |  } |  i i | f   } xυ | D]ν } x | D] }
 |
 |  } qΆW| oΓ | i d d  } g  } t |  d j oR yD | d } | i d  o& | i d d  d } t |  } n WqPqPXn | g  j o t | |  } n | i  | | d f  | d 7} q©q©W| i!   | i"   g  } | D] } | | d qΉ~ S(   Ns   user_%ss   content-typet   HTTP_ACCEPTs   HTTP_ACCEPT_%st    (   s	   print_exct   custom_namet   ,t   pathR&   i    t   ;i   i   s   q=t   =(#   R   t   getR   R"   R9   t   uppert   header_namet   user_acceptst   http_acceptst	   tracebackt	   print_exct   cookiest   _[1]R)   R2   R$   t   lt   req_acceptst   RESPONSEt   expireCookiet   acceptst   iR-   t   lengthR   t   filterst   acceptt
   normalizert   qualityt   qR0   t   floatR   R   t   reverse(   R   R   R   RA   RO   RN   RQ   RR   R@   RB   RP   R>   R2   RH   R9   RD   RL   RK   RG   RF   RM   (    (    R   R	   G   sd    	'00 
  


(   t   __name__t
   __module__R#   R    R%   RN   R6   R	   (    (    (    R   R5   =   s   $	t   CookieAcceptc           B   s,   t  Z e e e f Z d   Z d d  Z RS(   Nc         C   s   d  S(   N(    (   R   R   (    (    R   R6      s    R    c         C   s   t  | d  p f  Sn | i i d d   } | oI t |  t i j o | Sq x |  i
 D] } | |  } q\ W| f Sn f  Sd  S(   NRE   t   pts_language(   R   R   RE   R>   t   NoneR    R   t   typest	   TupleTypeR   RN   R   (   R   R   R   R    R   (    (    R   R	      s    
 (   RU   RV   R#   R    R%   RN   R6   R	   (    (    (    R   RW      s   	c         C   so   t  |  t i j o | d } n t t |   } |  i i d |  | o | i i
 | i  n | Sd S(   s   sets the language to a cookie

    request - the request object
    lang - language as string like de or pt_BR (it's normalizd)
    i   RX   N(   R   R   RZ   R[   R#   R    R   RI   t	   setCookiet   REQUESTt   redirectt   URL0(   R   R   R]   (    (    R   t   setCookieLanguage   s     t   RequestGetAcceptc           B   s,   t  Z e e e f Z d   Z d d  Z RS(   Nc         C   s   t  d t i  d  S(   Ns^   DeprecationWarning: The RequestGetAccept handler is deprecated and will be removed in PTS 1.5.(   t   logt   loggingt   WARNING(   R   R   (    (    R   R6   ³   s    R    c         C   sΧ   | i } | i d d   } | i d d   } | o x |  i D] } | |  } q> Wy4 | d j p | i	   d j o
 t
 } n t } Wn! t t f j
 o } t } n X| o t | |  n | f Sn f  Sd  S(   NR    t   setlanguagei   t   1t   truet   yes(   Rf   s   trues   yes(   R   t   formR>   RY   R    t   setLanguageR   RN   R   R"   t   TrueR.   t
   ValueErrort   AttributeErrort   msgR`   (   R   R   R   Ri   R    R   Rn   Rj   (    (    R   R	   ·   s"    	
  

(   RU   RV   R#   R    R%   RN   R6   R	   (    (    (    R   Ra   °   s   	R   R   i
   i(   s   content-typet
   Negotiatorc           B   sG   t  Z h  d e <d e <Z d d  Z d   Z d   Z d   Z RS(   Ns   content-typeR    c         C   s   t  |  } |  i | | |  S(   N(   t   tuplet   choicesR   t
   _negotiateR   R   (   R   Rq   R   R   (    (    R   t	   negotiateί   s    c         C   sw   t  | |  } |  i i | t  } xL | D]D } | | j o | Sn x& | D] } | | |  o | SqM qM Wq+ Wd  S(   N(   R   R   R   t   userchoicesR   t   testsR>   R4   t   testt   choiceRq   t   l_availRY   (   R   Rq   R   R   Rx   Rv   Rt   Rw   (    (    R   Rr   γ   s      c         C   s   |  i | | d  S(   NR    (   R   Rs   t   langsR   (   R   Ry   R   (    (    R   t   getLanguageρ   s    c         C   s   t  | d  S(   NR    (   R   R   (   R   R   (    (    R   t   getLanguagesτ   s    (	   RU   RV   R/   R1   Ru   Rs   Rr   Rz   R{   (    (    (    R   Ro   Ψ   s
   		c         C   s   t  i |  | d  S(   NR    (   t
   negotiatorRs   Ry   R   (   Ry   R   (    (    R   Rs   ϊ   s    (   Rc   RZ   t   utilsRb   R   R   R   R   R    R#   R%   R/   R1   R4   R5   RW   RY   R`   Ra   Ro   R|   Rs   (   R1   R`   Rc   Rb   R|   R5   Ro   Ra   R/   R    R#   RW   R   R   RZ   R4   Rs   R%   R   R   (    (    R   t   ?   s,   									M" 	