View Issue Details

IDProjectCategoryView StatusLast Update
0004431Talerobsolete componentpublic2016-04-16 22:46
ReporterChristian Grothoff Assigned ToFlorian Dold  
PriorityurgentSeverityblockReproducibilityalways
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Version0.0 
Target Version0.0Fixed in Version0.0 
Summary0004431: locally installed taler bank fails on withdraw
DescriptionI get:

NameError at /pin/question
name 'urlparse' is not defined
TagsNo tags attached.
Attached Files
NameError at _pin_question.html (83,568 bytes)   
<!DOCTYPE html>
<!-- saved from url=(0597)http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&exchange=http%3A%2F%2Fexchange%2F&reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amount_value=20&amount_fraction=0&amount_currency=KUDOS -->
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>NameError at /pin/question</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>
  
  <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.innerHTML = s.innerHTML == uarr ? darr : uarr;
      return false;
    }
    function switchPastebinFriendly(link) {
      s1 = "Switch to copy-and-paste view";
      s2 = "Switch back to interactive view";
      link.innerHTML = link.innerHTML.trim() == s1 ? s2: s1;
      toggle('browserTraceback', 'pastebinTraceback');
      return false;
    }
    //-->
  </script>
  
</head>
<body>
<div id="summary">
  <h1>NameError at /pin/question</h1>
  <pre class="exception_value">name 'urlparse' is not defined</pre>
  <table class="meta">

    <tbody><tr>
      <th>Request Method:</th>
      <td>GET</td>
    </tr>
    <tr>
      <th>Request URL:</th>
      <td>http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS</td>
    </tr>

    <tr>
      <th>Django Version:</th>
      <td>1.9.5</td>
    </tr>

    <tr>
      <th>Exception Type:</th>
      <td>NameError</td>
    </tr>


    <tr>
      <th>Exception Value:</th>
      <td><pre>name 'urlparse' is not defined</pre></td>
    </tr>


    <tr>
      <th>Exception Location:</th>
      <td>/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py in normalize_exchange_url, line 35</td>
    </tr>

    <tr>
      <th>Python Executable:</th>
      <td>/home/grothoff/bin/uwsgi</td>
    </tr>
    <tr>
      <th>Python Version:</th>
      <td>3.4.3</td>
    </tr>
    <tr>
      <th>Python Path:</th>
      <td><pre>['.',
 '',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-i386-linux-gnu',
 '/usr/lib/python3.4/lib-dynload',
 '/usr/local/lib/python3.4/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/home/grothoff/lib/python3.4/site-packages']</pre></td>
    </tr>
    <tr>
      <th>Server time:</th>
      <td>Sat, 16 Apr 2016 18:00:39 +0000</td>
    </tr>
  </tbody></table>
</div>




