
^Q\'                 @   s  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	 d  d l
 m Z m Z d  d l m Z d  d l m Z m Z d  d l m Z e j d" k rd  d
 l m Z m Z Gd d   d  Z Gd d   d  Z Gd d   d  Z nw y  d  d l m Z m Z m Z Wn. e k
 r]d  d l m Z m Z m Z Yn XGd d   d  Z Gd d   d  Z i d d 6d d 6d d 6d d 6d d 6d d 6Z Gd  d!   d! e  Z d S)#    N)settings)simplify_regex)ViewDoesNotExist)BaseCommandCommandError)translation)color_styleno_style)signalcommand   )
URLPatternURLResolverc               @   s   e  Z d  Z d S)RegexURLPatternN)__name__
__module____qualname__ r   r   `/var/www/dbchiro/venv/build/django-extensions/django_extensions/management/commands/show_urls.pyr      s   r   c               @   s   e  Z d  Z d S)RegexURLResolverN)r   r   r   r   r   r   r   r      s   r   c               @   s   e  Z d  Z d S)LocaleRegexURLResolverN)r   r   r   r   r   r   r   r      s   r   )r   r   r   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   !   s   r   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   $   s   r   z%{url}	{module}	{url_name}	{decorator}densez%{url},{module},{url_name},{decorator}tablealignedzK{url}
	Controller: {module}
	URL Name: {url_name}
	Decorators: {decorator}
verbose jsonzpretty-jsonc                   sL   e  Z d  Z d Z   f d d   Z e d d    Z d d d d	  Z   S)
Commandz8Displays all of the url matching routes for the project.c                s   t  t |   j |  | j d d d d d d d d | j d	 d
 d d d d | j d d d d d d d g  d d | j d d d d d d d d t j   | j d d d d d d d d d  S)Nz
--unsortedz-uaction
store_truedestunsortedhelpz:Show urls unsorted but same order as found in url patternsz
--languagez-llanguagez7Only show this language code (useful for i18n_patterns)z--decoratorz-dappend	decoratordefaultz-Show the presence of given decorator on viewsz--formatz-fformat_styler   z Style of the output. Choices: %sz	--urlconfz-curlconfZROOT_URLCONFz)Set the settings URL conf variable to use)superr   add_argumentsadd_argumentFMTRkeys)selfparser)	__class__r   r   r)   4   s     zCommand.add_argumentsc                s  | r | \ } n  | j  d d  r0 t   } n	 t   } t t d d   rd d d   t j D } n	 t g } t t d d;  |  _ | j  d d     d  k	 r t j    f d d   |  j D |  _ n  | j  d	  } | s d
 g } n  | j  d  } | t	 k r*t
 d | t	 j   f   n  | d k } | rEd } n  t	 | }	 | j  d  }
 g  } x| D]} t | |
  st
 d j | |
    n  y% t t | |
  i  i  d g  }
 Wn t k
 rA} z_ | j  d d   r d d  l } | j   n  t | j d t | |
  t |  f   wkWYd  d  } ~ Xn X|  j |
 j  } x| D]\ } } } t | d  r| j   n! t | d  r| j   n i      f d d   | D } t | t j  r| j } | j d d  n  t | d  r| j } n= t | d  r*d | j j } n t  j! d d t" |   } d j | j# |  } | pcd } t$ |  } d j% |  } | d k r| j& i | d 6| d  6| d! 6| d" 6 q[| j& |	 j d  d j | j' | j#  | j( |   d# | j) |  d | j* |  d	 |   q[WqkW| j  d$ d  rM| d k rMt+ |  } n  | d% k rd& d   | D } d' d   t, |   D   f d( d   | D } n;| d) k rd* d   | D } d+ d   t, |   D  g  } | j( d,  | j( d-  | j( d.  | j( d/  f } | j& d0 j% d1 d2   t,  |  D   | j& d3 j% d4 d2    D   x: | D]2 } | j& d0 j% d5 d2   t,  |  D   qkW| } n2 | d k r| rt- j. | d6 d7 St- j. |  Sd8 j% d9 d   | D  d8 S)<NZno_colorF	ADMIN_FORc             S   s(   g  |  ] } t  | i  i  d  g   q S)r   )
__import__).0mr   r   r   
<listcomp>Q   s   	 z"Command.handle.<locals>.<listcomp>	LANGUAGESr"   c                s.   g  |  ]$ \ } } |   k r | | f  q Sr   r   )r2   codename)r"   r   r   r4   Z   s   	 r$   Zlogin_requiredr&   z-Format style '%s' does not exist. Options: %szpretty-jsonr   r'   z2Settings module {} does not have the attribute {}.r   	tracebackr   z*Error occurred while trying to load %s: %s__globals__func_globalsc                s"   g  |  ] } |   k r |  q Sr   r   )r2   d)r:   r   r   r4      s   	 zfunctools.partialr   r/   z%s()z at 0x[0-9a-f]+z{0}.{1}z, urlmoduler7   
decoratorsurl_namer    r   c             S   s"   g  |  ] } | j  d  d   q S),   )split)r2   rowr   r   r   r4      s   	 c             S   s(   g  |  ] } t  t | d  t    q S)key)lenmax)r2   columnsr   r   r   r4      s   	 c                s5   g  |  ]+ } d  j  d d   t   |  D   q S)z   c             s   s'   |  ] \ } } d  j  | |  Vq d S)z{0:<{1}}N)format)r2   widthcdatar   r   r   	<genexpr>   s    z,Command.handle.<locals>.<listcomp>.<genexpr>)joinzip)r2   rC   )widthsr   r   r4      s   	r   c             S   s"   g  |  ] } | j  d  d   q S)r@   rA   )rB   )r2   rC   r   r   r   r4      s   	 c             S   s(   g  |  ] } t  t | d  t    q S)rD   )rE   rF   )r2   rG   r   r   r   r4      s   	 URLModuleNameZ	Decoratorz | c             s   s'   |  ] \ } } d  j  | |  Vq d S)z{0:<{1}}N)rH   )r2   rI   titler   r   r   rK      s    z!Command.handle.<locals>.<genexpr>z-+-c             s   s   |  ] } d  | Vq d S)-Nr   )r2   rI   r   r   r   rK      s    c             s   s'   |  ] \ } } d  j  | |  Vq d S)z{0:<{1}}N)rH   )r2   rI   rJ   r   r   r   rK      s    indent   
c             S   s   g  |  ] } |  q Sr   r   )r2   vr   r   r   r4      s   	 NN)rX   )/getr	   r   getattrr   r0   r5   r   activater+   r   r,   hasattrrH   r1   	Exceptionr8   	print_excprintERRORstrextract_views_from_urlpatternsurlpatternsr9   r:   
isinstance	functoolspartialfuncinsertr   r/   resubreprr   r   rL   r#   MODULEZMODULE_NAMEZURL_NAMErO   sortedrM   r   dumps)r-   argsoptionsappnamestyleZsettings_modulesr$   r&   Zpretty_jsonZfmtrr'   viewsZsettings_moder8   Zview_functionsrg   regexr?   r>   	func_namer=   r<   Ztable_viewsheaderrC   r   )r:   r"   rN   r   handleF   s    		"	
%,	,'6&#*	zCommand.handler   Nc             C   s  g  } x| D]} t  | t t f  r y | j s@ | j } n' | r^ d j | | j  } n	 | j } t  | t  r | j j   n	 | j j } | j | j	 | | | f  Wqt
 k
 r w YqXq t  | t t f  ry | j } Wn t k
 rw Yn X| r+| j r+d j | | j  }	 n | j p7| }	 t  | t  rX| j j   n	 | j j } t  | t  rxt |  j D]C }
 t j |
 d  ( | j |  j | | | d |	  Wd QXq}Wq| j |  j | | | d |	  q t | d  rDy- | j | j   | | j j | j f  Wqt
 k
 r@w YqXq t | d  sbt | d  ry | j } Wn t k
 rw Yn X| j |  j | | | j j d |  q t d |   q W| S)	z
        Return a list of views from a list of urlpatterns.

        Each object in the returned list is a two-tuple: (view_func, regex)
        z{0}:{1}r   	namespaceN_get_callbackurl_patternsZ_get_url_patternsz,%s does not appear to be a urlpattern object)rd   r   r   r7   rH   patternZdescriberu   r#   callbackr   r   r   r{   ImportErrorry   r   r5   r   overrideextendrb   r\   rz   	TypeError)r-   rc   basery   rs   pr7   r|   patterns
_namespaceZlangauger   r   r   rb      sP    		*!*0&-,z&Command.extract_views_from_urlpatterns)r   r   r   r!   r)   r
   rx   rb   r   r   )r/   r   r   1   s   }r   )r   r   )re   r   ri   ZdjangoZdjango.confr   Zdjango.contrib.admindocs.viewsr   Zdjango.core.exceptionsr   Zdjango.core.management.baser   r   Zdjango.utilsr   Z"django_extensions.management.colorr   r	   Z"django_extensions.management.utilsr
   VERSIONZdjango.urlsr   r   r   r   r   r~   Zdjango.core.urlresolversr+   r   r   r   r   r   <module>   s:    !
