Ñò
é€Lc           @   s   d  d k  Z  d  d k l Z l Z l Z d  d k l Z d  d k l	 Z	 l
 Z
 d  d k l Z d  d k l Z d  d k 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 d  d k l Z d  d k  l Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) e i* e) d e i+ ƒd a- d „  Z. e i* e. d e ƒd „  Z/ e i* e/ d e ƒd S(   iÿÿÿÿN(   t   post_syncdbt
   pre_deletet   post_delete(   t   ugettext_noop(   t   Usert
   Permission(   t   ContentType(   t   call_command(   t	   Directory(   t   Language(   t   Project(   t   PootleProfile(   t   PermissionSett   get_pootle_permission(   t
   siteconfig(   t   buildc          C   s   t  i i d d d d d t ƒ \ }  } | o |  i ƒ  |  i ƒ  n t  i i d d d d d t ƒ \ } } | o | i ƒ  | i ƒ  n d S(	   sN   Create default and nobody User instances required for pootle permission systemt   usernameu   nobodyt
   first_nameu   any anonymous usert	   is_activeu   defaultu   any authenticated userN(   R   t   objectst   get_or_createt   Truet   set_unusable_passwordt   save(   t   nobodyt   createdt   default(    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_essential_users)   s    
	
c    
      C   s   t  i i d d d d ƒ \ }  } d |  _ |  i ƒ  t i i d t d ƒ d |  d	 d
 ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ } } t i i d t d ƒ d |  d	 d ƒ \ }	 } d S(   s+   define Pootle's directory level permissionst	   app_labelt
   pootle_appt   modelt	   directoryt   pootlet   names   Can view a translation projectt   content_typet   codenamet   views'   Can make a suggestion for a translationt   suggests   Can submit a translationt	   translates-   Can overwrite translations on uploading filest	   overwrites   Can review translationst   reviews-   Can download archives of translation projectst   archives&   Can administrate a translation projectt   administrates   Can commit to version controlt   commitN(   R   R   R   R!   R   R   t   _(
   t   pootle_content_typeR   R$   R%   R&   R'   R(   R)   R*   R+   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_pootle_permissionsD   s&    !	
c    
      C   s“  t  i i d d ƒ }  t  i i d d ƒ } t d ƒ } t d ƒ } t d ƒ } t d ƒ } t i i } t i i d |  d	 | ƒ \ } } | o | | g | _ | i	 ƒ  n t i i d | d	 | ƒ \ } } | o# | | | | g | _ | i	 ƒ  n t i i d
 d ƒ }	 t i i d |  d	 |	 ƒ \ } } | o | g | _ | i	 ƒ  n t i i d | d	 |	 ƒ \ } } | o | g | _ | i	 ƒ  n d S(   s   Create the default permission set for the anonymous (non-logged in) user
    ('nobody') and for the logged in user ('default').t   user__usernameR   R   R$   R%   R&   R)   t   profileR   t   pootle_paths   /templates/N(
   R   R   t   getR   R   t   rootR   R   t   positive_permissionsR   (
   R   R   R$   R%   R&   R)   R3   t   permission_setR   t	   templates(    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_pootle_permission_setsZ   s0    !!!!c       	   C   s1   t  i i d d d d d d d d ƒ \ }  } |  S(	   Nt   codet   ent   fullnameu   Englisht   npluralsi   t   pluralequations   (n != 1)(   R	   R   R   (   R9   R   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   require_english   s    c          C   s@   t  i i d d ƒ \ }  } t  i i d d d |  ƒ \ } } d S(   s   Create root Directory item.R!   t    t   projectst   parentN(   R   R   R   (   R3   R   R?   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_root_directory„   s    c          C   s,   t  i i d d d d ƒ \ }  } t ƒ  d S(   sQ   template language is used to give users access to the untranslated template filesR8   R6   R:   u	   TemplatesN(   R	   R   R   R=   (   R6   R   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_template_language‰   s    !c          C   s4   t  ƒ  }  t i i d d d d d |  ƒ \ } } d S(   sP   terminology project is used to display terminology suggestions while translatingR8   t   terminologyR:   u   Terminologyt   source_languageN(   R=   R
   R   R   (   R9   RC   R   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   create_terminology_project   s    	c         K   sÔ   y t  d d ƒ Wn n Xt | j o t ƒ  n t | j o t ƒ  n t | j o t ƒ  n t | j o t ƒ  n t	 | j o t
 ƒ  t ƒ  n t i ƒ  } | i d t ƒ | i d t ƒ | i ƒ  d  S(   Nt   createcachetablet   pootlecachet   BUILDVERSIONt   TT_BUILDVERSION(   R   R   R   R   RA   R	   RB   R
   RE   R   R.   R7   R   t   load_site_configt   sett   code_buildversiont   code_tt_buildversionR   (   t   sendert   created_modelst   kwargst   config(    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   post_syncdb_handler•   s&    RN   c         K   se   | i  d j oQ | i d j oA t i d ƒ g  } t i i d | ƒ D] } | | qG ~ a n d  S(   NR    R>   s    Fixing permissions content typesR"   (   R!   R   t   loggingt   debugR   R   t   filtert   permission_queryset(   RN   t   instanceRP   t   _[1]t
   permission(    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   fix_permission_content_type_pre¯   s     c         K   sm   t  d  j	 o\ t i i d d d d ƒ } d | _ | i ƒ  x! t  D] } | | _ | i ƒ  qB Wd  a  n d  S(   NR   R   R   R   R    (   RV   t   NoneR   R   R2   R!   R   R"   (   RN   RW   RP   t   dir_content_typeRY   (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt    fix_permission_content_type_post¶   s    	
 	(0   RS   t   django.db.models.signalsR    R   R   t   django.utils.translationR   R,   t   django.contrib.auth.modelsR   R   t"   django.contrib.contenttypes.modelsR   t   django.core.managementR   t   pootle_app.modelsR   R   t   pootle_language.modelsR	   t   pootle_project.modelsR
   t   pootle_profile.modelsR   t   pootle_app.models.permissionsR   R   t   pootle_miscR   t   pootle.__version__R   RL   t   translate.__version__RM   R   R.   R7   R=   RA   RB   RE   RR   t   connectt   modelsR[   RV   RZ   R]   (    (    (    s<   /var/www/Pootle/local_apps/pootle_app/management/__init__.pyt   <module>   s8   			%							
