
 X                 @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z 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 m Z d  d	 l m Z d  d
 l m Z m Z d  d l m Z d  d l m  Z! e d d  Z" e j# d d e j$ Z% d Z& Gd d   d e'  Z( d d   Z) d d   Z* d d d  Z+ e j   d d    Z, d d   Z- Gd d    d  e'  Z. Gd! d"   d" e.  Z/ Gd# d$   d$ e'  Z0 d% d&   Z1 d' d(   Z2 d) Z3 d* Z4 d+ Z5 d, Z6 d S)-    )unicode_literalsN)settings)HttpResponseHttpResponseNotFound)ContextEngineTemplateDoesNotExist)force_escapepprint)Resolver404resolve)	lru_cachesixtimezone)MultiValueDict)force_bytes
smart_text)import_string)ugettextdebugTz#API|TOKEN|KEY|SECRET|PASS|SIGNATUREflagsz********************c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)CallableSettingWrapperz Object to wrap callable appearing in settings

    * Not to call in the debug page (#21345).
    * Not to break the debug page if the callable forbidding to set attributes (#23070).
    c             C   s   | |  _  d  S)N)_wrapped)selfZcallable_setting r   @/home/ubuntu/projects/ifolica/build/django/django/views/debug.py__init__!   s    zCallableSettingWrapper.__init__c             C   s   t  |  j  S)N)reprr   )r   r   r   r   __repr__$   s    zCallableSettingWrapper.__repr__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s   r   c             C   s   yM t  j |   r t } n1 t | t  rF d d   | j   D } n | } Wn t k
 rg | } Yn Xt |  r t |  } n  | S)zCleanse an individual setting key/value of sensitive content.

    If the value is a dictionary, recursively cleanse the keys in
    that dictionary.
    c             S   s(   i  |  ] \ } } t  | |  |  q Sr   )cleanse_setting).0kvr   r   r   
<dictcomp>3   s   	 z#cleanse_setting.<locals>.<dictcomp>)	HIDDEN_SETTINGSsearchCLEANSED_SUBSTITUTE
isinstancedictitems	TypeErrorcallabler   )keyvaluecleansedr   r   r   r#   (   s    	
r#   c              C   sL   i  }  x? t  t  D]1 } | j   r t | t t |   |  | <q q W|  S)zQReturns a dictionary of the settings module, with sensitive settings blurred out.)dirr   isupperr#   getattr)Zsettings_dictr%   r   r   r   get_safe_settingsA   s
    #r6   i  c             C   si   t  |  | | |  } |  j   rC | j   } t | d | d d S| j   } t | d | d d Sd S)z
    Create a technical server error response. The last three arguments are
    the values returned from sys.exc_info() and friends.
    statuscontent_typez
text/plainz	text/htmlN)ExceptionReporterZis_ajaxget_traceback_textr   get_traceback_html)requestexc_type	exc_valuetbstatus_codeZreportertexthtmlr   r   r   technical_500_responseJ   s    rC   c               C   s   t  t j    S)N)r   r   Z!DEFAULT_EXCEPTION_REPORTER_FILTERr   r   r   r   %get_default_exception_reporter_filterX   s    rD   c             C   s   t    } t |  d |  S)NZexception_reporter_filter)rD   r5   )r<   Zdefault_filterr   r   r   get_exception_reporter_filter^   s    	rE   c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)ExceptionReporterFilterzv
    Base for all exception reporter filter classes. All overridable hooks
    contain lenient default behaviors.
    c             C   s   | d  k r i  S| j  Sd  S)N)POST)r   r<   r   r   r   get_post_parametersi   s    z+ExceptionReporterFilter.get_post_parametersc             C   s   t  | j j    S)N)listf_localsr-   )r   r<   tb_framer   r   r   get_traceback_frame_variableso   s    z5ExceptionReporterFilter.get_traceback_frame_variablesN)r   r    r!   r"   rH   rL   r   r   r   r   rF   c   s   rF   c               @   sR   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d S)SafeExceptionReporterFilterz
    Use annotations made by the sensitive_post_parameters and
    sensitive_variables decorators to filter out sensitive information.
    c             C   s   t  j d k S)a  
        This filter is to add safety in production environments (i.e. DEBUG
        is False). If DEBUG is True then your site is not safe anyway.
        This hook is provided as a convenience to easily activate or
        deactivate the filter on a per request basis.
        F)r   DEBUG)r   r<   r   r   r   	is_activey   s    z%SafeExceptionReporterFilter.is_activec             C   sd   t  | d g   } |  j |  r` | r` | j   } x* | D] } | | k r: t | | <q: q: Wn  | S)z
        Replaces the keys in a MultiValueDict marked as sensitive with stars.
        This mitigates leaking sensitive POST parameters if something like
        request.POST['nonexistent_key'] throws an exception (#21098).
        sensitive_post_parameters)r5   rO   copyr*   )r   r<   ZmultivaluedictrP   paramr   r   r   get_cleansed_multivaluedict   s    z7SafeExceptionReporterFilter.get_cleansed_multivaluedictc             C   s   | d k r i  St  | d g   } |  j |  r | r | j j   } | d k r} x$ | j   D] \ } } t | | <q_ W| Sx' | D] } | | k r t | | <q q W| Sn | j Sd S)zl
        Replaces the values of POST parameters marked as sensitive with
        stars (*********).
        NrP   __ALL__)r5   rO   rG   rQ   r-   r*   )r   r<   rP   r2   r%   r&   rR   r   r   r   rH      s    z/SafeExceptionReporterFilter.get_post_parametersc             C   sj   y t  | t  } Wn5 t k
 rJ } z d j | |  SWYd  d  } ~ Xn X| rf |  j | |  } n  | S)Nz{!r} while evaluating {!r})r+   r   	ExceptionformatrS   )r   r<   r1   Zis_multivalue_dicter   r   r   cleanse_special_types   s    #z1SafeExceptionReporterFilter.cleanse_special_typesc       	      C   s  | j  } d } x] | d k	 rn | j j d k rb d | j k rb | j d } t | d d  } Pn  | j  } q Wi  } |  j |  r| r| d k r x{ | j j   D] \ } } t | | <q WqMx | j j   D]= \ } } | | k r t } n |  j | |  } | | | <q Wn6 x3 | j j   D]" \ } } |  j | |  | | <q'W| j j d k rd | j k rt | d <t | d <n  | j   S)zf
        Replaces the values of variables marked as sensitive with
        stars (*********).
        NZsensitive_variables_wrappersensitive_variablesrT   	func_argsZfunc_kwargs)	f_backf_codeco_namerJ   r5   rO   r-   r*   rX   )	r   r<   rK   current_framerY   wrapperr2   namer1   r   r   r   rL      s4    		
