Ñò
84åLc        )   @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z l Z d  d k	 l
 Z
 d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k	 l Z d  d	 k l Z d  d
 k l Z d  d k l Z d  d k l Z d  d k l Z l Z d  d k  l! Z! l" Z" d  d k# l$ Z$ l% Z% d  d k& l' Z' d  d k( l) Z) d  d k* l+ Z+ d  d k, l- Z- d  d k. l/ Z/ d  d k0 l1 Z1 l2 Z2 l3 Z3 d  d k4 l5 Z5 d  d k6 l7 Z7 d  d k8 l9 Z9 d  d k4 l: Z: l; Z; d  d k< l= Z= l> Z> d  d k? l@ Z@ lA ZA d  d kB lC ZC lD ZD d  d kE lF ZF d  d kG lH ZH d  d kI lJ ZJ d  d  kK lL ZL d! e/ f d" „  ƒ  YZM e: e; d# „  ƒ ƒ ZN d$ e/ f d% „  ƒ  YZO e: e; d& „  ƒ ƒ ZP e: e; e7 iQ d' ƒ d( „  ƒ ƒ ƒ ZR d) e f d* „  ƒ  YZS e: e; e7 iQ d' ƒ d+ „  ƒ ƒ ƒ ZT d, e/ f d- „  ƒ  YZU e: e; d. „  ƒ ƒ ZV e: e; d/ „  ƒ ƒ ZW d d0 „ ZY d1 „  ZZ d2 „  Z[ d3 „  Z\ d4 „  Z] d5 „  Z^ d6 „  Z_ d7 „  Z` d8 „  Za d d9 „ Zb d: e+ ic f d; „  ƒ  YZd d< e+ ic f d= „  ƒ  YZe e: e; d> „  ƒ ƒ Zf d S(?   iÿÿÿÿN(   t   mkdtempt   mkstemp(   t   get_object_or_404(   t   settings(   t   cache(   t   ugettext_lazy(   t   PermissionDenied(   t   render_to_response(   t   RequestContext(   t   BaseModelFormSet(   t   forms(   t
   iri_to_uri(   t   factoryt   versioncontrol(   t   redirectt   l(   t   get_matching_permissionst   check_permission(   t   post_file_upload(   t	   Directory(   t   view_handler(   t   gentopstats_translation_project(   t   BaseView(   t   navbar_dictt   dispatcht	   item_dict(   t   get_stats_headings(   t   util(   t   admin_permissions(   t   get_translation_projectt   set_request_context(   t   ensure_target_dir_existst   direct_language_match_filename(   t   Storet   Unit(   t   absolute_real_patht   relative_real_path(   t   factory_classes(   t   translate_page(   t
   Submission(   t   get_profilet   TPTranslateViewc           B   s   e  Z d  „  Z RS(   c         C   sÈ   t  t |  ƒ i | | ƒ } t t | i ƒ | i ƒ | _ | i } | i	 } | i
 h | d 6| d 6| d 6| d 6t | | | d d ƒd 6t i | | d d ƒg d 6| i d	 d
 6t | ƒ d 6ƒ | S(   Nt   translation_projectt   projectt   languaget	   directoryt   links_requiredt	   translatet   childrent   navitemsi   t	   feed_patht   topstats(   t   superR)   t   GETR   R(   t   userR-   t   permissionsR+   R,   t   updatet   get_childrenR   t   make_directory_navbar_dictt   pootle_pathR   (   t   selft   template_varst   requestR*   R-   R+   R,   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR5   A   s    			(   t   __name__t
   __module__R5   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR)   @   s   c         C   s£   t  t |  i ƒ | i ƒ |  _ t d |  ƒ p t t d ƒ ƒ ‚ n t t	 d | i i
 | ƒ} t d t d t d t ƒ ƒ } t d | |  | | ƒ d t |  ƒ ƒS(	   Nt   views2   You do not have rights to access translation mode.R;   R
   t   uploadR8   s%   translation_project/tp_translate.htmlt   context_instance(   R   R(   R6   R-   R7   R   R   t   _R   R   R;   R)   t   dictt   UploadHandlert   UpdateHandlerR   R   (   R>   R*   t   dir_pathR-   t   view_obj(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   tp_translateS   s    t   TPReviewViewc           B   s   e  Z d  „  Z RS(   c         C   sÈ   t  t |  ƒ i | | ƒ } t t | i ƒ | i ƒ | _ | i } | i	 } | i
 h | d 6| d 6| d 6| d 6t | | | d d ƒd 6t i | | d d ƒg d 6t | ƒ d	 6| i d
 d 6ƒ | S(   NR*   R+   R,   R-   R.   t   reviewR0   R1   R3   i   R2   (   R4   RK   R5   R   R(   R6   R-   R7   R+   R,   R8   R9   R   R:   R   R;   (   R<   R=   R>   R*   R-   R+   R,   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR5   e   s    			(   R?   R@   R5   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRK   d   s   c         C   s‘   t  t |  i ƒ | i ƒ |  _ t d |  ƒ p t t d ƒ ƒ ‚ n t t	 d | i i
 | ƒ} t h  ƒ } t d | |  | | ƒ d t |  ƒ ƒS(   NRA   s-   You do not have rights to access review mode.R;   s"   translation_project/tp_review.htmlRC   (   R   R(   R6   R-   R7   R   R   RD   R   R   R;   RK   R   R   (   R>   R*   RH   R-   RI   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt	   tp_revieww   s    t   administratec         C   st   | i  } | i } h | d 6| d 6| d 6| i d 6t i |  | i ƒ g d 6| i d d 6} t |  | i d | ƒ S(	   NR*   R+   R,   R-   R1   i   R2   s-   translation_project/tp_admin_permissions.html(   R,   R+   R-   R   R:   R;   R   (   R>   R*   R,   R+   R=   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   tp_admin_permissions…   s    		
t   StoreFormsetc           B   s   e  Z e d  „ Z RS(   c         C   sW   t  t |  ƒ i | ƒ } x8 |  i D]- } | i o | i i i | i i ƒ q" q" W| S(   N(   R4   RP   t   save_existing_objectst   deleted_objectst   filet   storaget   deletet   name(   R<   t   committ   resultt   store(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRQ   ™   s    
 
!(   R?   R@   t   TrueRQ   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRP   ˜   s   c            se  ˆ  i  i ƒ  } d |  i j o ˆ  i ƒ  h  |  _ n d |  i j oi ˆ  i ƒ  xO ˆ  i  i d d ƒ i ƒ  D]2 } | i d t ƒ | i	 d t d t d t
 ƒ ql Wh  |  _ n h	 t d ƒ d	 6d
 d 6d d 6t i |  ˆ  i ƒ g d 6ˆ  i i d d 6ˆ  d 6ˆ  i d 6ˆ  i d 6ˆ  i d 6} ‡  f d †  } t i |  d t | | d d d | d t d t d d ƒS(   Nt   template_updatet
   scan_filesRS   t    t   update_translationt   update_structuret   conservativet   Filest   titlet   changestorest
   submitnamet   storest   formidR1   i   R2   R*   R,   R+   R-   c            s'   d  t  |  i ƒ |  i t ˆ  i ƒ f S(   s   <a href="%s/translate">%s</a>(   R   R;   t   len(   t   instance(   R*   (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   <lambda>¿   s   s'   translation_project/tp_admin_files.htmlt	   linkfieldR;   t   querysett   formsett
   can_deletet   extrai    (   Re   t   allt   POSTt   update_from_templatesR\   t   excludet   iteratort   syncRZ   R8   t   FalseRD   R   R:   R-   R;   R,   R+   R   t   editR!   RP   (   R>   R*   Rk   RY   t
   model_argst   link(    (   R*   s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   tp_admin_files¤   s2    

  

t   ProjectIndexViewc           B   s   e  Z d  „  Z RS(   c         C   sâ   t  t |  ƒ i | | ƒ } t t | i ƒ | i ƒ | _ t i	 | i ƒ } | i
 } | i } | i h
 | d 6| d 6| d 6| d 6t | | | ƒ d 6t i | | ƒ g d 6t ƒ  d 6| i d 6t | ƒ d	 6| i d
 d 6ƒ | S(   NR*   R+   R,   R-   R0   R1   t   stats_headingst   editingR3   i   R2   (   R4   Rz   R5   R   R(   R6   R-   R7   R   t   ProjectIndexStateR+   R,   R8   R9   R   R:   R   R|   R   R;   (   R<   R=   R>   R*   R-   t   stateR+   R,   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR5   Ç   s"    			

(   R?   R@   R5   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRz   Æ   s   c         C   s£   t  t |  i ƒ | i ƒ |  _ t d |  ƒ p t t d ƒ ƒ ‚ n t t	 d | i i
 | ƒ} t d t d t d t ƒ ƒ } t d | |  | | ƒ d t |  ƒ ƒS(	   NRA   s:   You do not have rights to access this translation project.R;   R
   RB   R8   s$   translation_project/tp_overview.htmlRC   (   R   R(   R6   R-   R7   R   R   RD   R   R   R;   Rz   RE   RF   RG   R   R   (   R>   R*   RH   R-   RI   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   tp_overviewÜ   s    c   
      C   s‰  t  d |  ƒ p t t d ƒ ƒ ‚ n | i ƒ  | i | p d } d | i i | i i f } | i d ƒ o | d  } n | o | d | i	 d d ƒ 7} n | d 7} t
 i i d	 | i | ƒ } t | ƒ } t d
 | ƒ } t i | ƒ } | o# | | i ƒ  j o t
 i i | ƒ p[ t | ƒ t i i d | ƒ i d d ƒ }	 | i |	 | ƒ t i | | i ƒ  t i ƒ n t d | ƒ S(   Nt   archives1   You do not have the right to create ZIP archives.R]   s   %s-%st   /iÿÿÿÿt   -s   .zipt   POOTLE_EXPORTs   %s:export_zipt   pootle_path__startswithRS   s   /export/(   R   R   RD   Rt   R;   R+   t   codeR,   t   endswitht   replacet   ost   patht   joint	   real_pathR#   R   R   t   gett	   get_mtimet   isfileR   R!   t   objectst   filterRr   t   get_archivet   setR   t   OBJECT_CACHE_TIMEOUTR   (
   R>   R*   t	   file_pathR;   t   archivenamet   export_patht   abs_export_patht   keyt   last_exportRe   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt
   export_zipê   s(    

-
! c         C   st   g  } | i  i ƒ  D] } | t i |  | d | ƒq ~ g  } | i i ƒ  D] } | t i |  | d | ƒqM ~ S(   NR.   (   t
   child_dirsRs   R   t   make_directory_itemt   child_storest   make_store_item(   R>   R*   R-   R.   t   _[1]t	   child_dirt   _[2]t   child_store(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR9     s    2c         C   s   t  i i |  i d ƒ ƒ S(   NR   (   Rˆ   t   sepRŠ   t   split(   t   p(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   unix_to_host_path  s    c         C   s   d i  |  i t i ƒ ƒ S(   NR   (   RŠ   R¤   Rˆ   R£   (   R¥   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   host_to_unix_path  s    c         C   s7   t  i i |  i t | ƒ ƒ } t t  i i | | ƒ ƒ S(   sc   gets the path of a translation file being uploaded securely,
    creating directories as neccessary(   Rˆ   R‰   RŠ   R‹   R¦   R$   (   R*   t   relative_root_dirt   local_filenameRH   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   get_upload_path  s    c         C   s
  t  i i | ƒ \ } } |  i i } | d j o |  i o
 d } n d | | f } t  i i | ƒ | j p | i d ƒ o t t	 d | ƒ ƒ ‚ n |  i
 d j o_ |  i oT t |  i i | ƒ p: t t	 d h | d 6|  i i d	 6|  i i d
 6ƒ ƒ ‚ qn | S(   Nt   pot   pots   %s.%st   .s   Invalid/insecure file name: %st   gnus[   Invalid GNU-style file name: %(local_filename)s. It must match '%(langcode)s.%(filetype)s'.R©   t   langcodet   filetype(   Rˆ   R‰   t   splitextR+   t   localfiletypet   is_template_projectt   basenamet
   startswitht
   ValueErrorRD   t
   file_styleR    R,   R…   (   R*   t   upload_filenamet   baset   extt   new_extR©   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   get_local_filename  s    
)	
c         C   sE  t  d d ƒ } t d d d d ƒ \ } } zíz t i | | i ƒ  ƒ Wd  t i | ƒ Xt i d | d | g ƒ o t i	 t
 d ƒ ƒ ‚ n t } | } xzt i | ƒ D]i\ }	 }
 } | ou | om t |
 ƒ d j oZ y! | i i d	 |
 d
 ƒ t } Wq:t i j
 o# t i i |	 |
 d
 ƒ } q© q:Xn t } xÕ | D]Í } t i t t i i |	 | ƒ d ƒ i ƒ  ƒ } t i i | ƒ | _ t |	 t | ƒ t t i ƒ ƒ } | o | i | ƒ } n | } y t |  | | | ƒ WqAt j
 o } t i d | | ƒ qAXqAWq© WWd  d d  k  } t i! | ƒ | i" | ƒ Xd  S(   Nt   prefixt   pootlet   suffixs   .zipt   unzips   -ds   Error while extracting archivei   RV   i    t   rbu   error adding %s	%siÿÿÿÿ(#   R    R   Rˆ   t   writet   readt   closet
   subprocesst   callt   zipfilet
   BadZipfileRD   RZ   t   walkRg   R›   RŒ   Ru   R   t   DoesNotExistR‰   RŠ   t   StringIOt   openR´   RV   R§   R£   t   get_or_make_subdirt   upload_fileR¶   t   loggingt   errort   shutilt   unlinkt   rmtree(   R>   R-   t   django_filet	   overwritet   tempdirt	   tempzipfdt   tempzipnamet
   maybe_skipR½   t   basedirt   dirst   filest   fnamet   newfilet   subdirt
   target_dirt   eRÑ   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   unzip_external/  sF     "
 -#$c         C   so  | i  d ƒ t i | d ƒ } z>d } t } x+| i ƒ  D]} yì | d d j oO | oD y! | i i d | d  ƒ t } Wq  t i	 j
 o | } q  Xq,n‰ t } t
 t i i | t | ƒ ƒ ƒ } | o | i | ƒ }	 n | }	 t i | i | ƒ ƒ }
 t i i | ƒ |
 _ t |  |	 |
 | ƒ Wq; t j
 o } t i d | | ƒ q; Xq; WWd  | i ƒ  Xd  S(   Ni    t   rR]   iÿÿÿÿR   RV   u   error adding %s	%s(   t   seekRÇ   t   ZipFileRZ   t   namelistR›   RŒ   Ru   R   RÊ   R§   Rˆ   R‰   t   dirnameRg   RÍ   RË   RÃ   R´   RV   RÎ   R¶   RÏ   RÐ   RÄ   (   R>   R-   RÔ   RÕ   R€   R½   RÙ   t   filenameRß   Rà   RÞ   Rá   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   unzip_pythond  s4     
" c         C   s8   y t  |  | | | ƒ Wn t |  | | | ƒ n Xd  S(   N(   Râ   Ré   (   R>   R-   RÔ   RÕ   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   upload_archiveƒ  s    c         C   sµ  t  i i t | ƒ ƒ } t  i i | ƒ p t  i | ƒ n t  i i | i ƒ \ } } t  i i | ƒ \ } } | | j oŒ t t | ƒ d ƒ }	 z |	 i	 | i
 ƒ  ƒ Wd |	 i ƒ  y5 t i i d | ƒ }
 |
 i d t d t d t ƒ Wn t i j
 o n XXnª t i | d t ƒ} | i p d St i t | ƒ d t ƒ} | i ƒ  |  i i ƒ  t i i d | ƒ }
 |
 i d t d t d t d | ƒ |
 i d t d t d t ƒ d S(	   s   overwrite with uploaded filet   wbNRS   R_   R^   R`   t   classesRY   (   Rˆ   R‰   Rç   R#   t   existst   makedirsR±   RV   RÌ   RÂ   RÃ   RÄ   R!   R   RŒ   R8   RZ   Ru   RÊ   R   t	   getobjectR%   t   unitst   saveR*   R\   Rt   (   R>   R¨   RÔ   t   upload_patht
   upload_dirt   _upload_baset
   upload_extt   _local_baset	   local_extt   outfileRY   t   newstoret   empty_store(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   overwrite_file‹  s0    
 


"c         C   sf  |  i  } | i t | i ƒ } t | d d  ƒ d  j o' y t | _ Wq_ t j
 o q_ Xn t | d d  ƒ d  j o' y d | _ WqŸ t j
 o qŸ Xn t | d d  ƒ d  j o d | _	 n | o  | i
 o | i } | i } n“ | o" | i } t | | | i ƒ } nj t | | i ƒ }	 | i |	 } t | | |	 ƒ } y | i i d | ƒ } Wn t i j
 o d  } n X| d  j	 o4 | d j o' t d |  ƒ o t t d ƒ ƒ ‚ n | d  j o' t d |  ƒ o t t d	 ƒ ƒ ‚ n | d
 j o' t d |  ƒ o t t d ƒ ƒ ‚ n | d j o' t d |  ƒ o t t d ƒ ƒ ‚ n | d  j p | d j o( | i
 d j o t |  | | | ƒ d  S| i
 o4 | i
 i ƒ  | i ƒ  j o t i d | i ƒ d  S| i d ƒ t i | d t ƒ}
 | d
 j } | d j } | d j o | i
 d j } | i |
 t |  i  ƒ d | d | d | d | ƒd  S(   Nt   _closedt   _modei   t   modeR;   RÕ   s/   You do not have rights to overwrite files here.RN   s0   You do not have rights to upload new files here.t   mergeR/   s,   You do not have rights to upload files here.t   suggestR]   u*   identical file uploaded to %s, not mergingi    Rì   t   suggestionst   notranslatet   allownewstringst   obsoletemissing(!   R*   R;   Rg   t   getattrt   NoneRu   Rü   t   AttributeErrorRý   Rþ   RS   R‹   Rª   RV   R¼   Re   RŒ   R!   RÊ   R   R   RD   Rû   RÃ   RÏ   t   debugRä   R   Rï   R%   t	   mergefileR(   R6   (   R>   R-   RÔ   RÕ   RY   R*   R¨   R;   Rò   R©   Rù   R  R  R  (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRÎ   º  s`    					+*&$RG   c           B   sN   e  Z d  e d ƒ f g Z d e i f d „  ƒ  YZ d „  Z e d „  ƒ Z RS(   t	   do_updates   Update all from version controlt   Formc           B   s   e  Z RS(    (   R?   R@   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR    s   c         C   s   | i  | ƒ h  S(   N(   t   update_project(   R<   R>   R*   R-   (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR
  
  s    c         O   s#   t  d | ƒ o t i | i i ƒ S(   NRW   (   R   R   t   hasversioningR*   t   abs_real_path(   t   clsR>   t   argst   kwargs(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   must_display  s    (	   R?   R@   RD   t   actionsR
   R  R
  t   classmethodR  (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRG     s   	RF   c           B   sD   e  Z d  e d ƒ f g Z e d „  ƒ Z d d d „ Z d „  Z RS(   t	   do_uploadt   Uploadc         O   s-   t  d | ƒ p t  d | ƒ p t  d | ƒ S(   NR/   R   RÕ   (   R   (   R  R>   R  R  (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR    s    c      	      sO  g  ‰ t  d ˆ ƒ o ˆ i d t d ƒ f ƒ n t  d ˆ ƒ o ˆ i d t d ƒ f ƒ n t  d ˆ ƒ o ˆ i d t d ƒ f ƒ n ˆ i ‰ d t i f ‡ f d	 †  ƒ  Y‰ d
 t i f ‡ f d †  ƒ  Y‰  d t i f ‡ ‡  ‡ ‡ ‡ f d †  ƒ  Y} | |  _ t t |  ƒ i	 ˆ | | ƒ t  d ˆ ƒ |  i
 _ t d ƒ |  i
 _ d  S(   NRÕ   s'   Overwrite the current file if it existsR/   Rÿ   sH   Merge the file with the current file and turn conflicts into suggestionsR   s'   Add all new translations as suggestionst   StoreFormFieldc              s   e  Z ‡  f d  †  Z RS(   c            s   t  | i t ˆ  i ƒ ƒ S(   N(   RD   R;   Rg   (   R<   Rh   (   R*   (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   label_from_instance&  s    (   R?   R@   R  (    (   R*   (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR  %  s   t   DirectoryFormFieldc              s   e  Z ‡  f d  †  Z RS(   c            s   t  | i t ˆ  i ƒ ƒ S(   N(   RD   R;   Rg   (   R<   Rh   (   R*   (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR  *  s    (   R?   R@   R  (    (   R*   (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR  )  s   t
   UploadFormc              sú   e  Z e i d  e d e d ƒ ƒ Z e d ˆ ƒ o
 d Z n d Z e i	 d  e d e i
 d d d ˆ d	 e ƒ Z ˆ d  e d e d
 ƒ d ˆ  i i ƒ  d e d ƒ ƒ Z ˆ d  e d e d
 ƒ d e i i d ˆ  i ƒ i d ˆ  i i ƒ d e d ƒ ƒ Z RS(   t   requiredt   labelt   FileR/   Rÿ   R   t   widgetR]   t   choicest   initials	   Upload toRk   t	   help_textsf   Optionally select the file you want to merge with. If not specified, the uploaded file's name is used.R„   t   pk(   R?   R@   R
   t	   FileFieldRZ   RD   RS   R   R   t   ChoiceFieldt   RadioSelectRÕ   Ru   Re   Ro   t	   upload_toR   R   R   R;   Rr   R-   R"  t   upload_to_dir(    (   R*   R  R>   R  R  (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR  -  s   
*s   Upload File(   R   t   appendRD   R*   R
   t   ModelChoiceFieldR  R4   RF   t   __init__t   formt   allow_overwriteRb   (   R<   R>   t   dataRÜ   R  (    (   R  R>   R  R*   R  s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR*    s    	+	c         C   sY  |  i  i ƒ  o>d | i j o.|  i  i d } |  i  i d } |  i  i d } |  i  i d } | i ƒ  | i ƒ  } | i i d ƒ o* t }	 | p | }
 t	 | |
 | | ƒ n  t
 }	 t | | | | d | ƒ| i ƒ  | i ƒ  } t d t i i ƒ  d | d	 t | i ƒ ƒ } | i ƒ  t i d
 | d | i d | d | d |	 ƒ n h |  d 6S(   NRS   RÕ   R&  R'  s   .zipRY   t   creation_timeR*   t	   submittert   senderR6   t   oldstatst   newstatsR€   RB   (   R+  t   is_validt   FILESt   cleaned_dataR\   t   getquickstatsRV   R†   RZ   Rê   Ru   RÎ   R'   t   datetimet   utcnowR(   R6   Rñ   R   t   send(   R<   R>   R*   R-   RÔ   RÕ   R&  R'  R1  R€   t   target_directoryR2  t   s(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR  B  s,     


N(	   R?   R@   RD   R  R  R  R  R*  R  (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyRF     s   (c         C   s"   t  i i d | ƒ } t |  | ƒ S(   Nt   store__translation_project(   R"   R   R   R&   (   R>   R*   t   units_queryset(    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyR/   b  s    (g   Rˆ   RÏ   RË   RÅ   RÇ   R7  t   tempfileR    R   t   django.shortcutsR   t   django.confR   t   django.core.cacheR   t   django.utils.translationR   RD   t   django.core.exceptionsR   R   t   django.templateR   t   django.forms.modelsR	   t   djangoR
   t   django.utils.encodingR   t   translate.storageR   R   t   pootle_misc.baseurlR   R   t   pootle_app.models.permissionsR   R   t   pootle_app.models.signalsR   t   pootle_app.modelsR   t   pootle_app.libR   t   pootle_app.views.top_statsR   t   pootle_app.views.baseR   t   pootle_app.views.languageR   R   R   t   pootle_app.views.language.viewR   t   pootle_app.views.adminR   t"   pootle_app.views.admin.permissionsR   R   R   t   pootle_app.project_treeR   R    t   pootle_store.modelsR!   R"   t   pootle_store.utilR#   R$   t   pootle_store.filetypesR%   t   pootle_store.viewsR&   t   pootle_statistics.modelsR'   t   pootle_profile.modelsR(   R)   RJ   RK   RM   t   has_permissionRO   RP   Ry   Rz   R   Rš   R  R9   R¦   R§   Rª   R¼   Râ   Ré   Rê   Rû   RÎ   t   HandlerRG   RF   R/   (    (    (    s=   /var/www/Pootle/local_apps/pootle_translationproject/views.pyt   <module>   sˆ    					5			/JO