View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0004247 | Taler | obsolete component | public | 2016-03-19 12:55 | 2016-03-23 20:02 |
| Reporter | Torsten Grothoff | Assigned To | Marcello Stanisci | ||
| Priority | urgent | Severity | block | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Platform | i7 | OS | Debian GNU/Linux | OS Version | squeeze |
| Product Version | 0.0 | ||||
| Target Version | 0.0 | Fixed in Version | 0.0 | ||
| Summary | 0004247: TypeError at /pin/verify | ||||
| Description | After solving the captcha to withdraw funds from the test bank, Torsten reports getting the following (reproduced by me): TypeError at /pin/verify Unicode-objects must be encoded before hashing Request Method: POST Request URL: https://bank.test.taler.net/pin/verify Django Version: 1.9.2 Exception Type: TypeError Exception Value: Unicode-objects must be encoded before hashing Exception Location: ./bank_app/captcha.py in pin_tan_verify_attempt, line 111 Python Executable: /home/test/bank-venv/bin/uwsgi Python Version: 3.4.4 Python Path: ['.', '', '/home/test/bank-venv/lib/python3.4', '/home/test/bank-venv/lib/python3.4/plat-x86_64-linux-gnu', '/home/test/bank-venv/lib/python3.4/lib-dynload', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/home/test/bank-venv/lib/python3.4/site-packages'] Server time: Sat, 19 Mar 2016 11:52:25 +0000 Traceback Switch to copy-and-paste view /home/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py in get_response response = self.process_exception_by_middleware(e, request) ... ▶ Local vars /home/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ... ▶ Local vars ./bank_app/captcha.py in pin_tan_verify ▶ Local vars ./bank_app/lib.py in check_login def check_db(fn): ... ▶ Local vars ./bank_app/captcha.py in pin_tan_verify_attempt except Exception: # FIXME narrow the Exception type ... ▶ Local vars | ||||
| Additional Information | Request information GET No GET data POST Variable Value pin_0 '80' pin_1 '4a395bfe6fd829436a75ae2d7ec6c0962933841d' csrfmiddlewaretoken 'hKj8qq3kZhEDrEg9onPiAj230KinSjBw' FILES No FILES data COOKIES Variable Value sessionid 'btk5dbp4g0qcj309msdhlkdommkkw0fe' csrftoken 'hKj8qq3kZhEDrEg9onPiAj230KinSjBw' META Variable Value wsgi.input <uwsgi._Input object at 0x7f461ba9e558> wsgi.version (1, 0) HTTP_CACHE_CONTROL 'max-age=0' HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.8' wsgi.multithread False HTTPS 'on' REQUEST_SCHEME 'https' SCRIPT_NAME '' HTTP_CONTENT_TYPE 'application/x-www-form-urlencoded' CONTENT_LENGTH '108' wsgi.errors <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'> wsgi.multiprocess False HTTP_REFERER 'https://bank.test.taler.net/auth/pin/question?exchange=https%3A%2F%2Fexchange.test.taler.net%2F&reserve_pub=S6H0A3J88R3BCYM7DR8YX28G91FBCT7ZD17WMFMJADC1AY9GJ3B0&amount_value=1&amount_fraction=0&amount_currency=PUDOS' HTTP_CONNECTION 'keep-alive' HTTP_HOST 'bank.test.taler.net' SERVER_PROTOCOL 'HTTP/1.1' wsgi.file_wrapper '' PATH_INFO '/pin/verify' REMOTE_ADDR '86.253.40.254' HTTP_USER_AGENT ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/48.0.2564.116 Safari/537.36') QUERY_STRING '' CSRF_COOKIE 'hKj8qq3kZhEDrEg9onPiAj230KinSjBw' SERVER_NAME 'bank.test.taler.net' uwsgi.node b'tripwire' DOCUMENT_ROOT '/usr/share/nginx/html' SERVER_PORT '443' HTTP_CONTENT_LENGTH '108' wsgi.url_scheme 'https' CONTENT_TYPE 'application/x-www-form-urlencoded' HTTP_UPGRADE_INSECURE_REQUESTS '1' REQUEST_URI '/pin/verify' uwsgi.version b'2.0.12' HTTP_ACCEPT_ENCODING 'gzip, deflate' HTTP_COOKIE ('sessionid=btk5dbp4g0qcj309msdhlkdommkkw0fe; ' 'csrftoken=hKj8qq3kZhEDrEg9onPiAj230KinSjBw') REQUEST_METHOD 'POST' wsgi.run_once False HTTP_ORIGIN 'https://bank.test.taler.net' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' REMOTE_PORT '44930' | ||||
| Tags | No tags attached. | ||||
| Attached Files | TypeError at _pin_verify.html (60,923 bytes)
<!DOCTYPE html>
<!-- saved from url=(0038)https://bank.test.taler.net/pin/verify -->
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>TypeError at /pin/verify</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>TypeError at /pin/verify</h1>
<pre class="exception_value">Unicode-objects must be encoded before hashing</pre>
<table class="meta">
<tbody><tr>
<th>Request Method:</th>
<td>POST</td>
</tr>
<tr>
<th>Request URL:</th>
<td>https://bank.test.taler.net/pin/verify</td>
</tr>
<tr>
<th>Django Version:</th>
<td>1.9.2</td>
</tr>
<tr>
<th>Exception Type:</th>
<td>TypeError</td>
</tr>
<tr>
<th>Exception Value:</th>
<td><pre>Unicode-objects must be encoded before hashing</pre></td>
</tr>
<tr>
<th>Exception Location:</th>
<td>./bank_app/captcha.py in pin_tan_verify_attempt, line 111</td>
</tr>
<tr>
<th>Python Executable:</th>
<td>/home/test/bank-venv/bin/uwsgi</td>
</tr>
<tr>
<th>Python Version:</th>
<td>3.4.4</td>
</tr>
<tr>
<th>Python Path:</th>
<td><pre>['.',
'',
'/home/test/bank-venv/lib/python3.4',
'/home/test/bank-venv/lib/python3.4/plat-x86_64-linux-gnu',
'/home/test/bank-venv/lib/python3.4/lib-dynload',
'/usr/lib/python3.4',
'/usr/lib/python3.4/plat-x86_64-linux-gnu',
'/home/test/bank-venv/lib/python3.4/site-packages']</pre></td>
</tr>
<tr>
<th>Server time:</th>
<td>Sat, 19 Mar 2016 11:52:25 +0000</td>
</tr>
</tbody></table>
</div>
<div id="traceback">
<h2>Traceback <span class="commands"><a href="https://bank.test.taler.net/pin/verify#" 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/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>get_response</code>
<div class="context" id="c139939042096008">
<ol start="142" class="pre-context" id="pre139939042096008" style="display: none;">
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> break</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre></pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> try:</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> except Exception as e:</pre></li>
</ol>
<ol start="149" class="context-line">
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li></ol>
<ol start="150" class="post-context" id="post139939042096008" style="display: none;">
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre></pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> # Complain if the view returned None (a common error).</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> view_name = callback.__name__</pre></li>
<li onclick="toggle('pre139939042096008', 'post139939042096008')"><pre> else: # CBV</pre></li>
</ol>
</div>
<div class="commands">
<a href="https://bank.test.taler.net/pin/verify#" onclick="return varToggle(this, '139939042096008')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v139939042096008" style="display: none;">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>urlconf</td>
<td class="code"><pre>'bank_project.urls'</pre></td>
</tr>
<tr>
<td>response_is_rendered</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><WSGIRequest: POST '/pin/verify'></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7f461be72f60></pre></td>
</tr>
<tr>
<td>callback_args</td>
<td class="code"><pre>()</pre></td>
</tr>
<tr>
<td>resolver</td>
<td class="code"><pre><RegexURLResolver 'bank_project.urls' (None:None) ^/></pre></td>
</tr>
<tr>
<td>resolver_match</td>
<td class="code"><pre>ResolverMatch(func=bank_app.captcha.pin_tan_verify, args=(), kwargs={}, url_name=None, app_names=[], namespaces=[])</pre></td>
</tr>
<tr>
<td>callback</td>
<td class="code"><pre><function pin_tan_verify at 0x7f4618f44950></pre></td>
</tr>
<tr>
<td>response</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>wrapped_callback</td>
<td class="code"><pre><function pin_tan_verify at 0x7f4618f44950></pre></td>
</tr>
<tr>
<td>callback_kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>middleware_method</td>
<td class="code"><pre><bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f46190e6d68>></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame django">
<code>/home/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py</code> in <code>get_response</code>
<div class="context" id="c139939042095496">
<ol start="140" class="pre-context" id="pre139939042095496" style="display: none;">
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> if response:</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> break</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre></pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> try:</pre></li>
</ol>
<ol start="147" class="context-line">
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li></ol>
<ol start="148" class="post-context" id="post139939042095496" style="display: none;">
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> except Exception as e:</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre></pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> # Complain if the view returned None (a common error).</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> if response is None:</pre></li>
<li onclick="toggle('pre139939042095496', 'post139939042095496')"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>
</ol>
</div>
<div class="commands">
<a href="https://bank.test.taler.net/pin/verify#" onclick="return varToggle(this, '139939042095496')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v139939042095496" style="display: none;">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>urlconf</td>
<td class="code"><pre>'bank_project.urls'</pre></td>
</tr>
<tr>
<td>response_is_rendered</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><WSGIRequest: POST '/pin/verify'></pre></td>
</tr>
<tr>
<td>self</td>
<td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7f461be72f60></pre></td>
</tr>
<tr>
<td>callback_args</td>
<td class="code"><pre>()</pre></td>
</tr>
<tr>
<td>resolver</td>
<td class="code"><pre><RegexURLResolver 'bank_project.urls' (None:None) ^/></pre></td>
</tr>
<tr>
<td>resolver_match</td>
<td class="code"><pre>ResolverMatch(func=bank_app.captcha.pin_tan_verify, args=(), kwargs={}, url_name=None, app_names=[], namespaces=[])</pre></td>
</tr>
<tr>
<td>callback</td>
<td class="code"><pre><function pin_tan_verify at 0x7f4618f44950></pre></td>
</tr>
<tr>
<td>response</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>wrapped_callback</td>
<td class="code"><pre><function pin_tan_verify at 0x7f4618f44950></pre></td>
</tr>
<tr>
<td>callback_kwargs</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>middleware_method</td>
<td class="code"><pre><bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f46190e6d68>></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>./bank_app/captcha.py</code> in <code>pin_tan_verify</code>
<div class="commands">
<a href="https://bank.test.taler.net/pin/verify#" onclick="return varToggle(this, '139939042096264')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v139939042096264" style="display: none;">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>request</td>
<td class="code"><pre><WSGIRequest: POST '/pin/verify'></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>./bank_app/lib.py</code> in <code>check_login</code>
<div class="context" id="c139939042095752">
<ol start="106" class="pre-context" id="pre139939042095752" style="display: none;">
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> return amount_dict['value'] + (amount_dict['fraction'] / 1000000)</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre></pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre>def write_log_file(data, log_file="/tmp/django.log", flag='a'):</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> f = open(log_file, flag)</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> f.write(data)</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> f.close()</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre></pre></li>
</ol>
<ol start="113" class="context-line">
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre>def check_db(fn):</pre> <span>...</span></li></ol>
<ol start="114" class="post-context" id="post139939042095752" style="display: none;">
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> def fake_query(request):</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> try: User.objects.get(username='Bank')</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> except User.DoesNotExist:</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> return no_bank_account_handler(request)</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> except ProgrammingError:</pre></li>
<li onclick="toggle('pre139939042095752', 'post139939042095752')"><pre> return internal_error_handler(request,</pre></li>
</ol>
</div>
<div class="commands">
<a href="https://bank.test.taler.net/pin/verify#" onclick="return varToggle(this, '139939042095752')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v139939042095752" style="display: none;">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>fn</td>
<td class="code"><pre><function pin_tan_verify_attempt at 0x7f4618f449d8></pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><WSGIRequest: POST '/pin/verify'></pre></td>
</tr>
</tbody>
</table>
</li>
<li class="frame user">
<code>./bank_app/captcha.py</code> in <code>pin_tan_verify_attempt</code>
<div class="context" id="c139939042053384">
<ol start="104" class="pre-context" id="pre139939042053384" style="display: none;">
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre></pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre>def pin_tan_verify_attempt(request):</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> if request.method != 'POST':</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> raise WrongMethod("POST")</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> try:</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> given = request.POST['pin_0']</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> hashed_result = request.POST['pin_1']</pre></li>
</ol>
<ol start="111" class="context-line">
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> except Exception: # FIXME narrow the Exception type</pre> <span>...</span></li></ol>
<ol start="112" class="post-context" id="post139939042053384" style="display: none;">
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> raise BadPostValue</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> hasher = hashlib.new("sha1")</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> hasher.update(settings.SECRET_KEY)</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> hasher.update(given)</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> hashed_attempt = hasher.hexdigest()</pre></li>
<li onclick="toggle('pre139939042053384', 'post139939042053384')"><pre> if hashed_attempt == hashed_result:</pre></li>
</ol>
</div>
<div class="commands">
<a href="https://bank.test.taler.net/pin/verify#" onclick="return varToggle(this, '139939042053384')"><span>▶</span> Local vars</a>
</div>
<table class="vars" id="v139939042053384" style="display: none;">
<thead>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>hasher</td>
<td class="code"><pre><sha1 HASH object @ 0x7f4618e4b990></pre></td>
</tr>
<tr>
<td>hashed_result</td>
<td class="code"><pre>'4a395bfe6fd829436a75ae2d7ec6c0962933841d'</pre></td>
</tr>
<tr>
<td>given</td>
<td class="code"><pre>'80'</pre></td>
</tr>
<tr>
<td>request</td>
<td class="code"><pre><WSGIRequest: POST '/pin/verify'></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="TypeError at /pin/verify">
<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: POST
Request URL: https://bank.test.taler.net/pin/verify
Django Version: 1.9.2
Python Version: 3.4.4
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bank_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']
Traceback:
File "/home/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/home/test/bank-venv/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "./bank_app/captcha.py" in pin_tan_verify
File "./bank_app/lib.py" in check_login
113. def check_db(fn):
File "./bank_app/captcha.py" in pin_tan_verify_attempt
111. except Exception: # FIXME narrow the Exception type
Exception Type: TypeError at /pin/verify
Exception Value: Unicode-objects must be encoded before hashing
</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>
<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>pin_0</td>
<td class="code"><pre>'80'</pre></td>
</tr>
<tr>
<td>pin_1</td>
<td class="code"><pre>'4a395bfe6fd829436a75ae2d7ec6c0962933841d'</pre></td>
</tr>
<tr>
<td>csrfmiddlewaretoken</td>
<td class="code"><pre>'hKj8qq3kZhEDrEg9onPiAj230KinSjBw'</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>'btk5dbp4g0qcj309msdhlkdommkkw0fe'</pre></td>
</tr>
<tr>
<td>csrftoken</td>
<td class="code"><pre>'hKj8qq3kZhEDrEg9onPiAj230KinSjBw'</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.input</td>
<td class="code"><pre><uwsgi._Input object at 0x7f461ba9e558></pre></td>
</tr>
<tr>
<td>wsgi.version</td>
<td class="code"><pre>(1, 0)</pre></td>
</tr>
<tr>
<td>HTTP_CACHE_CONTROL</td>
<td class="code"><pre>'max-age=0'</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.multithread</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>HTTPS</td>
<td class="code"><pre>'on'</pre></td>
</tr>
<tr>
<td>REQUEST_SCHEME</td>
<td class="code"><pre>'https'</pre></td>
</tr>
<tr>
<td>SCRIPT_NAME</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>HTTP_CONTENT_TYPE</td>
<td class="code"><pre>'application/x-www-form-urlencoded'</pre></td>
</tr>
<tr>
<td>CONTENT_LENGTH</td>
<td class="code"><pre>'108'</pre></td>
</tr>
<tr>
<td>wsgi.errors</td>
<td class="code"><pre><_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'></pre></td>
</tr>
<tr>
<td>wsgi.multiprocess</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>HTTP_REFERER</td>
<td class="code"><pre>'https://bank.test.taler.net/auth/pin/question?exchange=https%3A%2F%2Fexchange.test.taler.net%2F&reserve_pub=S6H0A3J88R3BCYM7DR8YX28G91FBCT7ZD17WMFMJADC1AY9GJ3B0&amount_value=1&amount_fraction=0&amount_currency=PUDOS'</pre></td>
</tr>
<tr>
<td>HTTP_CONNECTION</td>
<td class="code"><pre>'keep-alive'</pre></td>
</tr>
<tr>
<td>HTTP_HOST</td>
<td class="code"><pre>'bank.test.taler.net'</pre></td>
</tr>
<tr>
<td>SERVER_PROTOCOL</td>
<td class="code"><pre>'HTTP/1.1'</pre></td>
</tr>
<tr>
<td>wsgi.file_wrapper</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>PATH_INFO</td>
<td class="code"><pre>'/pin/verify'</pre></td>
</tr>
<tr>
<td>REMOTE_ADDR</td>
<td class="code"><pre>'86.253.40.254'</pre></td>
</tr>
<tr>
<td>HTTP_USER_AGENT</td>
<td class="code"><pre>('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/48.0.2564.116 Safari/537.36')</pre></td>
</tr>
<tr>
<td>QUERY_STRING</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE</td>
<td class="code"><pre>'hKj8qq3kZhEDrEg9onPiAj230KinSjBw'</pre></td>
</tr>
<tr>
<td>SERVER_NAME</td>
<td class="code"><pre>'bank.test.taler.net'</pre></td>
</tr>
<tr>
<td>uwsgi.node</td>
<td class="code"><pre>b'tripwire'</pre></td>
</tr>
<tr>
<td>DOCUMENT_ROOT</td>
<td class="code"><pre>'/usr/share/nginx/html'</pre></td>
</tr>
<tr>
<td>SERVER_PORT</td>
<td class="code"><pre>'443'</pre></td>
</tr>
<tr>
<td>HTTP_CONTENT_LENGTH</td>
<td class="code"><pre>'108'</pre></td>
</tr>
<tr>
<td>wsgi.url_scheme</td>
<td class="code"><pre>'https'</pre></td>
</tr>
<tr>
<td>CONTENT_TYPE</td>
<td class="code"><pre>'application/x-www-form-urlencoded'</pre></td>
</tr>
<tr>
<td>HTTP_UPGRADE_INSECURE_REQUESTS</td>
<td class="code"><pre>'1'</pre></td>
</tr>
<tr>
<td>REQUEST_URI</td>
<td class="code"><pre>'/pin/verify'</pre></td>
</tr>
<tr>
<td>uwsgi.version</td>
<td class="code"><pre>b'2.0.12'</pre></td>
</tr>
<tr>
<td>HTTP_ACCEPT_ENCODING</td>
<td class="code"><pre>'gzip, deflate'</pre></td>
</tr>
<tr>
<td>HTTP_COOKIE</td>
<td class="code"><pre>('sessionid=btk5dbp4g0qcj309msdhlkdommkkw0fe; '
'csrftoken=hKj8qq3kZhEDrEg9onPiAj230KinSjBw')</pre></td>
</tr>
<tr>
<td>REQUEST_METHOD</td>
<td class="code"><pre>'POST'</pre></td>
</tr>
<tr>
<td>wsgi.run_once</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>HTTP_ORIGIN</td>
<td class="code"><pre>'https://bank.test.taler.net'</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>REMOTE_PORT</td>
<td class="code"><pre>'44930'</pre></td>
</tr>
</tbody>
</table>
<h3 id="settings-info">Settings</h3>
<h4>Using settings module <code>bank_project.settings</code></h4>
<table class="req">
<thead>
<tr>
<th>Setting</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<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>AUTH_PASSWORD_VALIDATORS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SESSION_FILE_PATH</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>MESSAGE_STORAGE</td>
<td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
</tr>
<tr>
<td>X_FRAME_OPTIONS</td>
<td class="code"><pre>'SAMEORIGIN'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_NAME</td>
<td class="code"><pre>'csrftoken'</pre></td>
</tr>
<tr>
<td>DATABASE_ROUTERS</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_DOMAIN</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>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>CSRF_COOKIE_PATH</td>
<td class="code"><pre>'/'</pre></td>
</tr>
<tr>
<td>EMAIL_USE_SSL</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>WSGI_APPLICATION</td>
<td class="code"><pre>'bank_project.wsgi.application'</pre></td>
</tr>
<tr>
<td>MEDIA_ROOT</td>
<td class="code"><pre>''</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']</pre></td>
</tr>
<tr>
<td>DATE_FORMAT</td>
<td class="code"><pre>'N j, Y'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_AGE</td>
<td class="code"><pre>31449600</pre></td>
</tr>
<tr>
<td>EMAIL_HOST</td>
<td class="code"><pre>'localhost'</pre></td>
</tr>
<tr>
<td>YEAR_MONTH_FORMAT</td>
<td class="code"><pre>'F Y'</pre></td>
</tr>
<tr>
<td>TEST_NON_SERIALIZED_APPS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
<td class="code"><pre>2621440</pre></td>
</tr>
<tr>
<td>DEFAULT_CONTENT_TYPE</td>
<td class="code"><pre>'text/html'</pre></td>
</tr>
<tr>
<td>SHORT_DATE_FORMAT</td>
<td class="code"><pre>'m/d/Y'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_SECURE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>STATIC_URL</td>
<td class="code"><pre>'/static/'</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_HTTPONLY</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>FIXTURE_DIRS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>MIGRATION_MODULES</td>
<td class="code"><pre>{}</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>SECURE_BROWSER_XSS_FILTER</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>STATIC_ROOT</td>
<td class="code"><pre>'static/'</pre></td>
</tr>
<tr>
<td>LOGIN_REDIRECT_URL</td>
<td class="code"><pre>'/accounts/profile/'</pre></td>
</tr>
<tr>
<td>FORMAT_MODULE_PATH</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>ROOT_URLCONF</td>
<td class="code"><pre>'bank_project.urls'</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',
'bank_app']</pre></td>
</tr>
<tr>
<td>FIRST_DAY_OF_WEEK</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>LOGIN_URL</td>
<td class="code"><pre>'/accounts/login/'</pre></td>
</tr>
<tr>
<td>TEMPLATE_DIRS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_PROXY_SSL_HEADER</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_SECURE</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SETTINGS_MODULE</td>
<td class="code"><pre>'bank_project.settings'</pre></td>
</tr>
<tr>
<td>USE_X_FORWARDED_PORT</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>USE_THOUSAND_SEPARATOR</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECRET_KEY</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>PREPEND_WWW</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>IGNORABLE_404_URLS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>DEFAULT_TABLESPACE</td>
<td class="code"><pre>''</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': 'talertest',
'OPTIONS': {},
'PASSWORD': '********************',
'PORT': '',
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': None,
'USER': ''}}</pre></td>
</tr>
<tr>
<td>USE_L10N</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
<td class="code"><pre>'********************'</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>FILE_UPLOAD_HANDLERS</td>
<td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>
</tr>
<tr>
<td>LANGUAGE_CODE</td>
<td class="code"><pre>'en-us'</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>SECURE_SSL_REDIRECT</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SECURE_SSL_HOST</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>TEMPLATE_DEBUG</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_HTTPONLY</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>TIME_INPUT_FORMATS</td>
<td class="code"><pre>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</pre></td>
</tr>
<tr>
<td>CACHE_MIDDLEWARE_ALIAS</td>
<td class="code"><pre>'default'</pre></td>
</tr>
<tr>
<td>DATETIME_FORMAT</td>
<td class="code"><pre>'N j, Y, P'</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>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>ALLOWED_INCLUDE_ROOTS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>NUMBER_GROUPING</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>LANGUAGE_COOKIE_PATH</td>
<td class="code"><pre>'/'</pre></td>
</tr>
<tr>
<td>SESSION_SERIALIZER</td>
<td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td>
</tr>
<tr>
<td>DEFAULT_FILE_STORAGE</td>
<td class="code"><pre>'django.core.files.storage.FileSystemStorage'</pre></td>
</tr>
<tr>
<td>STATICFILES_STORAGE</td>
<td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
</tr>
<tr>
<td>SILENCED_SYSTEM_CHECKS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>SECURE_REDIRECT_EXEMPT</td>
<td class="code"><pre>[]</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>LOGOUT_URL</td>
<td class="code"><pre>'/accounts/logout/'</pre></td>
</tr>
<tr>
<td>SIGNING_BACKEND</td>
<td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td>
</tr>
<tr>
<td>EMAIL_TIMEOUT</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>TIME_ZONE</td>
<td class="code"><pre>'UTC'</pre></td>
</tr>
<tr>
<td>AUTH_USER_MODEL</td>
<td class="code"><pre>'auth.User'</pre></td>
</tr>
<tr>
<td>DEBUG</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>SHORT_DATETIME_FORMAT</td>
<td class="code"><pre>'m/d/Y P'</pre></td>
</tr>
<tr>
<td>TIME_FORMAT</td>
<td class="code"><pre>'P'</pre></td>
</tr>
<tr>
<td>EMAIL_HOST_PASSWORD</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_NAME</td>
<td class="code"><pre>'sessionid'</pre></td>
</tr>
<tr>
<td>MANAGERS</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>LOGGING</td>
<td class="code"><pre>{}</pre></td>
</tr>
<tr>
<td>INTERNAL_IPS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>LANGUAGE_COOKIE_NAME</td>
<td class="code"><pre>'django_language'</pre></td>
</tr>
<tr>
<td>DEFAULT_FROM_EMAIL</td>
<td class="code"><pre>'webmaster@localhost'</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_PERMISSIONS</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>USE_TZ</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>USE_I18N</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
<td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
</tr>
<tr>
<td>EMAIL_HOST_USER</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>FILE_CHARSET</td>
<td class="code"><pre>'utf-8'</pre></td>
</tr>
<tr>
<td>DEFAULT_CHARSET</td>
<td class="code"><pre>'utf-8'</pre></td>
</tr>
<tr>
<td>USE_X_FORWARDED_HOST</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>CSRF_TRUSTED_ORIGINS</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>SESSION_COOKIE_AGE</td>
<td class="code"><pre>1209600</pre></td>
</tr>
<tr>
<td>CSRF_COOKIE_DOMAIN</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>SESSION_ENGINE</td>
<td class="code"><pre>'django.contrib.sessions.backends.db'</pre></td>
</tr>
<tr>
<td>ALLOWED_HOSTS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>PASSWORD_RESET_TIMEOUT_DAYS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>MONTH_DAY_FORMAT</td>
<td class="code"><pre>'F j'</pre></td>
</tr>
<tr>
<td>THOUSAND_SEPARATOR</td>
<td class="code"><pre>','</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>LANGUAGE_COOKIE_AGE</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>CSRF_FAILURE_VIEW</td>
<td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td>
</tr>
<tr>
<td>FORCE_SCRIPT_NAME</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>SERVER_EMAIL</td>
<td class="code"><pre>'root@localhost'</pre></td>
</tr>
<tr>
<td>STATICFILES_DIRS</td>
<td class="code"><pre>['/home/test/bank/django/bank_app/my-static']</pre></td>
</tr>
<tr>
<td>EMAIL_SUBJECT_PREFIX</td>
<td class="code"><pre>'[Django] '</pre></td>
</tr>
<tr>
<td>SECURE_HSTS_SECONDS</td>
<td class="code"><pre>0</pre></td>
</tr>
<tr>
<td>APPEND_SLASH</td>
<td class="code"><pre>True</pre></td>
</tr>
<tr>
<td>EMAIL_SSL_CERTFILE</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>DISALLOWED_USER_AGENTS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>EMAIL_SSL_KEYFILE</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>EMAIL_USE_TLS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>CSRF_HEADER_NAME</td>
<td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td>
</tr>
<tr>
<td>EMAIL_PORT</td>
<td class="code"><pre>25</pre></td>
</tr>
<tr>
<td>ABSOLUTE_URL_OVERRIDES</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>AUTHENTICATION_BACKENDS</td>
<td class="code"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td>
</tr>
<tr>
<td>CACHES</td>
<td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td>
</tr>
<tr>
<td>LOCALE_PATHS</td>
<td class="code"><pre>[]</pre></td>
</tr>
<tr>
<td>FILE_UPLOAD_TEMP_DIR</td>
<td class="code"><pre>None</pre></td>
</tr>
<tr>
<td>DECIMAL_SEPARATOR</td>
<td class="code"><pre>'.'</pre></td>
</tr>
<tr>
<td>PASSWORD_HASHERS</td>
<td class="code"><pre>'********************'</pre></td>
</tr>
<tr>
<td>SESSION_COOKIE_PATH</td>
<td class="code"><pre>'/'</pre></td>
</tr>
<tr>
<td>MEDIA_URL</td>
<td class="code"><pre>''</pre></td>
</tr>
<tr>
<td>USE_ETAGS</td>
<td class="code"><pre>False</pre></td>
</tr>
<tr>
<td>BASE_DIR</td>
<td class="code"><pre>'/home/test/bank/django'</pre></td>
</tr>
<tr>
<td>CACHE_MIDDLEWARE_SECONDS</td>
<td class="code"><pre>600</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>SESSION_CACHE_ALIAS</td>
<td class="code"><pre>'default'</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> | ||||
|
|
fixed in 6ce3940..e06cb8d. Py3 wanted some explicit conversions to utf-8 before hashing data. That's needed when the PIN/TAN given answer is to be compared with the right one (which is a hash of the real value) |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2016-03-19 12:55 | Christian Grothoff | New Issue | |
| 2016-03-19 12:55 | Christian Grothoff | Status | new => assigned |
| 2016-03-19 12:55 | Christian Grothoff | Assigned To | => Marcello Stanisci |
| 2016-03-19 12:55 | Christian Grothoff | File Added: TypeError at _pin_verify.html | |
| 2016-03-20 21:53 | Torsten Grothoff | Issue cloned: 0004261 | |
| 2016-03-21 00:21 | Christian Grothoff | Relationship added | has duplicate 0004248 |
| 2016-03-21 15:02 | Marcello Stanisci | Note Added: 0010309 | |
| 2016-03-21 15:02 | Marcello Stanisci | Status | assigned => resolved |
| 2016-03-21 15:02 | Marcello Stanisci | Resolution | open => fixed |
| 2016-03-22 17:14 | Christian Grothoff | Status | resolved => closed |
| 2016-03-22 17:14 | Christian Grothoff | Fixed in Version | => 0.0 |
| 2016-03-23 20:02 | Christian Grothoff | Reporter | Christian Grothoff => Torsten Grothoff |
| 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 |