z9SafeExceptionReporterFilter.get_traceback_frame_variablesN)	r   r    r!   r"   rO   rS   rH   rX   rL   r   r   r   r   rM   s   s   	rM   c               @   ss   e  Z d  Z d Z d d d  Z d d   Z d d   Z d	 d
   Z d d d d  Z d d   Z	 d d   Z
 d S)r9   zE
    A class to organize and coordinate reporting on exceptions.
    Fc             C   s   | |  _  t |  j   |  _ | |  _ | |  _ | |  _ | |  _ t |  j d d   |  _ d |  _	 d  |  _
 t |  j t j  r t d |  j  |  _ t |  j  |  _ n  d  S)NZtemplate_debugFzDeprecated String Exception: %r)r<   rE   filterr=   r>   r?   is_emailr5   template_infotemplate_does_not_exist
postmortemr+   r   string_typesrU   type)r   r<   r=   r>   r?   rb   r   r   r   r      s    							zExceptionReporter.__init__c             C   s  |  j  rB t |  j  t  rB d |  _ |  j j p9 |  j g |  _ n  |  j   } x t |  D] \ } } d | k r"g  } x | d D] \ } } t	 |  } t
 | t j  r | j d d  } n  t |  d k r d | d d  t |  f } n  | j | t |  f  q W| | d <n  | | | <q[ Wd } |  j  rt |  j  t  rt |  j d	 d
  } t |  j d d
  }	 | d
 k	 r|	 d
 k	 r|  j j d }
 t |
 t | d d  t |	 d t |
    d d d } qn  d d l m } i |  j d 6| d 6| d 6|  j d 6|  j j |  j  d 6t   d 6t j d 6d t j  d d  d 6t! j"   d 6|   d 6t j# d 6|  j$ d 6|  j d 6|  j d  6} |  j  r|  j  j% | d! <n  |  j rt |  j d d | d" <n  | r| d$ | d# <n  | S)%z5Return a dictionary containing traceback information.Tvarszutf-8replacei   z%s... <trimmed %d bytes string>r    startNend      asciierrors)get_versionrb   unicode_hintframesr<   Zfiltered_POSTr   Zsys_executablez%d.%d.%d   Zsys_version_infoZserver_timeZdjango_version_infosys_pathrc   rd   re   Zexception_typeZexception_valueZ	lastframe)&r=   
issubclassr   rd   r>   chainre   get_traceback_frames	enumerater
   r+   r   binary_typedecodelenappendr	   UnicodeErrorr5   argsr   maxmindjangorq   rb   r<   ra   rH   r6   sys