<div id="traceback">
  <h2>Traceback <span class="commands"><a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return switchPastebinFriendly(this);">
    Switch to copy-and-paste view</a></span>
  </h2>
  
  <div id="browserTraceback">
    <ul class="traceback">
      
        
        <li class="frame django">
          <code>/home/grothoff/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>get_response</code>

          
            <div class="context" id="c3011898180">
              
                <ol start="142" class="pre-context" id="pre3011898180" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                        break</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>            if response is None:</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                wrapped_callback = self.make_view_atomic(callback)</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                try:</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                    response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                except Exception as e:</pre></li>
                
                </ol>
              
              <ol start="149" class="context-line">
                <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                    response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li></ol>
              
                <ol start="150" class="post-context" id="post3011898180" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>            # Complain if the view returned None (a common error).</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>            if response is None:</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                if isinstance(callback, types.FunctionType):    # FBV</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                    view_name = callback.__name__</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898180&#39;, &#39;post3011898180&#39;)"><pre>                else:                                           # CBV</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011898180&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011898180" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>callback_kwargs</td>
                    <td class="code"><pre>{}</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver_match</td>
                    <td class="code"><pre>ResolverMatch(func=talerbank.app.captcha.pin_tan_question, args=(), kwargs={}, url_name=pin_tan, app_names=[], namespaces=[])</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>middleware_method</td>
                    <td class="code"><pre>&lt;bound method CsrfViewMiddleware.process_view of &lt;django.middleware.csrf.CsrfViewMiddleware object at 0xb3b156ec&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver</td>
                    <td class="code"><pre>&lt;RegexURLResolver 'talerbank.urls' (None:None) ^/&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: GET '/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>response_is_rendered</td>
                    <td class="code"><pre>False</pre></td>
                  </tr>
                
                  <tr>
                    <td>wrapped_callback</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940d1c&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940d1c&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>urlconf</td>
                    <td class="code"><pre>'talerbank.urls'</pre></td>
                  </tr>
                
                  <tr>
                    <td>response</td>
                    <td class="code"><pre>None</pre></td>
                  </tr>
                
                  <tr>
                    <td>self</td>
                    <td class="code"><pre>&lt;django.core.handlers.wsgi.WSGIHandler object at 0xb4570e2c&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/grothoff/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>get_response</code>

          
            <div class="context" id="c3011898020">
              
                <ol start="140" class="pre-context" id="pre3011898020" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                    response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                    if response:</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                        break</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>            if response is None:</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                wrapped_callback = self.make_view_atomic(callback)</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                try:</pre></li>
                
                </ol>
              
              <ol start="147" class="context-line">
                <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                    response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li></ol>
              
                <ol start="148" class="post-context" id="post3011898020" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                except Exception as e:</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                    response = self.process_exception_by_middleware(e, request)</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>            # Complain if the view returned None (a common error).</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>            if response is None:</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898020&#39;, &#39;post3011898020&#39;)"><pre>                if isinstance(callback, types.FunctionType):    # FBV</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011898020&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011898020" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>callback_kwargs</td>
                    <td class="code"><pre>{}</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver_match</td>
                    <td class="code"><pre>ResolverMatch(func=talerbank.app.captcha.pin_tan_question, args=(), kwargs={}, url_name=pin_tan, app_names=[], namespaces=[])</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>middleware_method</td>
                    <td class="code"><pre>&lt;bound method CsrfViewMiddleware.process_view of &lt;django.middleware.csrf.CsrfViewMiddleware object at 0xb3b156ec&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver</td>
                    <td class="code"><pre>&lt;RegexURLResolver 'talerbank.urls' (None:None) ^/&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: GET '/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>response_is_rendered</td>
                    <td class="code"><pre>False</pre></td>
                  </tr>
                
                  <tr>
                    <td>wrapped_callback</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940d1c&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940d1c&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>urlconf</td>
                    <td class="code"><pre>'talerbank.urls'</pre></td>
                  </tr>
                
                  <tr>
                    <td>response</td>
                    <td class="code"><pre>None</pre></td>
                  </tr>
                
                  <tr>
                    <td>self</td>
                    <td class="code"><pre>&lt;django.core.handlers.wsgi.WSGIHandler object at 0xb4570e2c&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/grothoff/lib/python3.4/site-packages/django/views/decorators/http.py</code> in <code>inner</code>

          
            <div class="context" id="c3011896300">
              
                <ol start="35" class="pre-context" id="pre3011896300" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                logger.warning('Method Not Allowed (%s): %s', request.method, request.path,</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                    extra={</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                        'status_code': 405,</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                        'request': request</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                    }</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                )</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>                return HttpResponseNotAllowed(request_method_list)</pre></li>
                
                </ol>
              
              <ol start="42" class="context-line">
                <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>            return func(request, *args, **kwargs)</pre> <span>...</span></li></ol>
              
                <ol start="43" class="post-context" id="post3011896300" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>        return inner</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>    return decorator</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>require_GET = require_http_methods(["GET"])</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre>require_GET.__doc__ = "Decorator to require that a view only accepts the GET method."</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896300&#39;, &#39;post3011896300&#39;)"><pre></pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011896300&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011896300" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>request_method_list</td>
                    <td class="code"><pre>['GET']</pre></td>
                  </tr>
                
                  <tr>
                    <td>func</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940d64&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>kwargs</td>
                    <td class="code"><pre>{}</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: GET '/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/grothoff/lib/python3.4/site-packages/django/contrib/auth/decorators.py</code> in <code>_wrapped_view</code>

          
            <div class="context" id="c3011896020">
              
                <ol start="16" class="pre-context" id="pre3011896020" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>    that takes the user object and returns True if the user passes.</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>    """</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>    def decorator(view_func):</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>        @wraps(view_func, assigned=available_attrs(view_func))</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>        def _wrapped_view(request, *args, **kwargs):</pre></li>
                
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            if test_func(request.user):</pre></li>
                
                </ol>
              
              <ol start="23" class="context-line">
                <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>                return view_func(request, *args, **kwargs)</pre> <span>...</span></li></ol>
              
                <ol start="24" class="post-context" id="post3011896020" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            path = request.build_absolute_uri()</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            # If the login url is the same scheme and net location then just</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            # use the path as the "next" url.</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            login_scheme, login_netloc = urlparse(resolved_login_url)[:2]</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011896020&#39;, &#39;post3011896020&#39;)"><pre>            current_scheme, current_netloc = urlparse(path)[:2]</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011896020&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011896020" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>login_url</td>
                    <td class="code"><pre>None</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: GET '/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>redirect_field_name</td>
                    <td class="code"><pre>'next'</pre></td>
                  </tr>
                
                  <tr>
                    <td>view_func</td>
                    <td class="code"><pre>&lt;function pin_tan_question at 0xb3940c44&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>kwargs</td>
                    <td class="code"><pre>{}</pre></td>
                  </tr>
                
                  <tr>
                    <td>test_func</td>
                    <td class="code"><pre>&lt;function login_required.&lt;locals&gt;.&lt;lambda&gt; at 0xb3940cd4&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py</code> in <code>pin_tan_question</code>

          
            <div class="context" id="c3011897580">
              
                <ol start="83" class="pre-context" id="pre3011897580" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>    request.session['amount'] = amount</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>    request.session['exchange'] = request.GET['exchange']</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>    request.session['reserve_pub'] = request.GET['reserve_pub']</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>    return render(request, 'pin_tan.html', {'form': Pin(auto_id=False),</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>                                            'amount': amounts.floatify(amount),</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>                                            'currency': settings.TALER_CURRENCY,</pre></li>
                
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>                                            'exchange':</pre></li>
                
                </ol>
              
              <ol start="90" class="context-line">
                <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>                                            get_pretty_exchange_details(request.GET['exchange'])})</pre> <span>...</span></li></ol>
              
                <ol start="91" class="post-context" id="post3011897580" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>@require_POST</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>@login_required</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>def pin_tan_verify(request):</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011897580&#39;, &#39;post3011897580&#39;)"><pre>    try:</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011897580&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011897580" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>wiredetails</td>
                    <td class="code"><pre>{'test': {'account_number': 2,
          'bank_uri': 'http://bank/',
          'name': 'The exchange',
          'salt': 'PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8',
          'sig': 'WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R',
          'type': 'test'}}</pre></td>
                  </tr>
                
                  <tr>
                    <td>param</td>
                    <td class="code"><pre>'wire_details'</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: GET '/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>amount</td>
                    <td class="code"><pre>{'currency': 'KUDOS', 'fraction': 0, 'value': 20}</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py</code> in <code>get_pretty_exchange_details</code>

          
            <div class="context" id="c3011898460">
              
                <ol start="39" class="pre-context" id="pre3011898460" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>def get_pretty_exchange_details(exchange_baseurl):</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    """</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    if the exchange has an account here, it returns its 'username'</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    (= its base url) and account number, otherwise it just replies</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    its base url</pre></li>
                
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    """</pre></li>
                
                </ol>
              
              <ol start="46" class="context-line">
                <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    normalized_url = normalize_exchange_url(exchange_baseurl)</pre> <span>...</span></li></ol>
              
                <ol start="47" class="post-context" id="post3011898460" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    exchange = get_bank_account_from_username(normalized_url)</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    if exchange:</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>        return normalized_url + " (account #" + str(exchange.account_no) + ")"</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre>    return normalized_url</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011898460&#39;, &#39;post3011898460&#39;)"><pre></pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011898460&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011898460" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>exchange_baseurl</td>
                    <td class="code"><pre>'http://exchange/'</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py</code> in <code>normalize_exchange_url</code>

          
            <div class="context" id="c3011895740">
              
                <ol start="28" class="pre-context" id="pre3011895740" style="display: none;">
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>from . import schemas</pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>from . import amounts</pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>from . import errors</pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>from .user import get_bank_account_from_username</pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre></pre></li>
                
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>def normalize_exchange_url(exchange_baseurl):</pre></li>
                
                </ol>
              
              <ol start="35" class="context-line">
                <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>    exchange_username = urlparse(exchange_baseurl)</pre> <span>...</span></li></ol>
              
                <ol start="36" class="post-context" id="post3011895740" style="display: none;">
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>    normalized_url = exchange_username.scheme + '://' + exchange_username.netloc</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>    return normalized_url</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre></pre></li>
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>def get_pretty_exchange_details(exchange_baseurl):</pre></li>
                  
                  <li onclick="toggle(&#39;pre3011895740&#39;, &#39;post3011895740&#39;)"><pre>    """</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS#" onclick="return varToggle(this, &#39;3011895740&#39;)"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v3011895740" style="display: none;">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>exchange_baseurl</td>
                    <td class="code"><pre>'http://exchange/'</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
    </ul>
  </div>
  
  <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">

  <div id="pastebinTraceback" class="pastebin" style="display: none;">
    <input type="hidden" name="language" value="PythonConsole">
    <input type="hidden" name="title" value="NameError at /pin/question">
    <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:


