View Issue Details

IDProjectCategoryView StatusLast Update
0005313Talerobsolete componentpublic2019-12-20 19:12
ReporterTorsten Grothoff Assigned ToMarcello Stanisci  
PriorityimmediateSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version0.6Fixed in Version0.6 
Summary0005313: Bad error handling // Info exposing error when giving account transfer an Intiger overflow
DescriptionSee attatched file.
Change format of
Exposes:
1.User Running the server on the server's machine
2.Exact File location of the server's Weak spot(where the error lies)
Steps To ReproduceGive the value of Kudos when transfering to another account an intiger overflow
TagsNo tags attached.
Attached Files
Intiger overflow(Input field) Gives an error that should look different.html (77,612 bytes)   
<!DOCTYPE html>
<html lang="en"><head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>AttributeError
          at /profile</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background-color:#fff; color:#000; }
    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 hideAll(elems) {
      for (var e = 0; e < elems.length; e++) {
        elems[e].style.display = 'none';
      }
    }
    window.onload = function() {
      hideAll(document.querySelectorAll('table.vars'));
      hideAll(document.querySelectorAll('ol.pre-context'));
      hideAll(document.querySelectorAll('ol.post-context'));
      hideAll(document.querySelectorAll('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>
  
</head>
<body>
<div id="summary">
  <h1>AttributeError
       at /profile</h1>
  <pre class="exception_value">'BadFormatAmount' object has no attribute 'hint'</pre>
  <table class="meta">

    <tbody><tr>
      <th>Request Method:</th>
      <td>POST</td>
    </tr>
    <tr>
      <th>Request URL:</th>
      <td>https://bank.demo.taler.net/profile</td>
    </tr>

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

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


    <tr>
      <th>Exception Value:</th>
      <td><pre>'BadFormatAmount' object has no attribute 'hint'</pre></td>
    </tr>


    <tr>
      <th>Exception Location:</th>
      <td>/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/middleware.py in process_exception, line 62</td>
    </tr>

    <tr>
      <th>Python Executable:</th>
      <td>/home/demo-blue/local/bin/uwsgi</td>
    </tr>
    <tr>
      <th>Python Version:</th>
      <td>3.5.3</td>
    </tr>
    <tr>
      <th>Python Path:</th>
      <td><pre>['.',
 '',
 '/home/demo-blue/local/lib/python3.5/site-packages',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']</pre></td>
    </tr>
    <tr>
      <th>Server time:</th>
      <td>Tue, 27 Mar 2018 16:02:34 +0000</td>
    </tr>
  </tbody></table>
</div>




<div id="traceback">
  <h2>Traceback <span class="commands"><a href="#" 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/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>

          
            <div class="context" id="c139866745237448">
              
                <ol start="119" class="pre-context" id="pre139866745237448">
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            if response:</pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>                break</pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre></pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>        if response is None:</pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            wrapped_callback = self.make_view_atomic(callback)</pre></li>
                
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            try:</pre></li>
                
                </ol>
              
              <ol start="126" class="context-line">
                <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>                response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li>
              </ol>
              
                <ol start="127" class="post-context" id="post139866745237448">
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            except Exception as e:</pre></li>
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>                response = self.process_exception_by_middleware(e, request)</pre></li>
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre></pre></li>
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>        # Complain if the view returned None (a common error).</pre></li>
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>        if response is None:</pre></li>
                  
                  <li onclick="toggle('pre139866745237448', 'post139866745237448')"><pre>            if isinstance(callback, types.FunctionType):    # FBV</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745237448')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745237448">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>callback</td>
                    <td class="code"><pre>&lt;function profile_page at 0x7f3547c8fa60&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_kwargs</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 0x7f3547c8d6d8&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver</td>
                    <td class="code"><pre>&lt;URLResolver 'talerbank.app.urls' (None:None) '^/'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver_match</td>
                    <td class="code"><pre>ResolverMatch(func=talerbank.app.views.profile_page, args=(), kwargs={}, url_name=profile, app_names=[], namespaces=[])</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 0x7f3547009f28&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>wrapped_callback</td>
                    <td class="code"><pre>&lt;function profile_page at 0x7f3547c8fa60&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/django/contrib/auth/decorators.py</code> in <code>_wrapped_view</code>

          
            <div class="context" id="c139866745237384">
              
                <ol start="14" class="pre-context" id="pre139866745237384">
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>    that takes the user object and returns True if the user passes.</pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>    """</pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre></pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>    def decorator(view_func):</pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>        @wraps(view_func)</pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>        def _wrapped_view(request, *args, **kwargs):</pre></li>
                
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            if test_func(request.user):</pre></li>
                
                </ol>
              
              <ol start="21" class="context-line">
                <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>                return view_func(request, *args, **kwargs)</pre> <span>...</span></li>
              </ol>
              
                <ol start="22" class="post-context" id="post139866745237384">
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            path = request.build_absolute_uri()</pre></li>
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)</pre></li>
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            # If the login url is the same scheme and net location then just</pre></li>
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            # use the path as the "next" url.</pre></li>
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            login_scheme, login_netloc = urlparse(resolved_login_url)[:2]</pre></li>
                  
                  <li onclick="toggle('pre139866745237384', 'post139866745237384')"><pre>            current_scheme, current_netloc = urlparse(path)[:2]</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745237384')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745237384">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>kwargs</td>
                    <td class="code"><pre>{}</pre></td>
                  </tr>
                
                  <tr>
                    <td>login_url</td>
                    <td class="code"><pre>None</pre></td>
                  </tr>
                
                  <tr>
                    <td>redirect_field_name</td>
                    <td class="code"><pre>'next'</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>test_func</td>
                    <td class="code"><pre>&lt;function login_required.&lt;locals&gt;.&lt;lambda&gt; at 0x7f3547c8f950&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>view_func</td>
                    <td class="code"><pre>&lt;function profile_page at 0x7f3547c8f6a8&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/views.py</code> in <code>profile_page</code>

          
            <div class="context" id="c139866745237128">
              
                <ol start="159" class="pre-context" id="pre139866745237128">
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>def profile_page(request):</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>    if request.method == "POST":</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>        wtf = WTForm(request.POST)</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>        if wtf.is_valid():</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>            amount_parts = (settings.TALER_CURRENCY,</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>                            wtf.cleaned_data.get("amount") + 0.0)</pre></li>
                
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>            wire_transfer(</pre></li>
                
                </ol>
              
              <ol start="166" class="context-line">
                <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>                Amount.parse("%s:%s" % amount_parts),</pre> <span>...</span></li>
              </ol>
              
                <ol start="167" class="post-context" id="post139866745237128">
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>                BankAccount.objects.get(user=request.user),</pre></li>
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>                BankAccount.objects.get(account_no=wtf.cleaned_data.get("receiver")),</pre></li>
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>                wtf.cleaned_data.get("subject"))</pre></li>
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>            request.session["profile_hint"] = False, True, "Wire transfer successful!"</pre></li>
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>            return redirect("profile")</pre></li>
                  
                  <li onclick="toggle('pre139866745237128', 'post139866745237128')"><pre>    wtf = WTForm()</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745237128')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745237128">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>amount_parts</td>
                    <td class="code"><pre>('KUDOS', 1e+38)</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>wtf</td>
                    <td class="code"><pre>&lt;WTForm bound=True, valid=True, fields=(amount;receiver;subject)&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/amount.py</code> in <code>parse</code>

          
            <div class="context" id="c139866744254088">
              
                <ol start="64" class="pre-context" id="pre139866744254088">
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>    # instantiating an amount object.</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>    @classmethod</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>    def parse(cls, amount_str: str):</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        exp = r'^\s*([-_*A-Za-z0-9]+):([0-9]+)\.?([0-9]+)?\s*$'</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        import re</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        parsed = re.search(exp, amount_str)</pre></li>
                
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        if not parsed:</pre></li>
                
                </ol>
              
              <ol start="71" class="context-line">
                <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>            raise BadFormatAmount(amount_str)</pre> <span>...</span></li>
              </ol>
              
                <ol start="72" class="post-context" id="post139866744254088">
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        value = int(parsed.group(2))</pre></li>
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        fraction = 0</pre></li>
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        for i, digit in enumerate(parsed.group(3) or "0"):</pre></li>
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>            fraction += int(int(digit) * (Amount._fraction() / 10 ** (i+1)))</pre></li>
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre>        return cls(parsed.group(1), value, fraction)</pre></li>
                  
                  <li onclick="toggle('pre139866744254088', 'post139866744254088')"><pre></pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866744254088')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866744254088">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>amount_str</td>
                    <td class="code"><pre>'KUDOS:1e+38'</pre></td>
                  </tr>
                
                  <tr>
                    <td>cls</td>
                    <td class="code"><pre>&lt;class 'talerbank.app.amount.Amount'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>exp</td>
                    <td class="code"><pre>'^\\s*([-_*A-Za-z0-9]+):([0-9]+)\\.?([0-9]+)?\\s*$'</pre></td>
                  </tr>
                
                  <tr>
                    <td>parsed</td>
                    <td class="code"><pre>None</pre></td>
                  </tr>
                
                  <tr>
                    <td>re</td>
                    <td class="code"><pre>&lt;module 're' from '/usr/lib/python3.5/re.py'&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
          <li><h3>
          
            During handling of the above exception (Bad format amount: KUDOS:1e+38), another exception occurred:
          
        </h3></li>
        
        <li class="frame django">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/exception.py</code> in <code>inner</code>

          
            <div class="context" id="c139866745236744">
              
                <ol start="28" class="pre-context" id="pre139866745236744">
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    This decorator is automatically applied to all middleware to ensure that</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    no middleware leaks an exception and that the next middleware in the stack</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    can rely on getting a response instead of an exception.</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    """</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    @wraps(get_response)</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    def inner(request):</pre></li>
                
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>        try:</pre></li>
                
                </ol>
              
              <ol start="35" class="context-line">
                <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>            response = get_response(request)</pre> <span>...</span></li>
              </ol>
              
                <ol start="36" class="post-context" id="post139866745236744">
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>        except Exception as exc:</pre></li>
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>            response = response_for_exception(request, exc)</pre></li>
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>        return response</pre></li>
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre>    return inner</pre></li>
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre></pre></li>
                  
                  <li onclick="toggle('pre139866745236744', 'post139866745236744')"><pre></pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745236744')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745236744">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>exc</td>
                    <td class="code"><pre>AttributeError("'BadFormatAmount' object has no attribute 'hint'",)</pre></td>
                  </tr>
                
                  <tr>
                    <td>get_response</td>
                    <td class="code"><pre>&lt;bound method BaseHandler._get_response of &lt;django.core.handlers.wsgi.WSGIHandler object at 0x7f3547009f28&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>

          
            <div class="context" id="c139866745236872">
              
                <ol start="121" class="pre-context" id="pre139866745236872">
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>                break</pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre></pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>        if response is None:</pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>            wrapped_callback = self.make_view_atomic(callback)</pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>            try:</pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>                response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
                
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>            except Exception as e:</pre></li>
                
                </ol>
              
              <ol start="128" class="context-line">
                <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>                response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li>
              </ol>
              
                <ol start="129" class="post-context" id="post139866745236872">
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre></pre></li>
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>        # Complain if the view returned None (a common error).</pre></li>
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>        if response is None:</pre></li>
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>            if isinstance(callback, types.FunctionType):    # FBV</pre></li>
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>                view_name = callback.__name__</pre></li>
                  
                  <li onclick="toggle('pre139866745236872', 'post139866745236872')"><pre>            else:                                           # CBV</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745236872')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745236872">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>callback</td>
                    <td class="code"><pre>&lt;function profile_page at 0x7f3547c8fa60&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_args</td>
                    <td class="code"><pre>()</pre></td>
                  </tr>
                
                  <tr>
                    <td>callback_kwargs</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 0x7f3547c8d6d8&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver</td>
                    <td class="code"><pre>&lt;URLResolver 'talerbank.app.urls' (None:None) '^/'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>resolver_match</td>
                    <td class="code"><pre>ResolverMatch(func=talerbank.app.views.profile_page, args=(), kwargs={}, url_name=profile, app_names=[], namespaces=[])</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 0x7f3547009f28&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>wrapped_callback</td>
                    <td class="code"><pre>&lt;function profile_page at 0x7f3547c8fa60&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame django">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py</code> in <code>process_exception_by_middleware</code>

          
            <div class="context" id="c139866745234184">
              
                <ol start="161" class="pre-context" id="pre139866745234184">
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre></pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>    def process_exception_by_middleware(self, exception, request):</pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        """</pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        Pass the exception to the exception middleware. If no middleware</pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        return a response for this exception, raise it.</pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        """</pre></li>
                
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        for middleware_method in self._exception_middleware:</pre></li>
                
                </ol>
              
              <ol start="168" class="context-line">
                <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>            response = middleware_method(request, exception)</pre> <span>...</span></li>
              </ol>
              
                <ol start="169" class="post-context" id="post139866745234184">
                  
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>            if response:</pre></li>
                  
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>                return response</pre></li>
                  
                  <li onclick="toggle('pre139866745234184', 'post139866745234184')"><pre>        raise</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745234184')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745234184">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>exception</td>
                    <td class="code"><pre>BadFormatAmount('Bad format amount: KUDOS:1e+38',)</pre></td>
                  </tr>
                
                  <tr>
                    <td>middleware_method</td>
                    <td class="code"><pre>&lt;bound method ExceptionMiddleware.process_exception of &lt;talerbank.app.middleware.ExceptionMiddleware object at 0x7f3546b5ac88&gt;&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>self</td>
                    <td class="code"><pre>&lt;django.core.handlers.wsgi.WSGIHandler object at 0x7f3547009f28&gt;</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
        
        <li class="frame user">
          <code>/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/middleware.py</code> in <code>process_exception</code>

          
            <div class="context" id="c139866745234056">
              
                <ol start="55" class="pre-context" id="pre139866745234056">
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>        taler_ec += self.apis.get(request.path, 1000)</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>        render_to = self.render.get(request.path)</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>        if not render_to:</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>            return JsonResponse({"ec": taler_ec,</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>                                 "error": exception.hint},</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>                                status=exception.http_status_code)</pre></li>
                
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>        request.session["profile_hint"] = \</pre></li>
                
                </ol>
              
              <ol start="62" class="context-line">
                <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>            True, False, exception.hint</pre> <span>...</span></li>
              </ol>
              
                <ol start="63" class="post-context" id="post139866745234056">
                  
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre>        return redirect(render_to)</pre></li>
                  
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre></pre></li>
                  
                  <li onclick="toggle('pre139866745234056', 'post139866745234056')"><pre># [1] https://git.taler.net/exchange.git/tree/src/include/taler_error_codes.h#n1502</pre></li>
                  
              </ol>
              
            </div>
          

          
            <div class="commands">
                
                    <a href="#" onclick="return varToggle(this, '139866745234056')"><span>▶</span> Local vars</a>
                
            </div>
            <table class="vars" id="v139866745234056">
              <thead>
                <tr>
                  <th>Variable</th>
                  <th>Value</th>
                </tr>
              </thead>
              <tbody>
                
                  <tr>
                    <td>exception</td>
                    <td class="code"><pre>BadFormatAmount('Bad format amount: KUDOS:1e+38',)</pre></td>
                  </tr>
                
                  <tr>
                    <td>render_to</td>
                    <td class="code"><pre>'profile'</pre></td>
                  </tr>
                
                  <tr>
                    <td>request</td>
                    <td class="code"><pre>&lt;WSGIRequest: POST '/profile'&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>self</td>
                    <td class="code"><pre>&lt;talerbank.app.middleware.ExceptionMiddleware object at 0x7f3546b5ac88&gt;</pre></td>
                  </tr>
                
                  <tr>
                    <td>taler_ec</td>
                    <td class="code"><pre>1011</pre></td>
                  </tr>
                
              </tbody>
            </table>
          
        </li>
      
    </ul>
  </div>
  <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">

  <div id="pastebinTraceback" class="pastebin">
    <input name="language" value="PythonConsole" type="hidden">
    <input name="title" value="AttributeError at /profile" type="hidden">
    <input name="source" value="Django Dpaste Agent" type="hidden">
    <input name="poster" value="Django" type="hidden">
    <textarea name="content" id="traceback_area" cols="140" rows="25">Environment:


Request Method: POST
Request URL: https://bank.demo.taler.net/profile

Django Version: 2.0.2
Python Version: 3.5.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.sessions.middleware.SessionMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'talerbank.app.middleware.ExceptionMiddleware']



Traceback:

File "/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/demo-blue/local/lib/python3.5/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/views.py" in profile_page
  166.                 Amount.parse("%s:%s" % amount_parts),

File "/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/amount.py" in parse
  71.             raise BadFormatAmount(amount_str)

During handling of the above exception (Bad format amount: KUDOS:1e+38), another exception occurred:

File "/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/home/demo-blue/local/lib/python3.5/site-packages/django/core/handlers/base.py" in process_exception_by_middleware
  168.             response = middleware_method(request, exception)

File "/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/middleware.py" in process_exception
  62.             True, False, exception.hint

Exception Type: AttributeError at /profile
Exception Value: 'BadFormatAmount' object has no attribute 'hint'
</textarea>
  <br><br>
  <input value="Share this traceback on a public website" type="submit">
  </div>
</form>
</div>



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


  
    <h3 id="user-info">USER</h3>
    <p>Duuh</p>
  

  <h3 id="get-info">GET</h3>
  
    <p>No GET data</p>
  

  <h3 id="post-info">POST</h3>
  
    <table class="req">
      <thead>
        <tr>
          <th>Variable</th>
          <th>Value</th>
        </tr>
      </thead>
      <tbody>
        
          <tr>
            <td>amount</td>
            <td class="code"><pre>'100000000000000000000000000000000000000'</pre></td>
          </tr>
        
          <tr>
            <td>csrfmiddlewaretoken</td>
            <td class="code"><pre>'NMIBlRAjznV0xmvpItw4aX6mJOJSNMto50K7gkZATlNBfILWsjPnvuKI96HanFXx'</pre></td>
          </tr>
        
          <tr>
            <td>receiver</td>
            <td class="code"><pre>'74'</pre></td>
          </tr>
        
          <tr>
            <td>subject</td>
            <td class="code"><pre>'IO'</pre></td>
          </tr>
        
      </tbody>
    </table>
  
  <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>'lyk1kmm85gy99stc88j3j77smla6jy1s'</pre></td>
          </tr>
        
          <tr>
            <td>csrftoken</td>
            <td class="code"><pre>'0xqCaOBzMRh0aMw2bvEffANGa6q1o0chiLs85h0Q6P9BS8MzVlXyA7r2AoojYTGq'</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>CONTENT_LENGTH</td>
          <td class="code"><pre>'154'</pre></td>
        </tr>
      
        <tr>
          <td>CONTENT_TYPE</td>
          <td class="code"><pre>'application/x-www-form-urlencoded'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE</td>
          <td class="code"><pre>'0xqCaOBzMRh0aMw2bvEffANGa6q1o0chiLs85h0Q6P9BS8MzVlXyA7r2AoojYTGq'</pre></td>
        </tr>
      
        <tr>
          <td>DOCUMENT_ROOT</td>
          <td class="code"><pre>'/usr/share/nginx/html'</pre></td>
        </tr>
      
        <tr>
          <td>HTTPS</td>
          <td class="code"><pre>'on'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT</td>
          <td class="code"><pre>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT_ENCODING</td>
          <td class="code"><pre>'gzip, deflate, br'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_ACCEPT_LANGUAGE</td>
          <td class="code"><pre>'en-US,en;q=0.5'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_CONNECTION</td>
          <td class="code"><pre>'keep-alive'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_CONTENT_LENGTH</td>
          <td class="code"><pre>'154'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_CONTENT_TYPE</td>
          <td class="code"><pre>'application/x-www-form-urlencoded'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_COOKIE</td>
          <td class="code"><pre>('csrftoken=0xqCaOBzMRh0aMw2bvEffANGa6q1o0chiLs85h0Q6P9BS8MzVlXyA7r2AoojYTGq; '
 'sessionid=lyk1kmm85gy99stc88j3j77smla6jy1s')</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_DNT</td>
          <td class="code"><pre>'1'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_HOST</td>
          <td class="code"><pre>'bank.demo.taler.net'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_REFERER</td>
          <td class="code"><pre>'https://bank.demo.taler.net/profile'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_UPGRADE_INSECURE_REQUESTS</td>
          <td class="code"><pre>'1'</pre></td>
        </tr>
      
        <tr>
          <td>HTTP_USER_AGENT</td>
          <td class="code"><pre>'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0'</pre></td>
        </tr>
      
        <tr>
          <td>PATH_INFO</td>
          <td class="code"><pre>'/profile'</pre></td>
        </tr>
      
        <tr>
          <td>QUERY_STRING</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>REMOTE_ADDR</td>
          <td class="code"><pre>'2001:1620:e06:0:e036:7691:4f02:92d9'</pre></td>
        </tr>
      
        <tr>
          <td>REMOTE_PORT</td>
          <td class="code"><pre>'49394'</pre></td>
        </tr>
      
        <tr>
          <td>REQUEST_METHOD</td>
          <td class="code"><pre>'POST'</pre></td>
        </tr>
      
        <tr>
          <td>REQUEST_SCHEME</td>
          <td class="code"><pre>'https'</pre></td>
        </tr>
      
        <tr>
          <td>REQUEST_URI</td>
          <td class="code"><pre>'/profile'</pre></td>
        </tr>
      
        <tr>
          <td>SCRIPT_NAME</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_NAME</td>
          <td class="code"><pre>'bank.demo.taler.net'</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_PORT</td>
          <td class="code"><pre>'443'</pre></td>
        </tr>
      
        <tr>
          <td>SERVER_PROTOCOL</td>
          <td class="code"><pre>'HTTP/1.1'</pre></td>
        </tr>
      
        <tr>
          <td>uwsgi.node</td>
          <td class="code"><pre>b'tripwire'</pre></td>
        </tr>
      
        <tr>
          <td>uwsgi.version</td>
          <td class="code"><pre>b'2.0.16'</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>wsgi.file_wrapper</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.input</td>
          <td class="code"><pre>&lt;uwsgi._Input object at 0x7f3546bd3df8&gt;</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.multiprocess</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.multithread</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.run_once</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.url_scheme</td>
          <td class="code"><pre>'https'</pre></td>
        </tr>
      
        <tr>
          <td>wsgi.version</td>
          <td class="code"><pre>(1, 0)</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>ABSOLUTE_URL_OVERRIDES</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>ADMINS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>ALLOWED_HOSTS</td>
          <td class="code"><pre>['*']</pre></td>
        </tr>
      
        <tr>
          <td>APPEND_SLASH</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>AUTHENTICATION_BACKENDS</td>
          <td class="code"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td>
        </tr>
      
        <tr>
          <td>AUTH_PASSWORD_VALIDATORS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>AUTH_USER_MODEL</td>
          <td class="code"><pre>'auth.User'</pre></td>
        </tr>
      
        <tr>
          <td>BASE_DIR</td>
          <td class="code"><pre>'/home/demo-blue/local/lib/python3.5/site-packages'</pre></td>
        </tr>
      
        <tr>
          <td>CACHES</td>
          <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_ALIAS</td>
          <td class="code"><pre>'default'</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>CACHE_MIDDLEWARE_SECONDS</td>
          <td class="code"><pre>600</pre></td>
        </tr>
      
        <tr>
          <td>CHECK_DBSTRING_FORMAT</td>
          <td class="code"><pre>&lt;_sre.SRE_Match object; span=(0, 21), match='postgres:///talerdemo'&gt;</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_AGE</td>
          <td class="code"><pre>31449600</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_DOMAIN</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_HTTPONLY</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_NAME</td>
          <td class="code"><pre>'csrftoken'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_COOKIE_SECURE</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_FAILURE_VIEW</td>
          <td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_HEADER_NAME</td>
          <td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_TRUSTED_ORIGINS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>CSRF_USE_SESSIONS</td>
          <td class="code"><pre>False</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': 'talerdemo',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': ''}}</pre></td>
        </tr>
      
        <tr>
          <td>DATABASE_ROUTERS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td>
          <td class="code"><pre>2621440</pre></td>
        </tr>
      
        <tr>
          <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td>
          <td class="code"><pre>1000</pre></td>
        </tr>
      
        <tr>
          <td>DATETIME_FORMAT</td>
          <td class="code"><pre>'N j, Y, P'</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>DATE_FORMAT</td>
          <td class="code"><pre>'N j, Y'</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>DBCONFIG</td>
          <td class="code"><pre>{'ATOMIC_REQUESTS': False,
 'AUTOCOMMIT': True,
 'CONN_MAX_AGE': 0,
 'ENGINE': 'django.db.backends.postgresql_psycopg2',
 'HOST': '',
 'NAME': 'talerdemo',
 'OPTIONS': {},
 'PASSWORD': '********************',
 'PORT': '',
 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None},
 'TIME_ZONE': None,
 'USER': ''}</pre></td>
        </tr>
      
        <tr>
          <td>DBNAME</td>
          <td class="code"><pre>'postgres:///talerdemo'</pre></td>
        </tr>
      
        <tr>
          <td>DB_URL</td>
          <td class="code"><pre>ParseResult(scheme='postgres', netloc='', path='/talerdemo', params='', query='', fragment='')</pre></td>
        </tr>
      
        <tr>
          <td>DEBUG</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>DEBUG_PROPAGATE_EXCEPTIONS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>DECIMAL_SEPARATOR</td>
          <td class="code"><pre>'.'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_CHARSET</td>
          <td class="code"><pre>'utf-8'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_CONTENT_TYPE</td>
          <td class="code"><pre>'text/html'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
          <td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_FILE_STORAGE</td>
          <td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_FROM_EMAIL</td>
          <td class="code"><pre>'webmaster@localhost'</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_INDEX_TABLESPACE</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>DEFAULT_TABLESPACE</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>DISALLOWED_USER_AGENTS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_BACKEND</td>
          <td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST</td>
          <td class="code"><pre>'localhost'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST_PASSWORD</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_HOST_USER</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_PORT</td>
          <td class="code"><pre>25</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SSL_CERTFILE</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SSL_KEYFILE</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_SUBJECT_PREFIX</td>
          <td class="code"><pre>'[Django] '</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_TIMEOUT</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_USE_LOCALTIME</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_USE_SSL</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>EMAIL_USE_TLS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>FILE_CHARSET</td>
          <td class="code"><pre>'utf-8'</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
          <td class="code"><pre>None</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>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
          <td class="code"><pre>2621440</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_PERMISSIONS</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>FILE_UPLOAD_TEMP_DIR</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>FIRST_DAY_OF_WEEK</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>FIXTURE_DIRS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>FORCE_SCRIPT_NAME</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>FORMAT_MODULE_PATH</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>FORM_RENDERER</td>
          <td class="code"><pre>'django.forms.renderers.DjangoTemplates'</pre></td>
        </tr>
      
        <tr>
          <td>HOST</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>IGNORABLE_404_URLS</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>INTERNAL_IPS</td>
          <td class="code"><pre>[]</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'),
 ('dsb', 'Lower Sorbian'),
 ('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'),
 ('hsb', 'Upper Sorbian'),
 ('hu', 'Hungarian'),
 ('ia', 'Interlingua'),
 ('id', 'Indonesian'),
 ('io', 'Ido'),
 ('is', 'Icelandic'),
 ('it', 'Italian'),
 ('ja', 'Japanese'),
 ('ka', 'Georgian'),
 ('kab', 'Kabyle'),
 ('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 Bokmål'),
 ('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>LANGUAGES_BIDI</td>
          <td class="code"><pre>['he', 'ar', 'fa', 'ur']</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_CODE</td>
          <td class="code"><pre>'en-us'</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>LANGUAGE_COOKIE_NAME</td>
          <td class="code"><pre>'django_language'</pre></td>
        </tr>
      
        <tr>
          <td>LANGUAGE_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>LOCALE_PATHS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>LOGGER</td>
          <td class="code"><pre>&lt;logging.Logger object at 0x7f3546bcb748&gt;</pre></td>
        </tr>
      
        <tr>
          <td>LOGGING</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>LOGGING_CONFIG</td>
          <td class="code"><pre>'logging.config.dictConfig'</pre></td>
        </tr>
      
        <tr>
          <td>LOGIN_REDIRECT_URL</td>
          <td class="code"><pre>'index'</pre></td>
        </tr>
      
        <tr>
          <td>LOGIN_URL</td>
          <td class="code"><pre>'login'</pre></td>
        </tr>
      
        <tr>
          <td>LOGOUT_REDIRECT_URL</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>MANAGERS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>MEDIA_ROOT</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>MEDIA_URL</td>
          <td class="code"><pre>''</pre></td>
        </tr>
      
        <tr>
          <td>MESSAGE_STORAGE</td>
          <td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
        </tr>
      
        <tr>
          <td>MIDDLEWARE</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.sessions.middleware.SessionMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'talerbank.app.middleware.ExceptionMiddleware']</pre></td>
        </tr>
      
        <tr>
          <td>MIGRATION_MODULES</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>NUMBER_GROUPING</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>P</td>
          <td class="code"><pre>{}</pre></td>
        </tr>
      
        <tr>
          <td>PASSWORD_HASHERS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>PASSWORD_RESET_TIMEOUT_DAYS</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>PREPEND_WWW</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>ROOT_URLCONF</td>
          <td class="code"><pre>'talerbank.app.urls'</pre></td>
        </tr>
      
        <tr>
          <td>SECRET_KEY</td>
          <td class="code"><pre>'********************'</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_BROWSER_XSS_FILTER</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_CONTENT_TYPE_NOSNIFF</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_HSTS_PRELOAD</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_HSTS_SECONDS</td>
          <td class="code"><pre>0</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_PROXY_SSL_HEADER</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_REDIRECT_EXEMPT</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>SECURE_SSL_HOST</td>
          <td class="code"><pre>None</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>SESSION_CACHE_ALIAS</td>
          <td class="code"><pre>'default'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_AGE</td>
          <td class="code"><pre>1209600</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_DOMAIN</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_HTTPONLY</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_NAME</td>
          <td class="code"><pre>'sessionid'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_PATH</td>
          <td class="code"><pre>'/'</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_COOKIE_SECURE</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>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_FILE_PATH</td>
          <td class="code"><pre>None</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_SAVE_EVERY_REQUEST</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>SESSION_SERIALIZER</td>
          <td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td>
        </tr>
      
        <tr>
          <td>SETTINGS_MODULE</td>
          <td class="code"><pre>'talerbank.settings'</pre></td>
        </tr>
      
        <tr>
          <td>SHORT_DATETIME_FORMAT</td>
          <td class="code"><pre>'m/d/Y P'</pre></td>
        </tr>
      
        <tr>
          <td>SHORT_DATE_FORMAT</td>
          <td class="code"><pre>'m/d/Y'</pre></td>
        </tr>
      
        <tr>
          <td>SIGNING_BACKEND</td>
          <td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td>
        </tr>
      
        <tr>
          <td>SILENCED_SYSTEM_CHECKS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>STATICFILES_DIRS</td>
          <td class="code"><pre>['/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/static',
 '/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/static/web-common']</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>STATICFILES_STORAGE</td>
          <td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
        </tr>
      
        <tr>
          <td>STATIC_ROOT</td>
          <td class="code"><pre>'/tmp/talerbankstatic/'</pre></td>
        </tr>
      
        <tr>
          <td>STATIC_URL</td>
          <td class="code"><pre>'/static/'</pre></td>
        </tr>
      
        <tr>
          <td>TALER_CURRENCY</td>
          <td class="code"><pre>'KUDOS'</pre></td>
        </tr>
      
        <tr>
          <td>TALER_DIGITS</td>
          <td class="code"><pre>2</pre></td>
        </tr>
      
        <tr>
          <td>TALER_EXPECTS_DONATIONS</td>
          <td class="code"><pre>['Tor', 'GNUnet', 'Taler', 'FSF']</pre></td>
        </tr>
      
        <tr>
          <td>TALER_MAX_DEBT</td>
          <td class="code"><pre>'KUDOS:0.0'</pre></td>
        </tr>
      
        <tr>
          <td>TALER_MAX_DEBT_BANK</td>
          <td class="code"><pre>'KUDOS:0.0'</pre></td>
        </tr>
      
        <tr>
          <td>TALER_PREDEFINED_ACCOUNTS</td>
          <td class="code"><pre>['Bank', 'Exchange', 'Tor', 'GNUnet', 'Taler', 'FSF', 'Tutorial', 'Survey']</pre></td>
        </tr>
      
        <tr>
          <td>TALER_SUGGESTED_EXCHANGE</td>
          <td class="code"><pre>'https://exchange.demo.taler.net/'</pre></td>
        </tr>
      
        <tr>
          <td>TC</td>
          <td class="code"><pre>&lt;talerbank.talerconfig.TalerConfig object at 0x7f3546bcb780&gt;</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATES</td>
          <td class="code"><pre>[{'BACKEND': 'django.template.backends.jinja2.Jinja2',
  'DIRS': ['/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/static/web-common/',
           '/home/demo-blue/local/lib/python3.5/site-packages/talerbank/app/templates'],
  'OPTIONS': {'environment': 'talerbank.jinja2.environment'}}]</pre></td>
        </tr>
      
        <tr>
          <td>TEMPLATE_CONTEXT_PROCESSORS</td>
          <td class="code"><pre>[]</pre></td>
        </tr>
      
        <tr>
          <td>TEST_NON_SERIALIZED_APPS</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>THOUSAND_SEPARATOR</td>
          <td class="code"><pre>','</pre></td>
        </tr>
      
        <tr>
          <td>TIME_FORMAT</td>
          <td class="code"><pre>'P'</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>TIME_ZONE</td>
          <td class="code"><pre>'UTC'</pre></td>
        </tr>
      
        <tr>
          <td>USE_ETAGS</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>USE_I18N</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>USE_L10N</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>USE_THOUSAND_SEPARATOR</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>USE_TZ</td>
          <td class="code"><pre>True</pre></td>
        </tr>
      
        <tr>
          <td>USE_X_FORWARDED_HOST</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>USE_X_FORWARDED_PORT</td>
          <td class="code"><pre>False</pre></td>
        </tr>
      
        <tr>
          <td>WSGI_APPLICATION</td>
          <td class="code"><pre>'talerbank.wsgi.application'</pre></td>
        </tr>
      
        <tr>
          <td>X_FRAME_OPTIONS</td>
          <td class="code"><pre>'SAMEORIGIN'</pre></td>
        </tr>
      
        <tr>
          <td>YEAR_MONTH_FORMAT</td>
          <td class="code"><pre>'F Y'</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>

Activities

Marcello Stanisci

2018-05-02 15:16

reporter   ~0012920

0ff63bf08ff3ffb fixes this. Moreover, it checks whether numbers to be
parsed are bigger than the well known JavaScript limit of 2^53 - 1, and
aborts everything in that case.

Issue History

Date Modified Username Field Change
2018-03-27 18:10 Torsten Grothoff New Issue
2018-03-27 18:10 Torsten Grothoff Status new => assigned
2018-03-27 18:10 Torsten Grothoff Assigned To => Marcello Stanisci
2018-03-27 18:14 Christian Grothoff File Added: Intiger overflow(Input field) Gives an error that should look different.html
2018-03-27 18:14 Christian Grothoff Product Version => git (master)
2018-03-27 18:14 Christian Grothoff Target Version => 0.6
2018-05-02 15:16 Marcello Stanisci Note Added: 0012920
2018-05-02 15:17 Marcello Stanisci Status assigned => resolved
2018-05-02 15:17 Marcello Stanisci Resolution open => fixed
2018-06-12 09:01 Christian Grothoff Fixed in Version => 0.6
2019-12-20 19:12 Christian Grothoff Status resolved => closed
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