executableversion_infor   nowpathrc   r   )r   rs   iframeZ
frame_varsr%   r&   rr   rk   rl   Zunicode_strrq   cr   r   r   get_traceback_data   s`    	#-







		z$ExceptionReporter.get_traceback_datac             C   s4   t  j t  } t |  j   d d } | j |  S)z1Return HTML version of debug 500 HTTP error page.use_l10nF)DEBUG_ENGINEfrom_stringTECHNICAL_500_TEMPLATEr   r   render)r   tr   r   r   r   r;   9  s    z$ExceptionReporter.get_traceback_htmlc             C   s:   t  j t  } t |  j   d d d d } | j |  S)z7Return plain text version of debug 500 HTTP error page.Z
autoescapeFr   )r   r   TECHNICAL_500_TEXT_TEMPLATEr   r   r   )r   r   r   r   r   r   r:   ?  s    z$ExceptionReporter.get_traceback_textNc                s  d } | d k	 rg t  | d  rg y | j |  } Wn t k
 rH Yn X| d k	 rg | j   } qg n  | d k r y. t | d   } | j   j   } Wd QXWq t t f k
 r Yq Xn  | d k r d g  d g  f St | d t	 j
  rbd   xL | d d  D]: } t j d |  }	 |	 r|	 j d  j d    PqqW  f d	 d
   | D } n  t d | |  }
 | | } | |
 |  } | | } | | d |  } |
 | | | f S)z
        Returns context_lines before and after lineno from file.
        Returns (pre_context_lineno, pre_context, context_line, post_context).
        N
get_sourcerbr   ro      s   coding[:=]\s*([-\w.]+)rm   c                s%   g  |  ] } t  j |   d    q S)ri   )r   	text_type)r$   sline)encodingr   r   
<listcomp>g  s   	 z:ExceptionReporter._get_lines_from_file.<locals>.<listcomp>)hasattrr   ImportError
splitlinesopenreadOSErrorIOErrorr+   r   r{   rer)   groupr|   r   )r   filenamelinenoZcontext_linesloadermodule_namesourcefplinematchZlower_boundZupper_boundpre_contextcontext_linepost_contextr   )r   r   _get_lines_from_fileE  s<    

z&ExceptionReporter._get_lines_from_filec             C   sC  d d   } g  } |  j  } x# | r@ | j |  | |  } q Wg  } | sQ | S| j   } t j sm | rv |  j n | j } x| d  k	 r>| j j j	 d  r | j
 } q n  | j j j } | j j j } | j d } | j j j	 d  }	 | j j j	 d  p
d }
 |  j | | d |	 |
  \ } } } } | d  k	 r| j i | |  d	 6t | d
 d  d 6| d 6|
 j d  rd n d d 6| d 6| d 6| d d 6|  j j |  j | j  d 6t |  d 6| d 6| d 6| d 6| d d 6 n  t j r
| j
 } q | j
 r2| r2| j   } | j } q | j
 } q W| S)Nc             S   s.   t  |  d d   } t  |  d d   } | p- | S)N	__cause____context__)r5   )r>   explicitZimplicitr   r   r   explicit_or_implicit_causes  s    zJExceptionReporter.get_traceback_frames.<locals>.explicit_or_implicit_causeZ__traceback_hide__rm   
__loader__r   rj      Z	exc_causer   TZexc_cause_explicitr?   zdjango.r   userrg   r   functionr   rh   idr   r   r   pre_context_lineno)r>   r~   popr   PY2r?   __traceback__rK   rJ   gettb_nextr\   co_filenamer]   	tb_lineno	f_globalsr   r5   
startswithra   rL   r<   r   )r   r   
exceptionsr>   rs   r?   r   r   r   r   r   r   r   r   r   r   r   r   ry   r  sX    		"	!		z&ExceptionReporter.get_traceback_framesc             C   sg   d d l  } |  j   } d d   | D } d g } | | j |  7} | | j |  j |  j  7} | S)zJ
        Return the same data as from traceback.format_exception.
        r   Nc             S   s2   g  |  ]( } | d  | d | d | d f  q S)r   r   r   r   r   )r$   fr   r   r   r     s   	 z6ExceptionReporter.format_exception.<locals>.<listcomp>z#Traceback (most recent call last):
)	tracebackry   format_listformat_exception_onlyr=   r>   )r   r   rs   r?   rI   r   r   r   format_exception  s    	z"ExceptionReporter.format_exception)r   r    r!   r"   r   r   r;   r:   r   ry   r   r   r   r   r   r9      s   :-Cr9   c             C   si  y | j  d d } Wn. t t t f k
 rE |  j d d  } Yn Xy | j  d d } Wn! t t t f k
 r~ g  } Yn X| s|  j d k rt |  d k rt | d  d k rt | d d d d  t | d d d	 d  k o d
 k n rt |   St |  d t	 j
  } t | t j  r>| j } n  d } y t |  j  } Wn t k
 rkYn X| j } t | d  r| j } n0 t | d  rt | j d  r| j j } n  t | d  r| j } d | | f } n  t j t  }	 t i | d 6t	 j
 d 6| d 6| d 6t | d d d 6|  d 6t   d 6| d 6 }
 t |	 j |
  d d S)zKCreate a technical 404 error response. The exception should be the Http404.r   r   rm   Ntried/Zapp_namerj   	namespaceZadminurlconfr   	__class__r    z%s.%sZroot_urlconfrequest_pathZurlpatternsrp   ri   reasonr<   r   Zraising_view_namer8   z	text/html)r   
IndexErrorr.   KeyErrorZ	path_infor   r}   r5   default_urlconfr   ZROOT_URLCONFr+   types
ModuleTyper   r   r   funcr   r   r    r   r   TECHNICAL_404_TEMPLATEr   r   r6   r   r   )r<   	exceptionZ	error_urlr   r   ZcallerZresolver_matchobjmoduler   r   r   r   r   technical_404_response  sR    D
	!	

r   c             C   su   t  j t  } t i t d  d 6t d  d 6t d  d 6t d  d 6t d	  d
 6 } t | j |  d d S)z+Create an empty URLconf 404 error response.zWelcome to Djangotitlez
It worked!headingz2Congratulations on your first Django-powered page.Z
subheadingzOf course, you haven't actually done any work yet. Next, start your first app by running <code>python manage.py startapp [app_label]</code>.ZinstructionszYou're seeing this message because you have <code>DEBUG = True</code> in your Django settings file and you haven't configured any URLs. Get to work!Zexplanationr8   z	text/html)r   r   DEFAULT_URLCONF_TEMPLATEr   _r   r   )r<   r   r   r   r   r   r     s    
r   aKG  
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; }
    h2 { margin-bottom:.8em; }
    h2 span { font-size:80%; color:#666; font-weight:normal; }
    h3 { margin:1em 0 .5em 0; }
    h4 { margin:0 0 .5em 0; font-weight: normal; }
    code, pre { font-size: 100%; white-space: pre-wrap; }
    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
    tbody td, tbody th { vertical-align:top; padding:2px 3px; }
    thead th {
      padding:1px 6px 1px 3px; background:#fefefe; text-align:left;
      font-weight:normal; font-size:11px; border:1px solid #ddd;
    }
    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
    table.vars { margin:5px 0 2px 40px; }
    table.vars td, table.req td { font-family:monospace; }
    table td.code { width:100%; }
    table td.code pre { overflow:hidden; }
    table.source th { color:#666; }
    table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
    ul.traceback { list-style-type:none; color: #222; }
    ul.traceback li.frame { padding-bottom:1em; color:#666; }
    ul.traceback li.user { background-color:#e0e0e0; color:#000 }
    div.context { padding:10px 0; overflow:hidden; }
    div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }
    div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; padding-left: 2px; }
    div.context ol li pre { display:inline; }
    div.context ol.context-line li { color:#505050; background-color:#dfdfdf; padding: 3px 2px; }
    div.context ol.context-line li span { position:absolute; right:32px; }
    .user div.context ol.context-line li { background-color:#bbb; color:#000; }
    .user div.context ol li { color:#666; }
    div.commands { margin-left: 40px; }
    div.commands a { color:#555; text-decoration:none; }
    .user div.commands a { color: black; }
    #summary { background: #ffc; }
    #summary h2 { font-weight: normal; color: #666; }
    #explanation { background:#eee; }
    #template, #template-not-exist { background:#f6f6f6; }
    #template-not-exist ul { margin: 0 0 10px 20px; }
    #template-not-exist .postmortem-section { margin-bottom: 3px; }
    #unicode-hint { background:#eee; }
    #traceback { background:#eee; }
    #requestinfo { background:#f6f6f6; padding-left:120px; }
    #summary table { border:none; background:transparent; }
    #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
    #requestinfo h3 { margin-bottom:-1em; }
    .error { background: #ffc; }
    .specific { color:#cc3300; font-weight:bold; }
    h2 span.commands { font-size:.7em;}
    span.commands a:link {color:#5E5694;}
    pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }
    .append-bottom { margin-bottom: 10px; }
  </style>
  {% if not is_email %}
  <script type="text/javascript">
  //<!--
    function getElementsByClassName(oElm, strTagName, strClassName){
        // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com
        var arrElements = (strTagName == "*" && document.all)? document.all :
        oElm.getElementsByTagName(strTagName);
        var arrReturnElements = new Array();
        strClassName = strClassName.replace(/\-/g, "\-");
        var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
        var oElement;
        for(var i=0; i<arrElements.length; i++){
            oElement = arrElements[i];
            if(oRegExp.test(oElement.className)){
                arrReturnElements.push(oElement);
            }
        }
        return (arrReturnElements)
    }
    function hideAll(elems) {
      for (var e = 0; e < elems.length; e++) {
        elems[e].style.display = 'none';
      }
    }
    window.onload = function() {
      hideAll(getElementsByClassName(document, 'table', 'vars'));
      hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
      hideAll(getElementsByClassName(document, 'ol', 'post-context'));
      hideAll(getElementsByClassName(document, 'div', 'pastebin'));
    }
    function toggle() {
      for (var i = 0; i < arguments.length; i++) {
        var e = document.getElementById(arguments[i]);
        if (e) {
          e.style.display = e.style.display == 'none' ? 'block': 'none';
        }
      }
      return false;
    }
    function varToggle(link, id) {
      toggle('v' + id);
      var s = link.getElementsByTagName('span')[0];
      var uarr = String.fromCharCode(0x25b6);
      var darr = String.fromCharCode(0x25bc);
      s.textContent = s.textContent == uarr ? darr : uarr;
      return false;
    }
    function switchPastebinFriendly(link) {
      s1 = "Switch to copy-and-paste view";
      s2 = "Switch back to interactive view";
      link.textContent = link.textContent.trim() == s1 ? s2: s1;
      toggle('browserTraceback', 'pastebinTraceback');
      return false;
    }
    //-->
  </script>
  {% endif %}
</head>
<body>
<div id="summary">
  <h1>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</h1>
  <pre class="exception_value">{% if exception_value %}{{ exception_value|force_escape }}{% else %}No exception message supplied{% endif %}</pre>
  <table class="meta">
{% if request %}
    <tr>
      <th>Request Method:</th>
      <td>{{ request.META.REQUEST_METHOD }}</td>
    </tr>
    <tr>
      <th>Request URL:</th>
      <td>{{ request.get_raw_uri|escape }}</td>
    </tr>
{% endif %}
    <tr>
      <th>Django Version:</th>
      <td>{{ django_version_info }}</td>
    </tr>
{% if exception_type %}
    <tr>
      <th>Exception Type:</th>
      <td>{{ exception_type }}</td>
    </tr>
{% endif %}
{% if exception_type and exception_value %}
    <tr>
      <th>Exception Value:</th>
      <td><pre>{{ exception_value|force_escape }}</pre></td>
    </tr>
{% endif %}
{% if lastframe %}
    <tr>
      <th>Exception Location:</th>
      <td>{{ lastframe.filename|escape }} in {{ lastframe.function|escape }}, line {{ lastframe.lineno }}</td>
    </tr>
{% endif %}
    <tr>
      <th>Python Executable:</th>
      <td>{{ sys_executable|escape }}</td>
    </tr>
    <tr>
      <th>Python Version:</th>
      <td>{{ sys_version_info }}</td>
    </tr>
    <tr>
      <th>Python Path:</th>
      <td><pre>{{ sys_path|pprint }}</pre></td>
    </tr>
    <tr>
      <th>Server time:</th>
      <td>{{server_time|date:"r"}}</td>
    </tr>
  </table>
</div>
{% if unicode_hint %}
<div id="unicode-hint">
    <h2>Unicode error hint</h2>
    <p>The string that could not be encoded/decoded was: <strong>{{ unicode_hint|force_escape }}</strong></p>
</div>
{% endif %}
{% if template_does_not_exist %}
<div id="template-not-exist">
    <h2>Template-loader postmortem</h2>
    {% if postmortem %}
        <p class="append-bottom">Django tried loading these templates, in this order:</p>
        {% for entry in postmortem %}
            <p class="postmortem-section">Using engine <code>{{ entry.backend.name }}</code>:</p>
            <ul>
                {% if entry.tried %}
                    {% for attempt in entry.tried %}
                        <li><code>{{ attempt.0.loader_name }}</code>: {{ attempt.0.name }} ({{ attempt.1 }})</li>
                    {% endfor %}
                {% else %}
                    <li>This engine did not provide a list of tried templates.</li>
                {% endif %}
            </ul>
        {% endfor %}
    {% else %}
        <p>No templates were found because your 'TEMPLATES' setting is not configured.</p>
    {% endif %}
</div>
{% endif %}
{% if template_info %}
<div id="template">
   <h2>Error during template rendering</h2>
   <p>In template <code>{{ template_info.name }}</code>, error at line <strong>{{ template_info.line }}</strong></p>
   <h3>{{ template_info.message }}</h3>
   <table class="source{% if template_info.top %} cut-top{% endif %}
      {% if template_info.bottom != template_info.total %} cut-bottom{% endif %}">
   {% for source_line in template_info.source_lines %}
   {% if source_line.0 == template_info.line %}
   <tr class="error"><th>{{ source_line.0 }}</th>
     <td>{{ template_info.before }}<span class="specific">{{ template_info.during }}</span>{{ template_info.after }}</td>
   </tr>
   {% else %}
      <tr><th>{{ source_line.0 }}</th>
      <td>{{ source_line.1 }}</td></tr>
   {% endif %}
   {% endfor %}
   </table>
</div>
{% endif %}
{% if frames %}
<div id="traceback">
  <h2>Traceback <span class="commands">{% if not is_email %}<a href="#" onclick="return switchPastebinFriendly(this);">
    Switch to copy-and-paste view</a></span>{% endif %}
  </h2>
  {% autoescape off %}
  <div id="browserTraceback">
    <ul class="traceback">
      {% for frame in frames %}
        {% ifchanged frame.exc_cause %}{% if frame.exc_cause %}
          <li><h3>
          {% if frame.exc_cause_explicit %}
            The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception:
          {% else %}
            During handling of the above exception ({{ frame.exc_cause }}), another exception occurred:
          {% endif %}
        </h3></li>
        {% endif %}{% endifchanged %}
        <li class="frame {{ frame.type }}">
          <code>{{ frame.filename|escape }}</code> in <code>{{ frame.function|escape }}</code>

          {% if frame.context_line %}
            <div class="context" id="c{{ frame.id }}">
              {% if frame.pre_context and not is_email %}
                <ol start="{{ frame.pre_context_lineno }}" class="pre-context" id="pre{{ frame.id }}">
                {% for line in frame.pre_context %}
                  <li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>{{ line|escape }}</pre></li>
                {% endfor %}
                </ol>
              {% endif %}
              <ol start="{{ frame.lineno }}" class="context-line">
                <li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>
{{ frame.context_line|escape }}</pre>{% if not is_email %} <span>...</span>{% endif %}</li></ol>
              {% if frame.post_context and not is_email  %}
                <ol start='{{ frame.lineno|add:"1" }}' class="post-context" id="post{{ frame.id }}">
                  {% for line in frame.post_context %}
                  <li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>{{ line|escape }}</pre></li>
                  {% endfor %}
              </ol>
              {% endif %}
            </div>
          {% endif %}

          {% if frame.vars %}
            <div class="commands">
                {% if is_email %}
                    <h2>Local Vars</h2>
                {% else %}
                    <a href="#" onclick="return varToggle(this, '{{ frame.id }}')"><span>&#x25b6;</span> Local vars</a>
                {% endif %}
            </div>
            <table class="vars" id="v{{ frame.id }}">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                {% for var in frame.vars|dictsort:0 %}
                  <tr>
                    <td>{{ var.0|force_escape }}</td>
                    <td class="code"><pre>{{ var.1 }}</pre></td>
                  </tr>
                {% endfor %}
              </tbody>
            </table>
          {% endif %}
        </li>
      {% endfor %}
    </ul>
  </div>
  {% endautoescape %}
  <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">
{% if not is_email %}
  <div id="pastebinTraceback" class="pastebin">
    <input type="hidden" name="language" value="PythonConsole">
    <input type="hidden" name="title"
      value="{{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}">
    <input type="hidden" name="source" value="Django Dpaste Agent">
    <input type="hidden" name="poster" value="Django">
    <textarea name="content" id="traceback_area" cols="140" rows="25">
Environment:

{% if request %}
Request Method: {{ request.META.REQUEST_METHOD }}
Request URL: {{ request.get_raw_uri|escape }}
{% endif %}
Django Version: {{ django_version_info }}
Python Version: {{ sys_version_info }}
Installed Applications:
{{ settings.INSTALLED_APPS|pprint }}
Installed Middleware:
{% if settings.MIDDLEWARE is not None %}{{ settings.MIDDLEWARE|pprint }}{% else %}{{ settings.MIDDLEWARE_CLASSES|pprint }}{% endif %}

{% if template_does_not_exist %}Template loader postmortem
{% if postmortem %}Django tried loading these templates, in this order:
{% for entry in postmortem %}
Using engine {{ entry.backend.name }}:
{% if entry.tried %}{% for attempt in entry.tried %}    * {{ attempt.0.loader_name }}: {{ attempt.0.name }} ({{ attempt.1 }})
{% endfor %}{% else %}    This engine did not provide a list of tried templates.
{% endif %}{% endfor %}
{% else %}No templates were found because your 'TEMPLATES' setting is not configured.
{% endif %}{% endif %}{% if template_info %}
Template error:
In template {{ template_info.name }}, error at line {{ template_info.line }}
   {{ template_info.message }}{% for source_line in template_info.source_lines %}{% if source_line.0 == template_info.line %}   {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}{% else %}   {{ source_line.0 }} : {{ source_line.1 }}{% endif %}{% endfor %}{% endif %}

Traceback:{% for frame in frames %}
{% ifchanged frame.exc_cause %}{% if frame.exc_cause %}{% if frame.exc_cause_explicit %}
The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception:
{% else %}
During handling of the above exception ({{ frame.exc_cause }}), another exception occurred:
{% endif %}{% endif %}{% endifchanged %}
File "{{ frame.filename|escape }}" in {{ frame.function|escape }}
{% if frame.context_line %}  {{ frame.lineno }}. {{ frame.context_line|escape }}{% endif %}{% endfor %}

Exception Type: {{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}
Exception Value: {{ exception_value|force_escape }}
</textarea>
  <br><br>
  <input type="submit" value="Share this traceback on a public website">
  </div>
</form>
</div>
{% endif %}
{% endif %}

<div id="requestinfo">
  <h2>Request information</h2>

{% if request %}
  {% if request.user %}
    <h3 id="user-info">USER</h3>
    <p>{{ request.user }}</p>
  {% endif %}

  <h3 id="get-info">GET</h3>
  {% if request.GET %}
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        {% for var in request.GET.items %}
          <tr>
            <td>{{ var.0 }}</td>
            <td class="code"><pre>{{ var.1|pprint }}</pre></td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
  {% else %}
    <p>No GET data</p>
  {% endif %}

  <h3 id="post-info">POST</h3>
  {% if filtered_POST %}
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        {% for var in filtered_POST.items %}
          <tr>
            <td>{{ var.0 }}</td>
            <td class="code"><pre>{{ var.1|pprint }}</pre></td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
  {% else %}
    <p>No POST data</p>
  {% endif %}
  <h3 id="files-info">FILES</h3>
  {% if request.FILES %}
    <table class="req">
        <thead>
            <tr>
                <th>Variable</th>
                <th>Value</th>
            </tr>
        </thead>
        <tbody>
            {% for var in request.FILES.items %}
                <tr>
                    <td>{{ var.0 }}</td>
                    <td class="code"><pre>{{ var.1|pprint }}</pre></td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
  {% else %}
    <p>No FILES data</p>
  {% endif %}


  <h3 id="cookie-info">COOKIES</h3>
  {% if request.COOKIES %}
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        {% for var in request.COOKIES.items %}
          <tr>
            <td>{{ var.0 }}</td>
            <td class="code"><pre>{{ var.1|pprint }}</pre></td>
          </tr>
        {% endfor %}
      </tbody>
    </table>
  {% else %}
    <p>No cookie data</p>
  {% endif %}

  <h3 id="meta-info">META</h3>
  <table class="req">
    <thead>
      <tr>
        <th>Variable</th>
        <th>Value</th>
      </tr>
    </thead>
    <tbody>
      {% for var in request.META.items|dictsort:0 %}
        <tr>
          <td>{{ var.0 }}</td>
          <td class="code"><pre>{{ var.1|pprint }}</pre></td>
        </tr>
      {% endfor %}
    </tbody>
  </table>
{% else %}
  <p>Request data not supplied</p>
{% endif %}

  <h3 id="settings-info">Settings</h3>
  <h4>Using settings module <code>{{ settings.SETTINGS_MODULE }}</code></h4>
  <table class="req">
    <thead>
      <tr>
        <th>Setting</th>
        <th>Value</th>
      </tr>
    </thead>
    <tbody>
      {% for var in settings.items|dictsort:0 %}
        <tr>
          <td>{{ var.0 }}</td>
          <td class="code"><pre>{{ var.1|pprint }}</pre></td>
        </tr>
      {% endfor %}
    </tbody>
  </table>

</div>
{% if not is_email %}
  <div id="explanation">
    <p>
      You're seeing this error because you have <code>DEBUG = True</code> in your
      Django settings file. Change that to <code>False</code>, and Django will
      display a standard page generated by the handler for this status code.
    </p>
  </div>
{% endif %}
</body>
</html>
a  {% firstof exception_type 'Report' %}{% if request %} at {{ request.path_info }}{% endif %}
{% firstof exception_value 'No exception message supplied' %}
{% if request %}
Request Method: {{ request.META.REQUEST_METHOD }}
Request URL: {{ request.get_raw_uri }}{% endif %}
Django Version: {{ django_version_info }}
Python Executable: {{ sys_executable }}
Python Version: {{ sys_version_info }}
Python Path: {{ sys_path }}
Server time: {{server_time|date:"r"}}
Installed Applications:
{{ settings.INSTALLED_APPS|pprint }}
Installed Middleware:
{% if settings.MIDDLEWARE is not None %}{{ settings.MIDDLEWARE|pprint }}{% else %}{{ settings.MIDDLEWARE_CLASSES|pprint }}{% endif %}
{% if template_does_not_exist %}Template loader postmortem
{% if postmortem %}Django tried loading these templates, in this order:
{% for entry in postmortem %}
Using engine {{ entry.backend.name }}:
{% if entry.tried %}{% for attempt in entry.tried %}    * {{ attempt.0.loader_name }}: {{ attempt.0.name }} ({{ attempt.1 }})
{% endfor %}{% else %}    This engine did not provide a list of tried templates.
{% endif %}{% endfor %}
{% else %}No templates were found because your 'TEMPLATES' setting is not configured.
{% endif %}
{% endif %}{% if template_info %}
Template error:
In template {{ template_info.name }}, error at line {{ template_info.line }}
   {{ template_info.message }}
{% for source_line in template_info.source_lines %}{% if source_line.0 == template_info.line %}   {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}{% else %}   {{ source_line.0 }} : {{ source_line.1 }}{% endif %}{% endfor %}{% endif %}{% if frames %}

Traceback:{% for frame in frames %}{% ifchanged frame.exc_cause %}  {% if frame.exc_cause %}
    {% if frame.exc_cause_explicit %}
      The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception:
    {% else %}
      During handling of the above exception ({{ frame.exc_cause }}), another exception occurred:
    {% endif %}
  {% endif %}
{% endifchanged %}
File "{{ frame.filename }}" in {{ frame.function }}
{% if frame.context_line %}  {{ frame.lineno }}. {{ frame.context_line }}{% endif %}
{% endfor %}
{% if exception_type %}Exception Type: {{ exception_type }}{% if request %} at {{ request.path_info }}{% endif %}
{% if exception_value %}Exception Value: {{ exception_value }}{% endif %}{% endif %}{% endif %}
{% if request %}Request information:
{% if request.user %}USER: {{ request.user }}{% endif %}

GET:{% for k, v in request.GET.items %}
{{ k }} = {{ v|stringformat:"r" }}{% empty %} No GET data{% endfor %}

POST:{% for k, v in filtered_POST.items %}
{{ k }} = {{ v|stringformat:"r" }}{% empty %} No POST data{% endfor %}

FILES:{% for k, v in request.FILES.items %}
{{ k }} = {{ v|stringformat:"r" }}{% empty %} No FILES data{% endfor %}

COOKIES:{% for k, v in request.COOKIES.items %}
{{ k }} = {{ v|stringformat:"r" }}{% empty %} No cookie data{% endfor %}

META:{% for k, v in request.META.items|dictsort:0 %}
{{ k }} = {{ v|stringformat:"r" }}{% endfor %}
{% else %}Request data not supplied
{% endif %}
Settings:
Using settings module {{ settings.SETTINGS_MODULE }}{% for k, v in settings.items|dictsort:0 %}
{{ k }} = {{ v|stringformat:"r" }}{% endfor %}

{% if not is_email %}
You're seeing this error because you have DEBUG = True in your
Django settings file. Change that to False, and Django will
display a standard page generated by the handler for this status code.
{% endif %}
aJ	  
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Page not found at {{ request.path_info|escape }}</title>
  <meta name="robots" content="NONE,NOARCHIVE">
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background:#eee; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; margin-bottom:.4em; }
    h1 span { font-size:60%; color:#666; font-weight:normal; }
    table { border:none; border-collapse: collapse; width:100%; }
    td, th { vertical-align:top; padding:2px 3px; }
    th { width:12em; text-align:right; color:#666; padding-right:.5em; }
    #info { background:#f6f6f6; }
    #info ol { margin: 0.5em 4em; }
    #info ol li { font-family: monospace; }
    #summary { background: #ffc; }
    #explanation { background:#eee; border-bottom: 0px none; }
  </style>
</head>
<body>
  <div id="summary">
    <h1>Page not found <span>(404)</span></h1>
    <table class="meta">
      <tr>
        <th>Request Method:</th>
        <td>{{ request.META.REQUEST_METHOD }}</td>
      </tr>
      <tr>
        <th>Request URL:</th>
        <td>{{ request.build_absolute_uri|escape }}</td>
      </tr>
      {% if raising_view_name %}
      <tr>
        <th>Raised by:</th>
        <td>{{ raising_view_name }}</td>
      </tr>
      {% endif %}
    </table>
  </div>
  <div id="info">
    {% if urlpatterns %}
      <p>
      Using the URLconf defined in <code>{{ urlconf }}</code>,
      Django tried these URL patterns, in this order:
      </p>
      <ol>
        {% for pattern in urlpatterns %}
          <li>
            {% for pat in pattern %}
                {{ pat.regex.pattern }}
                {% if forloop.last and pat.name %}[name='{{ pat.name }}']{% endif %}
            {% endfor %}
          </li>
        {% endfor %}
      </ol>
      <p>The current URL, <code>{{ request_path|escape }}</code>, didn't match any of these.</p>
    {% else %}
      <p>{{ reason }}</p>
    {% endif %}
  </div>

  <div id="explanation">
    <p>
      You're seeing this error because you have <code>DEBUG = True</code> in
      your Django settings file. Change that to <code>False</code>, and Django
      will display a standard 404 page.
    </p>
  </div>
</body>
</html>
a  
<!DOCTYPE html>
<html lang="en"><head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE"><title>{{ title }}</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; }
    h2 { margin-bottom:.8em; }
    h2 span { font-size:80%; color:#666; font-weight:normal; }
    h3 { margin:1em 0 .5em 0; }
    h4 { margin:0 0 .5em 0; font-weight: normal; }
    table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
    tbody td, tbody th { vertical-align:top; padding:2px 3px; }
    thead th {
      padding:1px 6px 1px 3px; background:#fefefe; text-align:left;
      font-weight:normal; font-size:11px; border:1px solid #ddd;
    }
    tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
    #summary { background: #e0ebff; }
    #summary h2 { font-weight: normal; color: #666; }
    #explanation { background:#eee; }
    #instructions { background:#f6f6f6; }
    #summary table { border:none; background:transparent; }
  </style>
</head>

<body>
<div id="summary">
  <h1>{{ heading }}</h1>
  <h2>{{ subheading }}</h2>
</div>

<div id="instructions">
  <p>
    {{ instructions|safe }}
  </p>
</div>

<div id="explanation">
  <p>
    {{ explanation|safe }}
  </p>
</div>
</body></html>
)7
__future__r   r   r   r   Zdjango.confr   Zdjango.httpr   r   Zdjango.templater   r   r   Zdjango.template.defaultfiltersr	   r
   Zdjango.urlsr   r   Zdjango.utilsr   r   r   Zdjango.utils.datastructuresr   Zdjango.utils.encodingr   r   Zdjango.utils.module_loadingr   Zdjango.utils.translationr   r   r   compile
IGNORECASEr(   r*   objectr   r#   r6   rC   rD   rE   rF   rM   r9   r   r   r   r   r   r   r   r   r   r   <module>   sB   	w7  3