
 X                 @   s   d  Z  d d l m Z d d l Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z m Z d d l m Z d d	 l m Z d
 d   Z d d   Z d d e e d d  Z d d   Z d d d  Z d S)zC
Creates permissions for all installed apps that need permissions.
    )unicode_literalsN)apps)get_permission_codename)
exceptions)DEFAULT_DB_ALIASrouter)six)DEFAULT_LOCALE_ENCODINGc             C   s#   t  |   } t |  j  } | | S)zI
    Returns (codename, name) for all permissions in the given opts.
    )_get_builtin_permissionslistZpermissions)optsZbuiltinZcustom r   U/home/ubuntu/projects/ifolica/build/django/django/contrib/auth/management/__init__.py_get_all_permissions   s    r   c             C   sG   g  } x: |  j  D]/ } | j t | |   d | |  j f f  q W| S)zy
    Returns (codename, name) for all autogenerated permissions.
    By default, this is ('add', 'change', 'delete')
    z	Can %s %s)Zdefault_permissionsappendr   Zverbose_name_raw)r   permsactionr   r   r   r
      s    r
      Tc                s  |  j  s d  S|  j } y7 | j |  }  | j d d  } | j d d    Wn t k
 re d  SYn Xt j |    s| d  St   } t   }	 xi |  j	   D][ }
 | j
 j |  j |
  } |	 j |  x* t |
 j  D] } | j | | f  q Wq Wt   j
 j |  j d |	  j d d       f d d	   | D }   j
 j |  j |  | d
 k rx | D] } t d |  qrWn  d  S)NZcontenttypesContentTypeauth
PermissionZcontent_type__incontent_typecodenamec          	      sL   g  |  ]B \ } \ } } | j  | f  k r   d  | d | d |   q S)r   namer   )pk).0ctr   r   )r   	all_permsr   r   
<listcomp>O   s   	z&create_permissions.<locals>.<listcomp>r   zAdding permission '%s')Zmodels_modulelabelZget_app_configZ	get_modelLookupErrorr   Zallow_migrate_modelr   setZ
get_modelsZobjectsZ
db_managerZget_for_modeladdr   _metar   usingfilterZvalues_listZbulk_createprint)Z
app_config	verbosityinteractiver$   r   kwargsZ	app_labelr   Zsearched_permsctypesklassctypeZpermr   r   )r   r   r   create_permissions(   s6    						
r-   c              C   sk   y t  j   }  Wn t t f k
 r. d SYn Xt j rg y |  j t  }  Wqg t k
 rc d SYqg Xn  |  S)z
    Try to determine the current system user's username.

    :returns: The username as a unicode string, or an empty string if the
        username could not be determined.
     )	getpassgetuserImportErrorKeyErrorr   PY2decoder	   UnicodeDecodeError)resultr   r   r   get_system_usernameY   s    		r7   c             C   s
  d d l  m } | j j j r# d St   } y= t j d |  j d d  j	 d  j
 d d  j   } Wn t k
 r d SYn Xy  | j j j d  j |  Wn t j k
 r d SYn X|  r| ry | j j j d |  Wn | j j k
 r YqXd Sn  | S)	a?  
    Try to determine the current system user's username to use as a default.

    :param check_db: If ``True``, requires that the username does not match an
        existing ``auth.User`` (otherwise returns an empty string).
    :returns: The username, or an empty string if no username can be
        determined.
    r   )modelsr.   ZNFKDasciiignore username)django.contrib.authr8   ZUserr#   Zswappedr7   unicodedata	normalizeencoder4   replacelowerr5   	get_fieldZrun_validatorsr   ZValidationErrorZ_default_managergetZDoesNotExist)Zcheck_dbZauth_appZdefault_usernamer   r   r   get_default_usernamep   s*    
		 	rE   )__doc__
__future__r   r/   r>   Zdjango.appsr   Zglobal_appsr=   r   Zdjango.corer   Z	django.dbr   r   Zdjango.utilsr   Zdjango.utils.encodingr	   r   r
   r-   r7   rE   r   r   r   r   <module>   s   	1