
 X                 @   s   d  d l  m Z 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 m	 Z	 d  d l
 m Z m Z d  d l m Z m Z d  d l m Z m Z d  d l m Z m Z e j d	 e j  Z Gd
 d   d e  Z e Z d S)    )unicode_literalsN)datetime)settings)BaseCommandCommandError)get_internal_wsgi_applicationrun)
autoreloadsix)
force_textget_system_encodingz^(?:
(?P<addr>
    (?P<ipv4>\d{1,3}(?:\.\d{1,3}){3}) |         # IPv4 address
    (?P<ipv6>\[[a-fA-F0-9:]+\]) |               # IPv6 address
    (?P<fqdn>[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*) # FQDN
):)?(?P<port>\d+)$c                   sv   e  Z d  Z d Z d Z d Z d Z d d   Z   f d d   Z d	 d
   Z	 d d   Z
 d d   Z d d   Z   S)Commandz0Starts a lightweight Web server for development.FTZ8000c             C   s   | j  d d d d d | j  d d d d	 d
 d d d d d | j  d d d d
 d d d d d | j  d d d d
 d d d d d d  S)Naddrportnargs?helpz$Optional port number, or ipaddr:portz--ipv6z-6action
store_truedestuse_ipv6defaultFz$Tells Django to use an IPv6 address.z--nothreadingstore_falseuse_threadingTz"Tells Django to NOT use threading.z
--noreloaduse_reloaderz*Tells Django to NOT use the auto-reloader.)add_argument)selfparser r   W/home/ubuntu/projects/ifolica/build/django/django/core/management/commands/runserver.pyadd_arguments"   s    zCommand.add_argumentsc                sC   | d r& t  d  t j t  d  <n  t t |   j | |   d  S)NZno_colorZnocolorZDJANGO_COLORS)strosenvironsuperr   execute)r   argsoptions)	__class__r   r   r$   4   s    
zCommand.executec             O   s   t    S)zB
        Returns the default WSGI handler for the runner.
        )r   )r   r%   r&   r   r   r   get_handler<   s    zCommand.get_handlerc             O   s  d d l  m } | j r3 | j r3 t d   n  | d |  _ |  j rb t j rb t d   n  d |  _ | d s d |  _	 |  j
 |  _ n t j t | d  } | d  k r t d	 | d   n  | j   \ |  _	 } } } |  _ |  j j   st d
 |  j   n  |  j	 ro| rF|  j	 d d  |  _	 d |  _ d |  _ qo|  j ro| rot d |  j	   qon  |  j	 s|  j rd n d |  _	 |  j |  _ n  |  j |   d  S)Nr   )r   z6You must set settings.ALLOWED_HOSTS if DEBUG is False.r   z"Your Python does not support IPv6.Fr    z5"%s" is not a valid port number or address:port pair.z%r is not a valid port number.   Tz!"%s" is not a valid IPv6 address.z::1z	127.0.0.1)django.confr   DEBUGZALLOWED_HOSTSr   r   sockethas_ipv6	_raw_ipv6addrdefault_portportrematch
naiveip_regroupsisdigitr   )r   r%   r&   r   mZ_ipv4Z_ipv6Z_fqdnr   r   r   handleB   s8    	
	!			zCommand.handlec             K   s=   | d } | r) t  j |  j d |  n |  j d |  d S)zC
        Runs the server, using the autoreloader if needed
        r   N)r	   main	inner_run)r   r&   r   r   r   r   r   c   s    
zCommand.runc             O   s(  t  j   | d } | j d d  } t j d k r; d n d } |  j j d  |  j d d	  |  j   t	 j
   j d
  } t j r | j t    } n  |  j j |  |  j j d i |  j   d 6t j d 6|  j r d |  j n |  j d 6|  j d 6| d 6 yA |  j | |   } t |  j t |  j  | d |  j d | Wn t j k
 r} z| i d t j 6d t j 6d t j 6}	 y |	 | j }
 Wn t  k
 rt! |  }
 Yn X|  j" j d |
  t# j$ d  WYd  d  } ~ Xn8 t% k
 r#| r|  j j |  n  t j& d  Yn Xd  S)Nr   shutdown_messager)   win32z
CTRL-BREAKz	CONTROL-CzPerforming system checks...

Zdisplay_num_errorsTz%B %d, %Y - %XzDjango version %(version)s, using settings %(settings)r
Starting development server at http://%(addr)s:%(port)s/
Quit the server with %(quit_command)s.
versionr   z[%s]r1   r3   quit_commandZipv6	threadingz.You don't have permission to access that port.zThat port is already in use.z%That IP address can't be assigned to.z	Error: %sr*   r   )'r	   Zraise_last_exceptiongetsysplatformstdoutwritecheckZcheck_migrationsr   nowstrftimer
   PY2decoder   get_versionr   ZSETTINGS_MODULEr0   r1   r3   r(   r   intr   r.   errorerrnoZEACCESZ
EADDRINUSEZEADDRNOTAVAILKeyErrorr   stderrr!   _exitKeyboardInterruptexit)r   r%   r&   rA   r=   r@   rH   handlereZERRORSZ
error_textr   r   r   r<   n   sL    


		
 


zCommand.inner_run)__name__
__module____qualname__r   Zrequires_system_checksZleave_locale_aloner2   r   r$   r(   r:   r   r<   r   r   )r'   r   r      s   !r   )
__future__r   rO   r!   r4   r.   rC   r   r,   r   Zdjango.core.management.baser   r   Zdjango.core.servers.basehttpr   r   Zdjango.utilsr	   r
   Zdjango.utils.encodingr   r   compileXr6   r   ZBaseRunserverCommandr   r   r   r   <module>   s   