a
    O9ob                     @   sX   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZdd Z	G dd deZ
dS )    N)BaseCommandc                 C   s6   t d urt dk st dkr2dd l}d|  }||t S )Nr      z4%s option value needs to be within the range 0 to 1.)valueargparseZArgumentTypeError)stringr   msg r   s/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/mod_wsgi/server/management/commands/runmodwsgi.pycheck_percentage   s
    
r
   c                   @   s>   e Zd ZdZdZeedr*ejej	j Zndd Z
dd ZdS )	Command z"Starts Apache/mod_wsgi web server.option_listc                 C   s  t g d}ttd}tjjD ]}|j|j }i }|jD ]}||vrt	||r|dkrxt
|||v r|t
|| ||< nB|dkrt
||dkrt
||||< nt
||d urt
||||< |ddkr|jjdkr|d= t|d< |d	d
kr8|d	= q8|j|i | qd S )N)constcallbackZcallback_argsZcallback_kwargs)intr   typedefault)ZNODEFAULTactionr   r
   nargsr   )setr   strmod_wsgiserverr   Z_short_optsZ
_long_optsZATTRShasattrgetattrgetr   __name__r
   add_argument)selfparserignoretypesoptionoptskwargsattrr   r   r	   add_arguments"   s.    


zCommand.add_argumentsc                    sj  | j d ddlm} |j}|d}d|d d }|d }d|d< ||d< |g}|d	d u rt|d
r||j	|d	< n@t
jd }|dd }	tj|	 }
t
jt
j|
j}||d	< |dpg }zt|dd }|d u rt|dg }d|vrh|jrh|jdrh|jrh|s<|d|jdp0d|jf n,|dt|d |jdp\d|jf W n ty~   Y n0 ||d< tjd||}|d rd S t
j|d d}|t|d }tj  rV|d sVd   fdd}t  t j!| t  t j"| t  t j#| t  t j$| t  t j%| t&j'|ddgt
j(d  )  nt
*||dd d S )NzSuccessfully ran command.r   )settings.moduleZapplication_typecallable_objectZworking_directoryBASE_DIRZDJANGO_SETTINGS_MODULEurl_aliasesZ
MIDDLEWAREZMIDDLEWARE_CLASSESz*whitenoise.middleware.WhiteNoiseMiddleware/zstart-serverZ
setup_onlyZserver_rootZ	apachectlZprocess_nameZ
debug_modec                    s2    d u rt d n| tjfvr.t j|  d S )Nr   )sysexitsignalSIGWINCHoskillpid)signumframeprocessr   r	   handler   s    zCommand.handle.<locals>.handlerstartz-DFOREGROUND)
preexec_fn)+stdoutwriteZdjango.confr(   ZWSGI_APPLICATIONsplitjoinr   r   r-   r4   environr0   modulespathdirname__file__
setdefaultr   Z
STATIC_URL
startswithZSTATIC_ROOTinsertrstripr   AttributeErrorr   r   Z_cmd_setup_serverljustlenisattyr2   SIGINTSIGTERMSIGHUPSIGUSR1r3   
subprocessPopensetpgrpwaitexecl)r   argsoptionsr(   Zwsgi_applicationfieldsmodule_namer,   Zsettings_module_pathZroot_module_pathZroot_moduleparentr.   Z
middleware
executablenamer;   r   r9   r	   handleA   sr    






zCommand.handleN)r   
__module____qualname__rX   helpr   r   r   r   r   r'   r_   r   r   r   r	   r      s   
r   )r4   r0   inspectr2   rS   Zdjango.core.management.baser   Zmod_wsgi.serverr   r
   r   r   r   r   r	   <module>   s   