Request Method: GET
Request URL: http://bank/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS

Django Version: 1.9.5
Python Version: 3.4.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'talerbank.app']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'talerbank.app.middleware.ExpectedExceptionsMiddleware']



Traceback:

File "/home/grothoff/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/home/grothoff/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/grothoff/lib/python3.4/site-packages/django/views/decorators/http.py" in inner
  42.             return func(request, *args, **kwargs)

File "/home/grothoff/lib/python3.4/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py" in pin_tan_question
  90.                                             get_pretty_exchange_details(request.GET['exchange'])})

File "/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py" in get_pretty_exchange_details
  46.     normalized_url = normalize_exchange_url(exchange_baseurl)

File "/home/grothoff/lib/python3.4/site-packages/talerbank/app/captcha.py" in normalize_exchange_url
  35.     exchange_username = urlparse(exchange_baseurl)

Exception Type: NameError at /pin/question
Exception Value: name 'urlparse' is not defined
</textarea>
  <br><br>
  <input type="submit" value="Share this traceback on a public website">
  </div>
</form>
</div>



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


  <h3 id="get-info">GET</h3>
  
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        
          <tr>
            <td>amount_currency</td>
            <td class="code"><pre>'KUDOS'</pre></td>
          </tr>
        
          <tr>
            <td>amount_fraction</td>
            <td class="code"><pre>'0'</pre></td>
          </tr>
        
          <tr>
            <td>reserve_pub</td>
            <td class="code"><pre>'5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG'</pre></td>
          </tr>
        
          <tr>
            <td>exchange</td>
            <td class="code"><pre>'http://exchange/'</pre></td>
          </tr>
        
          <tr>
            <td>wire_details</td>
            <td class="code"><pre>('{"test":{"name":"The '
 'exchange","account_number":2,"bank_uri":"http://bank/","sig":"WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R","salt":"PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8","type":"test"}}')</pre></td>
          </tr>
        
          <tr>
            <td>amount_value</td>
            <td class="code"><pre>'20'</pre></td>
          </tr>
        
      </tbody>
    </table>
  

  <h3 id="post-info">POST</h3>
  
    <p>No POST data</p>
  
  <h3 id="files-info">FILES</h3>
  
    <p>No FILES data</p>
  


  <h3 id="cookie-info">COOKIES</h3>
  
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        
          <tr>
            <td>sessionid</td>
            <td class="code"><pre>'a77obcchhacyc8v0k5fqc77me4orzjxi'</pre></td>
          </tr>
        
          <tr>
            <td>csrftoken</td>
            <td class="code"><pre>'NOeEzQCqn8gdEoUtEZ8FXL6WgqVeTUDa'</pre></td>
          </tr>
        
      </tbody>
    </table>
  

  <h3 id="meta-info">META</h3>
  <table class="req">
    <thead>
      <tr>
        <th>Variable</th>
        <th>Value</th>
      </tr>
    </thead>
    <tbody>
      
        <tr>
          <td>wsgi.url_scheme</td>
          <td class="code"><pre>'http'</pre></td>
        </tr>
      
        <tr>
          <td>UWSGI_ROUTER</td>
          <td class="code"><pre>'http'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_USER_AGENT</td>
          <td class="code"><pre>('Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) '
 'Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36')</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT</td>
          <td class="code"><pre>'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.file_wrapper</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_COOKIE</td>
          <td class="code"><pre>('sessionid=a77obcchhacyc8v0k5fqc77me4orzjxi; '
 'csrftoken=NOeEzQCqn8gdEoUtEZ8FXL6WgqVeTUDa')</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_CONNECTION</td>
          <td class="code"><pre>'close'</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_PORT</td>
          <td class="code"><pre>'8001'</pre></td>
        </tr>
      
        <tr>
          <td>QUERY_STRING</td>
          <td class="code"><pre>'wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.multithread</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>uwsgi.node</td>
          <td class="code"><pre>b'firefly'</pre></td>
        </tr>
      
        <tr>
          <td>PATH_INFO</td>
          <td class="code"><pre>'/pin/question'</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_PROTOCOL</td>
          <td class="code"><pre>'HTTP/1.0'</pre></td>
        </tr>
      
        <tr>
          <td>REMOTE_ADDR</td>
          <td class="code"><pre>'127.0.0.1'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.errors</td>
          <td class="code"><pre>&lt;_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'&gt;</pre></td>
        </tr>
      
        <tr>
          <td>uwsgi.version</td>
          <td class="code"><pre>b'2.0.12'</pre></td>
        </tr>
      
        <tr>
          <td>REQUEST_METHOD</td>
          <td class="code"><pre>'GET'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_HOST</td>
          <td class="code"><pre>'bank'</pre></td>
        </tr>
      
        <tr>
          <td>REMOTE_PORT</td>
          <td class="code"><pre>'29878'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.run_once</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.version</td>
          <td class="code"><pre>(1, 0)</pre></td>
        </tr>
      
        <tr>
          <td>SCRIPT_NAME</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_NAME</td>
          <td class="code"><pre>'firefly'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.multiprocess</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_UPGRADE_INSECURE_REQUESTS</td>
          <td class="code"><pre>'1'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT_ENCODING</td>
          <td class="code"><pre>'gzip, deflate, sdch'</pre></td>
        </tr>
      
        <tr>
          <td>REQUEST_URI</td>
          <td class="code"><pre>'/pin/question?wire_details=%7B%22test%22%3A%7B%22name%22%3A%22The+exchange%22%2C%22account_number%22%3A2%2C%22bank_uri%22%3A%22http%3A%2F%2Fbank%2F%22%2C%22sig%22%3A%22WK5JG0H0Q4ZZ8E13WQG9MQ21AE3FDFKJS4EC32EQZG4R8A2T69FKH33X1HMRQY5806JFWP4EGDZ5QM5W4RNRV64FQ8N6A4F4QK3M20R%22%2C%22salt%22%3A%22PMP5A591ZQ77FCVS47JZ6DH1R0F8V1YKYK2HSX1T6H1MVXHVAVJTC71YY6WS054AAX917T8KQWJRX8HB4XZ5X9012S92ZD5BRQBTXT8%22%2C%22type%22%3A%22test%22%7D%7D&amp;exchange=http%3A%2F%2Fexchange%2F&amp;reserve_pub=5WS3792CB5G05SD5MEMJ7X6HTHQW4PHZP71FME2WPZ06P89J3GDG&amp;amount_value=20&amp;amount_fraction=0&amp;amount_currency=KUDOS'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT_LANGUAGE</td>
          <td class="code"><pre>'en-US,en;q=0.8'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.input</td>
          <td class="code"><pre>&lt;uwsgi._Input object at 0xb3a3d460&gt;</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE</td>
          <td class="code"><pre>'NOeEzQCqn8gdEoUtEZ8FXL6WgqVeTUDa'</pre></td>
        </tr>
      
    </tbody>
  </table>


  <h3 id="settings-info">Settings</h3>
  <h4>Using settings module <code>talerbank.settings</code></h4>
  <table class="req">
    <thead>
      <tr>
        <th>Setting</th>
        <th>Value</th>
      </tr>
    </thead>
    <tbody>
      
        <tr>
          <td>MESSAGE_STORAGE</td>
          <td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
        </tr>
      
        <tr>
          <td>CACHES</td>
          <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td>
        </tr>
      
        <tr>
          <td>DATABASE_ROUTERS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_CONTENT_TYPE_NOSNIFF</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>STATICFILES_DIRS</td>
          <td class="code"><pre>['/home/grothoff/lib/python3.4/site-packages/talerbank/app/static']</pre></td>
        </tr>
      
        <tr>
          <td>DEBUG</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_SECURE</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_DOMAIN</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>STATICFILES_STORAGE</td>
          <td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
        </tr>
      
        <tr>
          <td>DATABASES</td>
          <td class="code"><pre>{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.postgresql_psycopg2',
             'HOST': '',
             'NAME': 'talerbank',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': ''}}</pre></td>
        </tr>
      
        <tr>
          <td>MEDIA_URL</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>USE_THOUSAND_SEPARATOR</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>THOUSAND_SEPARATOR</td>
          <td class="code"><pre>','</pre></td>
        </tr>
      
        <tr>
          <td>INSTALLED_APPS</td>
          <td class="code"><pre>['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'talerbank.app']</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_FILE_STORAGE</td>
          <td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_CONTEXT_PROCESSORS</td>
          <td class="code"><pre>['django.contrib.auth.context_processors.auth',
 'django.template.context_processors.debug',
 'django.template.context_processors.i18n',
 'django.template.context_processors.media',
 'django.template.context_processors.static',
 'django.template.context_processors.tz',
 'django.contrib.messages.context_processors.messages']</pre></td>
        </tr>
      
        <tr>
          <td>MIDDLEWARE_CLASSES</td>
          <td class="code"><pre>['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'talerbank.app.middleware.ExpectedExceptionsMiddleware']</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_TRUSTED_ORIGINS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_CHARSET</td>
          <td class="code"><pre>'utf-8'</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_BROWSER_XSS_FILTER</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>X_FRAME_OPTIONS</td>
          <td class="code"><pre>'SAMEORIGIN'</pre></td>
        </tr>
      
        <tr>
          <td>USE_X_FORWARDED_PORT</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>DECIMAL_SEPARATOR</td>
          <td class="code"><pre>'.'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_USE_SSL</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_PERMISSIONS</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>ROOT_URLCONF</td>
          <td class="code"><pre>'talerbank.urls'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_NAME</td>
          <td class="code"><pre>'sessionid'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_SERIALIZER</td>
          <td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td>
        </tr>
      
        <tr>
          <td>DATETIME_INPUT_FORMATS</td>
          <td class="code"><pre>['%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%Y-%m-%d',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%Y',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M',
 '%m/%d/%y']</pre></td>
        </tr>
      
        <tr>
          <td>FILE_CHARSET</td>
          <td class="code"><pre>'utf-8'</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
          <td class="code"><pre>2621440</pre></td>
        </tr>
      
        <tr>
          <td>STATICFILES_FINDERS</td>
          <td class="code"><pre>['django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder']</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_ALIAS</td>
          <td class="code"><pre>'default'</pre></td>
        </tr>
      
        <tr>
          <td>TIME_INPUT_FORMATS</td>
          <td class="code"><pre>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</pre></td>
        </tr>
      
        <tr>
          <td>MEDIA_ROOT</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>TIME_ZONE</td>
          <td class="code"><pre>'UTC'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
          <td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_BACKEND</td>
          <td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td>
        </tr>
      
        <tr>
          <td>LOGGING</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_PROXY_SSL_HEADER</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>AUTHENTICATION_BACKENDS</td>
          <td class="code"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_DEBUG</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_DIRS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>DISALLOWED_USER_AGENTS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>TEST_RUNNER</td>
          <td class="code"><pre>'django.test.runner.DiscoverRunner'</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_STRING_IF_INVALID</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>SHORT_DATE_FORMAT</td>
          <td class="code"><pre>'m/d/Y'</pre></td>
        </tr>
      
        <tr>
          <td>MANAGERS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>ALLOWED_HOSTS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_REDIRECT_EXEMPT</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>TEST_NON_SERIALIZED_APPS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>FIRST_DAY_OF_WEEK</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>PASSWORD_HASHERS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>MIGRATION_MODULES</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_PORT</td>
          <td class="code"><pre>25</pre></td>
        </tr>
      
        <tr>
          <td>USE_ETAGS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_ENGINE</td>
          <td class="code"><pre>'django.contrib.sessions.backends.db'</pre></td>
        </tr>
      
        <tr>
          <td>LOGOUT_URL</td>
          <td class="code"><pre>'/accounts/logout/'</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>NUMBER_GROUPING</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>BASE_DIR</td>
          <td class="code"><pre>'/home/grothoff/lib/python3.4/site-packages'</pre></td>
        </tr>
      
        <tr>
          <td>LOGGING_CONFIG</td>
          <td class="code"><pre>'logging.config.dictConfig'</pre></td>
        </tr>
      
        <tr>
          <td>DEBUG_PROPAGATE_EXCEPTIONS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>LOGIN_REDIRECT_URL</td>
          <td class="code"><pre>'/accounts/profile/'</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_HANDLERS</td>
          <td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler',
 'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>FIXTURE_DIRS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGES_BIDI</td>
          <td class="code"><pre>['he', 'ar', 'fa', 'ur']</pre></td>
        </tr>
      
        <tr>
          <td>TALER_PREDEFINED_ACCOUNTS</td>
          <td class="code"><pre>['Tor', 'GNUnet', 'Taler', 'FSF']</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SUBJECT_PREFIX</td>
          <td class="code"><pre>'[Django] '</pre></td>
        </tr>
      
        <tr>
          <td>INTERNAL_IPS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_SECONDS</td>
          <td class="code"><pre>600</pre></td>
        </tr>
      
        <tr>
          <td>LOCALE_PATHS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SSL_KEYFILE</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>STATIC_ROOT</td>
          <td class="code"><pre>'/tmp/talerbankstatic/'</pre></td>
        </tr>
      
        <tr>
          <td>USE_TZ</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_USE_TLS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_CACHE_ALIAS</td>
          <td class="code"><pre>'default'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST_USER</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_CONTENT_TYPE</td>
          <td class="code"><pre>'text/html'</pre></td>
        </tr>
      
        <tr>
          <td>AUTH_PASSWORD_VALIDATORS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>STATIC_URL</td>
          <td class="code"><pre>'/static/'</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_TABLESPACE</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_HTTPONLY</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_DOMAIN</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>DATE_INPUT_FORMATS</td>
          <td class="code"><pre>['%Y-%m-%d',
 '%m/%d/%Y',
 '%m/%d/%y',
 '%b %d %Y',
 '%b %d, %Y',
 '%d %b %Y',
 '%d %b, %Y',
 '%B %d %Y',
 '%B %d, %Y',
 '%d %B %Y',
 '%d %B, %Y']</pre></td>
        </tr>
      
        <tr>
          <td>PASSWORD_RESET_TIMEOUT_DAYS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_NAME</td>
          <td class="code"><pre>'csrftoken'</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGES</td>
          <td class="code"><pre>[('af', 'Afrikaans'),
 ('ar', 'Arabic'),
 ('ast', 'Asturian'),
 ('az', 'Azerbaijani'),
 ('bg', 'Bulgarian'),
 ('be', 'Belarusian'),
 ('bn', 'Bengali'),
 ('br', 'Breton'),
 ('bs', 'Bosnian'),
 ('ca', 'Catalan'),
 ('cs', 'Czech'),
 ('cy', 'Welsh'),
 ('da', 'Danish'),
 ('de', 'German'),
 ('el', 'Greek'),
 ('en', 'English'),
 ('en-au', 'Australian English'),
 ('en-gb', 'British English'),
 ('eo', 'Esperanto'),
 ('es', 'Spanish'),
 ('es-ar', 'Argentinian Spanish'),
 ('es-co', 'Colombian Spanish'),
 ('es-mx', 'Mexican Spanish'),
 ('es-ni', 'Nicaraguan Spanish'),
 ('es-ve', 'Venezuelan Spanish'),
 ('et', 'Estonian'),
 ('eu', 'Basque'),
 ('fa', 'Persian'),
 ('fi', 'Finnish'),
 ('fr', 'French'),
 ('fy', 'Frisian'),
 ('ga', 'Irish'),
 ('gd', 'Scottish Gaelic'),
 ('gl', 'Galician'),
 ('he', 'Hebrew'),
 ('hi', 'Hindi'),
 ('hr', 'Croatian'),
 ('hu', 'Hungarian'),
 ('ia', 'Interlingua'),
 ('id', 'Indonesian'),
 ('io', 'Ido'),
 ('is', 'Icelandic'),
 ('it', 'Italian'),
 ('ja', 'Japanese'),
 ('ka', 'Georgian'),
 ('kk', 'Kazakh'),
 ('km', 'Khmer'),
 ('kn', 'Kannada'),
 ('ko', 'Korean'),
 ('lb', 'Luxembourgish'),
 ('lt', 'Lithuanian'),
 ('lv', 'Latvian'),
 ('mk', 'Macedonian'),
 ('ml', 'Malayalam'),
 ('mn', 'Mongolian'),
 ('mr', 'Marathi'),
 ('my', 'Burmese'),
 ('nb', 'Norwegian Bokmal'),
 ('ne', 'Nepali'),
 ('nl', 'Dutch'),
 ('nn', 'Norwegian Nynorsk'),
 ('os', 'Ossetic'),
 ('pa', 'Punjabi'),
 ('pl', 'Polish'),
 ('pt', 'Portuguese'),
 ('pt-br', 'Brazilian Portuguese'),
 ('ro', 'Romanian'),
 ('ru', 'Russian'),
 ('sk', 'Slovak'),
 ('sl', 'Slovenian'),
 ('sq', 'Albanian'),
 ('sr', 'Serbian'),
 ('sr-latn', 'Serbian Latin'),
 ('sv', 'Swedish'),
 ('sw', 'Swahili'),
 ('ta', 'Tamil'),
 ('te', 'Telugu'),
 ('th', 'Thai'),
 ('tr', 'Turkish'),
 ('tt', 'Tatar'),
 ('udm', 'Udmurt'),
 ('uk', 'Ukrainian'),
 ('ur', 'Urdu'),
 ('vi', 'Vietnamese'),
 ('zh-hans', 'Simplified Chinese'),
 ('zh-hant', 'Traditional Chinese')]</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_HSTS_SECONDS</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>DATETIME_FORMAT</td>
          <td class="code"><pre>'N j, Y, P'</pre></td>
        </tr>
      
        <tr>
          <td>DATE_FORMAT</td>
          <td class="code"><pre>'N j, Y'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_FROM_EMAIL</td>
          <td class="code"><pre>'webmaster@localhost'</pre></td>
        </tr>
      
        <tr>
          <td>TIME_FORMAT</td>
          <td class="code"><pre>'P'</pre></td>
        </tr>
      
        <tr>
          <td>SHORT_DATETIME_FORMAT</td>
          <td class="code"><pre>'m/d/Y P'</pre></td>
        </tr>
      
        <tr>
          <td>USE_L10N</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>AUTH_USER_MODEL</td>
          <td class="code"><pre>'auth.User'</pre></td>
        </tr>
      
        <tr>
          <td>PREPEND_WWW</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_AGE</td>
          <td class="code"><pre>31449600</pre></td>
        </tr>
      
        <tr>
          <td>WSGI_APPLICATION</td>
          <td class="code"><pre>'talerbank.wsgi.application'</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_SSL_HOST</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>TALER_EXPECTS_DONATIONS</td>
          <td class="code"><pre>['Tor', 'GNUnet', 'Taler', 'FSF']</pre></td>
        </tr>
      
        <tr>
          <td>SIGNING_BACKEND</td>
          <td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_HTTPONLY</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>ALLOWED_INCLUDE_ROOTS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_LOADERS</td>
          <td class="code"><pre>['django.template.loaders.filesystem.Loader',
 'django.template.loaders.app_directories.Loader']</pre></td>
        </tr>
      
        <tr>
          <td>YEAR_MONTH_FORMAT</td>
          <td class="code"><pre>'F Y'</pre></td>
        </tr>
      
        <tr>
          <td>IGNORABLE_404_URLS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_FILE_PATH</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_CODE</td>
          <td class="code"><pre>'en-us'</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATES</td>
          <td class="code"><pre>[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [],
  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
                                     'django.template.context_processors.request',
                                     'django.contrib.auth.context_processors.auth',
                                     'django.contrib.messages.context_processors.messages']}}]</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_TEMP_DIR</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_SECURE</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECRET_KEY</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>FORCE_SCRIPT_NAME</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>SILENCED_SYSTEM_CHECKS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>MONTH_DAY_FORMAT</td>
          <td class="code"><pre>'F j'</pre></td>
        </tr>
      
        <tr>
          <td>APPEND_SLASH</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>SETTINGS_MODULE</td>
          <td class="code"><pre>'talerbank.settings'</pre></td>
        </tr>
      
        <tr>
          <td>USE_X_FORWARDED_HOST</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST_PASSWORD</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_HEADER_NAME</td>
          <td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_COOKIE_AGE</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_COOKIE_DOMAIN</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>LOGIN_URL</td>
          <td class="code"><pre>'/accounts/login/'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_SSL_REDIRECT</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_EMAIL</td>
          <td class="code"><pre>'root@localhost'</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_COOKIE_NAME</td>
          <td class="code"><pre>'django_language'</pre></td>
        </tr>
      
        <tr>
          <td>ABSOLUTE_URL_OVERRIDES</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_INDEX_TABLESPACE</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_AGE</td>
          <td class="code"><pre>1209600</pre></td>
        </tr>
      
        <tr>
          <td>USE_I18N</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>TALER_CURRENCY</td>
          <td class="code"><pre>'KUDOS'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_FAILURE_VIEW</td>
          <td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST</td>
          <td class="code"><pre>'localhost'</pre></td>
        </tr>
      
        <tr>
          <td>FORMAT_MODULE_PATH</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SSL_CERTFILE</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>ADMINS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_SAVE_EVERY_REQUEST</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_TIMEOUT</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
    </tbody>
  </table>

</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 page generated by the handler for this status code.
    </p>
  </div>



</body></html>
NameError at _pin_question.html (83,568 bytes)   

Activities

Christian Grothoff

2016-04-16 20:04

manager   ~0010495

This is with the 'unstable' wallet.

Issue History

Date Modified Username Field Change
2016-04-16 20:03 Christian Grothoff New Issue
2016-04-16 20:03 Christian Grothoff Status new => assigned
2016-04-16 20:03 Christian Grothoff Assigned To => Florian Dold
2016-04-16 20:03 Christian Grothoff File Added: NameError at _pin_question.html
2016-04-16 20:04 Christian Grothoff Note Added: 0010495
2016-04-16 20:53 Florian Dold Status assigned => resolved
2016-04-16 20:53 Florian Dold Resolution open => fixed
2016-04-16 22:46 Christian Grothoff Status resolved => closed
2016-04-16 22:46 Christian Grothoff Fixed in Version => 0.0
2022-08-23 20:26 Christian Grothoff Category bank (demonstrator) => py bank (demonstrator, obsolete)
2023-12-03 01:23 Christian Grothoff Category py bank (demonstrator, obsolete) => obsolete componet
2023-12-11 20:08 Florian Dold Category obsolete componet => obsolete component