î
ªÍ X4  ã               @   sÄ   d  d l  m Z d  d l Z d  d l Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z d d l m Z e d	 d
 d „ Z d d „  Z d d d d „ Z d d „  Z d S)é    )Úunicode_literalsN)ÚPIPEÚPopen)Úsix)Úget_random_string)ÚDEFAULT_LOCALE_ENCODINGÚ
force_texté   )ÚCommandErrorzutf-8c             C   sî   y1 t  |  d d d t d t d t j d k ƒ} Wnn t k
 r¡ } zN t | j t d d ƒ} t j	 | | d	 |  d
 | f ƒ t
 j ƒ  d ƒ WYd d } ~ Xn X| j ƒ  \ } } t | | d d d d ƒt | t d d d d ƒ| j f S)zf
    Friendly wrapper around Popen.

    Returns stdout output, stderr output and OS status code.
    ÚshellFÚstdoutÚstderrÚ	close_fdsÚntZstrings_onlyTzError executing %s: %sr   é   NÚerrorsÚstrictÚreplace)r   r   ÚosÚnameÚOSErrorr   Ústrerrorr   r   ÚreraiseÚsysÚexc_infoÚcommunicateÚ
returncode)ÚargsZos_err_exc_typeZstdout_encodingÚpÚer   Úoutputr   © r!   úJ/home/ubuntu/projects/ifolica/build/django/django/core/management/utils.pyÚpopen_wrapper   s    15r#   c             C   s„   g  } x0 |  D]( } | j  | j d d ƒ j d ƒ ƒ q Wx> t | ƒ D]0 \ } } | j d ƒ sF d | | | | <qF qF Wt | ƒ S)aº  
    Organizes multiple extensions that are separated with commas or passed by
    using --extension/-e multiple times.

    For example: running 'django-admin makemessages -e js,txt -e xhtml -a'
    would result in an extension list: ['.js', '.txt', '.xhtml']

    >>> handle_extensions(['.html', 'html,js,py,py,py,.py', 'py,.py'])
    {'.html', '.js', '.py'}
    >>> handle_extensions(['.html, txt,.tpl'])
    {'.html', '.tpl', '.txt'}
    ú Ú ú,Ú.z.%s)Úextendr   ÚsplitÚ	enumerateÚ
startswithÚset)Ú
extensionsZext_listÚextÚir!   r!   r"   Úhandle_extensions"   s    &r0   c             C   s  | d  k r0 t  j j d d ƒ j t  j ƒ } n  t | t j ƒ rN | g } n  | d  k r~ t  j j d d ƒ j t  j ƒ } n  x* | D]" } |  j | ƒ r… d g } Pq… q… Wxj | D]b } t  j	 j
 | |  ƒ } t  j	 j | ƒ rã | Sx. | D]& } | | } t  j	 j | ƒ rê | Sqê Wq² Wd  S)NÚPATHr%   ÚPATHEXTz.COM;.EXE;.BAT;.CMD)r   ÚenvironÚgetr)   ÚpathsepÚ
isinstancer   Ústring_typesÚendswithÚpathÚjoinÚisfile)Úcmdr9   Úpathextr.   r   ÚfZfextr!   r!   r"   Úfind_command8   s&    $$	
r?   c              C   s   d }  t  d |  ƒ S)zS
    Return a 50 character random string usable as a SECRET_KEY setting value.
    z2abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)é2   )r   )Úcharsr!   r!   r"   Úget_random_secret_keyQ   s    rB   )Ú
__future__r   r   r   Ú
subprocessr   r   Zdjango.utilsr   Zdjango.utils.cryptor   Zdjango.utils.encodingr   r   Úbaser
   r#   r0   r?   rB   r!   r!   r!   r"   Ú<module>   s   