Ñò
Š
Mc        	   @   s•   d  d k  Z  d  d k l Z d  d k l Z d  d k l Z d  d k l Z e i	 d „ Z
 d „  Z d „  Z d	 d d d
 „ Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   cache(   t   settings(   t	   Paginator(   t
   iri_to_uric            s   ‡  ‡ f d †  } | S(   Nc            ss   t  |  i d ˆ  i ƒ } t i | ƒ } | d  j o9 t i d | ƒ ˆ  |  | | Ž } t i | | ˆ ƒ n | S(   Nt   :u   cache miss for %s(	   R   t   pootle_patht   __name__R    t   gett   Nonet   loggingt   debugt   set(   t   instancet   argst   kwargst   keyt   result(   t   functiont   timeout(    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   _getfromcache   s    (    (   R   R   R   (    (   R   R   s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   getfromcache   s    c         K   s¹   t  |  i ƒ } | i d ƒ } t | ƒ o8 d | d } x' | D] } t i | d | ƒ q@ Wn xO | oG x# | D] } t i | d | ƒ qt W| d  } d i | ƒ d } qf Wd  S(   Nt   /s   /projects/%s/i   R   iÿÿÿÿ(   R   R   t   splitt   lenR    t   deletet   join(   t   sendert	   functionsR   t   patht
   path_partsR   t   func(    (    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   deletefromcache'   s       
c            s-   t  ‡ ‡  f d †  t ˆ ƒ t ˆ  ƒ BDƒ ƒ S(   Nc         3   s;   x4 |  ]- } | ˆ  i  | d  ƒ ˆ i  | d  ƒ f Vq Wd S(   i    N(   R   (   t   .0t   n(   t   xt   y(    s.   /var/www/Pootle/local_apps/pootle_misc/util.pys	   <genexpr>9   s   	 (   t   dictR   (   R"   R#   (    (   R#   R"   s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   dictsum8   s    i   c         C   s™   | d  j o | d d } n t | | d | ƒ} | p? y t |  i i d d ƒ ƒ } Wqz t j
 o d } qz Xn t | | i ƒ } | i | ƒ S(   Ni   i   t   orphanst   page(	   R   R   t   intt   GETR   t
   ValueErrort   mint	   num_pagesR'   (   t   requestt   querysett   itemsR'   R&   t	   paginator(    (    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   paginate<   s    c         C   sV   d |  j  o
 d j  n o d Sd |  j  o
 d j  n o d St  t |  ƒ ƒ S(   s[   Return an integer percentage, but avoid returning 0% or 100% if it
    might be misleading.ic   id   i    i   (   R(   t   round(   t
   percentage(    (    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   nice_percentageL   s
    c         C   sÜ   t  d |  d t |  d d ƒ ƒ |  d <t  d |  d t |  d d ƒ ƒ |  d <d |  d |  d |  d	 <t  d |  d
 t |  d d ƒ ƒ |  d <t  d |  d t |  d d ƒ ƒ |  d <d |  d |  d |  d <|  S(   s.   Add percentages onto the raw stats dictionary.g      Y@t   translatedsourcewordst   totalsourcewordsi   t   translatedpercentaget   fuzzysourcewordst   fuzzypercentageid   t   untranslatedpercentaget
   translatedt   totalt   strtranslatedpercentaget   fuzzyt   strfuzzypercentaget   struntranslatedpercentage(   R4   t   max(   t   quick_stats(    (    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   add_percentagesX   s    ))))(   R	   t   django.core.cacheR    t   django.confR   t   django.core.paginatorR   t   django.utils.encodingR   t   OBJECT_CACHE_TIMEOUTR   R   R%   R   R1   R4   RC   (    (    (    s.   /var/www/Pootle/local_apps/pootle_misc/util.pyt   <module>   s   			