î
yË X¢  ã               @   s˜   d  d l  Z  d  d l Z d  d l m Z d  d l m Z d d „  Z d d „  Z d d	 „  Z Gd
 d „  d e ƒ Z	 Gd d „  d e ƒ Z
 d d „  Z d S)é    N)ÚApplication)Úutilc             C   s@   t  j j t  j j |  d ƒ ƒ p? t  j j t  j j |  d ƒ ƒ S)Nzsettings.pyzsettings.pyc)ÚosÚpathÚisfileÚjoin)r   © r   úF/home/ubuntu/projects/ifolica/build/gunicorn/gunicorn/app/djangoapp.pyÚis_setting_mod   s    !r
   c             C   sú   t  j j |  ƒ }  d  } d } t  j j |  ƒ r¥ d  } t |  ƒ sœ x] t  j |  ƒ D]C } | d k rj qR n  t  j j |  | ƒ } t | ƒ rR | } PqR qR Wqð |  } nK t  j j |  ƒ rð t  j j |  ƒ } t  j j	 t  j j
 |  ƒ ƒ \ } } n  | | f S)NÚsettingsú..Ú.)r   r   )r   r   ÚabspathÚisdirr
   Úlistdirr   r   ÚdirnameÚsplitextÚbasename)r   Úproject_pathÚsettings_nameÚdÚrootÚ_r   r   r	   Úfind_settings_module   s$    	'r   c             C   sh  |  j  r |  j  t j d <n  |  j r” |  j d  k	 r” |  j j d ƒ } xK | D]@ } t j j |  j ƒ } | t j k rM t j j d | ƒ qM qM Wn  y t j d Wn¾ t	 k
 rct
 j ƒ  } t | ƒ \ } } | sæ t d ƒ ‚ n  t j j | ƒ \ } } d | | f t j d <| t j k r:t j j d | ƒ n  | t j k r_t j j d | ƒ n  Yn Xd  S)NZDJANGO_SETTINGS_MODULEú,r   zdjango project not foundz%s.%s)Údjango_settingsr   ÚenvironÚ
pythonpathÚsplitr   r   ÚsysÚinsertÚKeyErrorr   Úgetcwdr   ÚRuntimeError)ÚcfgÚpathsr   r   Úcwdr   r   Úproject_namer   r   r	   Úmake_default_env+   s,    	r(   c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚDjangoApplicationc             C   s  | rd | d k r] t  j j | d ƒ p? t  j j | d ƒ r] |  j j d | d ƒ qt t  j j | d ƒ ƒ \ } } | t j k r¤ t j j	 d | ƒ n  | s¹ t
 d ƒ ‚ n  t  j j | ƒ \ } } |  j j d d | | f ƒ |  j j d | ƒ n  d  S)Nr   r   r   zdjango project not foundz%s.%sr   )r   r   r   r   r$   Úsetr   r   r   r    r#   r   )ÚselfÚparserÚoptsÚargsr   r   r   r'   r   r   r	   ÚinitL   s    &zDjangoApplication.initc             C   s9   t  j |  j j ƒ t |  j ƒ t j d ƒ } | j ƒ  S)Nzgunicorn.app.django_wsgi)r   Úchdirr$   r(   r   Úimport_moduleZmake_wsgi_application)r+   Úmodr   r   r	   Úload`   s    zDjangoApplication.loadN)Ú__name__Ú
__module__Ú__qualname__r/   r3   r   r   r   r	   r)   J   s   r)   c               @   s4   e  Z d  Z d d „  Z d d „  Z d d „  Z d S)ÚDjangoApplicationCommandc             C   se   d  |  _  d  |  _ d  |  _ | j d ƒ p- d |  _ | |  _ | |  _ d  |  _ d  |  _ |  j	 ƒ  d  S)NÚconfigÚ )
ÚusageÚprogr$   ÚgetÚconfig_fileÚoptionsÚadmin_media_pathÚcallabler   Zdo_load_config)r+   r>   r?   r   r   r	   Ú__init__o   s    							z!DjangoApplicationCommand.__init__c             G   sŒ   d |  j  k r+ |  j  j d ƒ |  j  d <n  i  } xT |  j  j ƒ  D]C \ } } | j ƒ  |  j j k rA | d  k	 rA | | | j ƒ  <qA qA W| S)Nr   r   )r>   ÚpopÚitemsÚlowerr$   r   )r+   r.   r$   ÚkÚvr   r   r	   r/   z   s    $zDjangoApplicationCommand.initc             C   s?   t  j |  j j ƒ t |  j ƒ t j d ƒ } | j |  j ƒ S)Nzgunicorn.app.django_wsgi)r   r0   r$   r(   r   r1   Zmake_command_wsgi_applicationr?   )r+   r2   r   r   r	   r3   „   s    zDjangoApplicationCommand.loadN)r4   r5   r6   rA   r/   r3   r   r   r   r	   r7   m   s   
r7   c              C   s1   t  j d ƒ d d l m }  |  d ƒ j ƒ  d S)z[    The ``gunicorn_django`` command line runner for launching Django
    applications.
    a  This command is deprecated.

    You should now run your application with the WSGI interface
    installed with your project. Ex.:

        gunicorn myproject.wsgi:application

    See https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/gunicorn/
    for more info.r   )r)   z"%(prog)s [OPTIONS] [SETTINGS_PATH]N)r   ÚwarnZgunicorn.app.djangoappr)   Úrun)r)   r   r   r	   rH   ‘   s    rH   )r   r   Zgunicorn.app.baser   Zgunicornr   r
   r   r(   r)   r7   rH   r   r   r   r	   Ú<module>   s   #$