Last active
December 23, 2017 01:30
-
-
Save cdrini/b93f021e83065ddaf1b9b0f83dafcf83 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
<html lang="en"> | |
<head> | |
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> | |
<meta name="robots" content="NONE,NOARCHIVE" /> | |
<title><type 'exceptions.AttributeError'> at /</title> | |
<style type="text/css"> | |
html * { padding:0; margin:0; } | |
body * { padding:10px 20px; } | |
body * * { padding:0; } | |
body { font:small sans-serif; } | |
body>div { border-bottom:1px solid #ddd; } | |
h1 { font-weight:normal; } | |
h2 { margin-bottom:.8em; } | |
h2 span { font-size:80%; color:#666; font-weight:normal; } | |
h3 { margin:1em 0 .5em 0; } | |
h4 { margin:0 0 .5em 0; font-weight: normal; } | |
table { | |
border:1px solid #ccc; border-collapse: collapse; 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 { 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 div { 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; } | |
ul.traceback li.frame { margin-bottom:1em; } | |
div.context { margin: 10px 0; } | |
div.context ol { | |
padding-left:30px; margin:0 10px; list-style-position: inside; } | |
div.context ol li { | |
font-family:monospace; white-space:pre; color:#666; cursor:pointer; } | |
div.context ol.context-line li { color:black; background-color:#ccc; } | |
div.context ol.context-line li span { float: right; } | |
div.commands { margin-left: 40px; } | |
div.commands a { color:black; text-decoration:none; } | |
#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 0 20px; } | |
#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; } | |
</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')); | |
} | |
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; | |
} | |
//--> | |
</script> | |
</head> | |
<body> | |
<div id="summary"> | |
<h1><type 'exceptions.AttributeError'> at /</h1> | |
<h2>'NoneType' object has no attribute 'members'</h2> | |
<table><tr> | |
<th>Python</th> | |
<td>/openlibrary/infogami/utils/features.py in get_members, line 63</td> | |
</tr><tr> | |
<th>Web</th> | |
<td>GET http://localhost:8080/</td> | |
</tr></table> | |
</div> | |
<div id="traceback"> | |
<h2>Traceback <span>(innermost first)</span></h2> | |
<ul class="traceback"> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code>get_members</code> | |
<div class="context" id="c139787015232904"> | |
<ol start="56" class="pre-context" id="pre139787015232904"> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> </li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')">def filter_admin():</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> return filter_usergroup("/usergroup/admin")</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> </li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')">def filter_usergroup(usergroup):</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> """Returns true if the current user is member of the given usergroup."""</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> def get_members():</li> | |
</ol> | |
<ol start="63" class="context-line"><li onclick="toggle('pre139787015232904', 'post139787015232904')"> return [m.key for m in web.ctx.site.get(usergroup).members] <span>...</span></li></ol> | |
<ol start='64' class="post-context" id="post139787015232904"> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> </li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> return context.user and context.user.key in get_members()</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> </li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')">def filter_queryparam(name, value):</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> """Returns true if the current request has a queryparam with given name and value."""</li> | |
<li onclick="toggle('pre139787015232904', 'post139787015232904')"> i = web.input(_method="GET")</li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015232904')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015232904" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>usergroup</td><td class="code"><div>'/usergroup/librarians'</div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code>filter_usergroup</code> | |
<div class="context" id="c139787015232832"> | |
<ol start="58" class="pre-context" id="pre139787015232832"> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> return filter_usergroup("/usergroup/admin")</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> </li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')">def filter_usergroup(usergroup):</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> """Returns true if the current user is member of the given usergroup."""</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> def get_members():</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> return [m.key for m in web.ctx.site.get(usergroup).members]</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> </li> | |
</ol> | |
<ol start="65" class="context-line"><li onclick="toggle('pre139787015232832', 'post139787015232832')"> return context.user and context.user.key in get_members() <span>...</span></li></ol> | |
<ol start='66' class="post-context" id="post139787015232832"> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> </li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')">def filter_queryparam(name, value):</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> """Returns true if the current request has a queryparam with given name and value."""</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> i = web.input(_method="GET")</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> return i.get(name) == value</li> | |
<li onclick="toggle('pre139787015232832', 'post139787015232832')"> </li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015232832')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015232832" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>get_members</td><td class="code"><div><function get_members at 0x7f22b416a2a8></div></td></tr> | |
<tr><td>usergroup</td><td class="code"><div>'/usergroup/librarians'</div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code>call_filter</code> | |
<div class="context" id="c139787015231896"> | |
<ol start="24" class="pre-context" id="pre139787015231896"> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> filter_name = spec.pop('filter', None)</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> kwargs = spec</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> else:</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> filter_name = spec</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> kwargs = {}</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> </li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> if filter_name in filters:</li> | |
</ol> | |
<ol start="31" class="context-line"><li onclick="toggle('pre139787015231896', 'post139787015231896')"> return filters[filter_name](**kwargs) <span>...</span></li></ol> | |
<ol start='32' class="post-context" id="post139787015231896"> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> else:</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> return False</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> </li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')">def find_enabled_features():</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> return set(f for f, spec in feature_flags.iteritems() if call_filter(spec))</li> | |
<li onclick="toggle('pre139787015231896', 'post139787015231896')"> </li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015231896')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015231896" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>filter_name</td><td class="code"><div>'usergroup'</div></td></tr> | |
<tr><td>kwargs</td><td class="code"><div>{'usergroup': '/usergroup/librarians'}</div></td></tr> | |
<tr><td>spec</td><td class="code"><div>{'usergroup': '/usergroup/librarians'}</div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code><genexpr></code> | |
<div class="context" id="c139787015233192"> | |
<ol start="29" class="pre-context" id="pre139787015233192"> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> </li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> if filter_name in filters:</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> return filters[filter_name](**kwargs)</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> else:</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> return False</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> </li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')">def find_enabled_features():</li> | |
</ol> | |
<ol start="36" class="context-line"><li onclick="toggle('pre139787015233192', 'post139787015233192')"> return set(f for f, spec in feature_flags.iteritems() if call_filter(spec)) <span>...</span></li></ol> | |
<ol start='37' class="post-context" id="post139787015233192"> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> </li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')">def loadhook():</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> features = find_enabled_features()</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> web.ctx.features = features</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> context.features = features</li> | |
<li onclick="toggle('pre139787015233192', 'post139787015233192')"> </li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015233192')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015233192" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>.0</td><td class="code"><div><dictionary-itemiterator object at 0x7f22b4167208></div></td></tr> | |
<tr><td>f</td><td class="code"><div>'merge-authors'</div></td></tr> | |
<tr><td>spec</td><td class="code"><div><Storage {'filter': 'usergroup', 'usergroup': '/usergroup/librarians'}></div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code>find_enabled_features</code> | |
<div class="context" id="c139787015233048"> | |
<ol start="29" class="pre-context" id="pre139787015233048"> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> </li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> if filter_name in filters:</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> return filters[filter_name](**kwargs)</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> else:</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> return False</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> </li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')">def find_enabled_features():</li> | |
</ol> | |
<ol start="36" class="context-line"><li onclick="toggle('pre139787015233048', 'post139787015233048')"> return set(f for f, spec in feature_flags.iteritems() if call_filter(spec)) <span>...</span></li></ol> | |
<ol start='37' class="post-context" id="post139787015233048"> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> </li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')">def loadhook():</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> features = find_enabled_features()</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> web.ctx.features = features</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> context.features = features</li> | |
<li onclick="toggle('pre139787015233048', 'post139787015233048')"> </li> | |
</ol> | |
</div> | |
</li> | |
<li class="frame"> | |
<code>/openlibrary/infogami/utils/features.py</code> in <code>loadhook</code> | |
<div class="context" id="c139787015232616"> | |
<ol start="32" class="pre-context" id="pre139787015232616"> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> else:</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> return False</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> </li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')">def find_enabled_features():</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> return set(f for f, spec in feature_flags.iteritems() if call_filter(spec))</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> </li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')">def loadhook():</li> | |
</ol> | |
<ol start="39" class="context-line"><li onclick="toggle('pre139787015232616', 'post139787015232616')"> features = find_enabled_features() <span>...</span></li></ol> | |
<ol start='40' class="post-context" id="post139787015232616"> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> web.ctx.features = features</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> context.features = features</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> </li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')">def is_enabled(flag):</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> """Tests whether the given feature flag is enabled for this request.</li> | |
<li onclick="toggle('pre139787015232616', 'post139787015232616')"> """</li> | |
</ol> | |
</div> | |
</li> | |
<li class="frame"> | |
<code>/usr/local/lib/python2.7/dist-packages/web/application.py</code> in <code>processor</code> | |
<div class="context" id="c139787015232472"> | |
<ol start="549" class="pre-context" id="pre139787015232472"> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> </li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> >>> app = auto_application()</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> >>> def f(): "something done before handling request"</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> ...</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> >>> app.add_processor(loadhook(f))</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> """</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> def processor(handler):</li> | |
</ol> | |
<ol start="556" class="context-line"><li onclick="toggle('pre139787015232472', 'post139787015232472')"> h() <span>...</span></li></ol> | |
<ol start='557' class="post-context" id="post139787015232472"> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> return handler()</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> </li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> return processor</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> </li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')">def unloadhook(h):</li> | |
<li onclick="toggle('pre139787015232472', 'post139787015232472')"> """</li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015232472')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015232472" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>h</td><td class="code"><div><function loadhook at 0x7f22bb32ad70></div></td></tr> | |
<tr><td>handler</td><td class="code"><div><function <lambda> at 0x7f22b3860f50></div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
<li class="frame"> | |
<code>/usr/local/lib/python2.7/dist-packages/web/application.py</code> in <code>process</code> | |
<div class="context" id="c139787015231968"> | |
<ol start="232" class="pre-context" id="pre139787015231968"> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> return self._delegate(fn, self.fvars, args)</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> </li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> def handle_with_processors(self):</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> def process(processors):</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> try:</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> if processors:</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> p, processors = processors[0], processors[1:]</li> | |
</ol> | |
<ol start="239" class="context-line"><li onclick="toggle('pre139787015231968', 'post139787015231968')"> return p(lambda: process(processors)) <span>...</span></li></ol> | |
<ol start='240' class="post-context" id="post139787015231968"> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> else:</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> return self.handle()</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> except web.HTTPError:</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> raise</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> except (KeyboardInterrupt, SystemExit):</li> | |
<li onclick="toggle('pre139787015231968', 'post139787015231968')"> raise</li> | |
</ol> | |
</div> | |
<div class="commands"> | |
<a href='#' onclick="return varToggle(this, '139787015231968')"><span>▶</span> Local vars</a> | |
</div> | |
<table class="vars" | |
id="v139787015231968" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>p</td><td class="code"><div><function processor at 0x7f22bb02b398></div></td></tr> | |
<tr><td>process</td><td class="code"><div><function process at 0x7f22baf89398></div></td></tr> | |
<tr><td>processors</td><td class="code"><div>[<openlibrary.core.processors.readableurls.ReadableUrlProcessor instance at 0x7f22baf19b48>, | |
<openlibrary.plugins.openlibrary.processors.ProfileProcessor instance at 0x7f22ba9646c8>, | |
<openlibrary.plugins.openlibrary.processors.CORSProcessor instance at 0x7f22ba964098>, | |
<function processor at 0x7f22bc57fc80>, | |
<function block_ip_processor at 0x7f22b7fffed8>]</div></td></tr> | |
<tr><td>self</td><td class="code"><div><web.application.application instance at 0x7f22bb27fb48></div></td></tr> | |
</tbody> | |
</table> | |
</li> | |
</ul> | |
</div> | |
<div id="requestinfo"> | |
<h2>Request information</h2> | |
<h3>INPUT</h3> | |
<table class="req" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>debug</td><td class="code"><div>'true'</div></td></tr> | |
</tbody> | |
</table> | |
<h3 id="cookie-info">COOKIES</h3> | |
<table class="req" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>Idea-a82c5257</td><td class="code"><div>'afc3f6fc-1372-45fd-943e-9b12053bc81a'</div></td></tr> | |
<tr><td>Pycharm-82a6de35</td><td class="code"><div>'da72ac33-e431-4b03-b09c-80c7a5bfffc8'</div></td></tr> | |
<tr><td>_ga</td><td class="code"><div>'GA1.1.810146726.1508433544'</div></td></tr> | |
<tr><td>_xsrf</td><td class="code"><div>'2|90b4d400|c892155057e8dff107348a3406288918|1513481132'</div></td></tr> | |
<tr><td>session</td><td class="code"><div>'/people/openlibrary,2017-12-15T22:00:00,a48d3$fcea2bab056de34a1b7f0b9dc0a5a275'</div></td></tr> | |
<tr><td>username-localhost-8888</td><td class="code"><div>'2|1:0|10:1513485354|23:username-localhost-8888|44:ZjM2NzIwODM4NjBmNGNkMjlkZjMzYjI4NWI1ZDc1OWI=|370fc3468d2081542f8e23e0aa4afea91d7093adb1b05ca528ae5468cb33661a'</div></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>app_stack</td><td class="code"><div>[<web.application.application instance at 0x7f22bb27fb48>]</div></td></tr> | |
<tr><td>conn</td><td class="code"><div><openlibrary.plugins.openlibrary.connection.IAMiddleware instance at 0x7f22b7c83ab8></div></td></tr> | |
<tr><td>encoding</td><td class="code"><div>None</div></td></tr> | |
<tr><td>flash</td><td class="code"><div>[]</div></td></tr> | |
<tr><td>fullpath</td><td class="code"><div>u'/?debug=true'</div></td></tr> | |
<tr><td>headers</td><td class="code"><div>[]</div></td></tr> | |
<tr><td>home</td><td class="code"><div>u'http://localhost:8080'</div></td></tr> | |
<tr><td>homedomain</td><td class="code"><div>u'http://localhost:8080'</div></td></tr> | |
<tr><td>homepath</td><td class="code"><div>u''</div></td></tr> | |
<tr><td>host</td><td class="code"><div>u'localhost:8080'</div></td></tr> | |
<tr><td>infobase_auth_token</td><td class="code"><div>'/people/openlibrary,2017-12-15T22:00:00,a48d3$fcea2bab056de34a1b7f0b9dc0a5a275'</div></td></tr> | |
<tr><td>infobase_localmode</td><td class="code"><div>True</div></td></tr> | |
<tr><td>infobase_method</td><td class="code"><div>'GET'</div></td></tr> | |
<tr><td>ip</td><td class="code"><div>u'10.0.2.2'</div></td></tr> | |
<tr><td>lang</td><td class="code"><div>'en'</div></td></tr> | |
<tr><td>method</td><td class="code"><div>u'GET'</div></td></tr> | |
<tr><td>output</td><td class="code"><div>u''</div></td></tr> | |
<tr><td>path</td><td class="code"><div>u'/'</div></td></tr> | |
<tr><td>protocol</td><td class="code"><div>u'http'</div></td></tr> | |
<tr><td>queries</td><td class="code"><div>1</div></td></tr> | |
<tr><td>query</td><td class="code"><div>u'?debug=true'</div></td></tr> | |
<tr><td>querytime</td><td class="code"><div>0.0011839866638183594</div></td></tr> | |
<tr><td>realhome</td><td class="code"><div>u'http://localhost:8080'</div></td></tr> | |
<tr><td>site</td><td class="code"><div><infogami.infobase.client.Site instance at 0x7f22b7c833b0></div></td></tr> | |
<tr><td>stats</td><td class="code"><div>[<Storage {'t_end': 1513992327.287998, 'data': {'path': '/openlibrary.org/account/get_user', 'data': None, 'method': 'GET'}, 'name': 'infobase', 't_start': 1513992327.284487, 'time': 0.0035109519958496094}>, | |
<Storage {'t_end': 1513992327.288912, 'data': {'hit': True, 'key': '/usergroup/admin'}, 'name': 'memcache.get', 't_start': 1513992327.288526, 'time': 0.0003859996795654297}>, | |
<Storage {'t_end': 1513992327.289783, 'data': {'hit': False, 'key': '/usergroup/librarians'}, 'name': 'memcache.get', 't_start': 1513992327.289553, 'time': 0.0002300739288330078}>, | |
<Storage {'t_end': 1513992327.291649, 'data': {'path': '/openlibrary.org/get', 'data': {'key': '/usergroup/librarians', 'revision': None}, 'method': 'GET', 'error': True}, 'name': 'infobase', 't_start': 1513992327.289811, 'time': 0.0018382072448730469}>]</div></td></tr> | |
<tr><td>status</td><td class="code"><div>'200 OK'</div></td></tr> | |
</tbody> | |
</table> | |
<h3 id="meta-info">ENVIRONMENT</h3> | |
<table class="req" | |
><thead><tr><th>Variable</th><th>Value</th></tr></thead> | |
<tbody> | |
<tr><td>CONTENT_LENGTH</td><td class="code"><div>''</div></td></tr> | |
<tr><td>CONTENT_TYPE</td><td class="code"><div>''</div></td></tr> | |
<tr><td>HTTP_ACCEPT</td><td class="code"><div>'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'</div></td></tr> | |
<tr><td>HTTP_ACCEPT_ENCODING</td><td class="code"><div>'gzip, deflate, br'</div></td></tr> | |
<tr><td>HTTP_ACCEPT_LANGUAGE</td><td class="code"><div>'en-GB,en-US;q=0.9,en;q=0.8'</div></td></tr> | |
<tr><td>HTTP_CONNECTION</td><td class="code"><div>'close'</div></td></tr> | |
<tr><td>HTTP_COOKIE</td><td class="code"><div>'Idea-a82c5257=afc3f6fc-1372-45fd-943e-9b12053bc81a; _ga=GA1.1.810146726.1508433544; Pycharm-82a6de35=da72ac33-e431-4b03-b09c-80c7a5bfffc8; session="/people/openlibrary%2C2017-12-15T22%3A00%3A00%2Ca48d3%24fcea2bab056de34a1b7f0b9dc0a5a275"; _xsrf=2|90b4d400|c892155057e8dff107348a3406288918|1513481132; username-localhost-8888="2|1:0|10:1513485354|23:username-localhost-8888|44:ZjM2NzIwODM4NjBmNGNkMjlkZjMzYjI4NWI1ZDc1OWI=|370fc3468d2081542f8e23e0aa4afea91d7093adb1b05ca528ae5468cb33661a"'</div></td></tr> | |
<tr><td>HTTP_HOST</td><td class="code"><div>'localhost:8080'</div></td></tr> | |
<tr><td>HTTP_UPGRADE_INSECURE_REQUESTS</td><td class="code"><div>'1'</div></td></tr> | |
<tr><td>HTTP_USER_AGENT</td><td class="code"><div>'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'</div></td></tr> | |
<tr><td>HTTP_X_FORWARDED_FOR</td><td class="code"><div>'10.0.2.2'</div></td></tr> | |
<tr><td>PATH_INFO</td><td class="code"><div>'/'</div></td></tr> | |
<tr><td>QUERY_STRING</td><td class="code"><div>'debug=true'</div></td></tr> | |
<tr><td>RAW_URI</td><td class="code"><div>'/?debug=true'</div></td></tr> | |
<tr><td>REMOTE_ADDR</td><td class="code"><div>'10.0.2.2'</div></td></tr> | |
<tr><td>REMOTE_PORT</td><td class="code"><div>'80'</div></td></tr> | |
<tr><td>REQUEST_METHOD</td><td class="code"><div>'GET'</div></td></tr> | |
<tr><td>SCRIPT_NAME</td><td class="code"><div>''</div></td></tr> | |
<tr><td>SERVER_NAME</td><td class="code"><div>'localhost'</div></td></tr> | |
<tr><td>SERVER_PORT</td><td class="code"><div>'8080'</div></td></tr> | |
<tr><td>SERVER_PROTOCOL</td><td class="code"><div>'HTTP/1.0'</div></td></tr> | |
<tr><td>SERVER_SOFTWARE</td><td class="code"><div>'gunicorn/0.13.4'</div></td></tr> | |
<tr><td>gunicorn.socket</td><td class="code"><div><socket._socketobject object at 0x7f22b38f0130></div></td></tr> | |
<tr><td>wsgi.errors</td><td class="code"><div><open file '<stderr>', mode 'w' at 0x7f22be25e1e0></div></td></tr> | |
<tr><td>wsgi.file_wrapper</td><td class="code"><div><class gunicorn.http.wsgi.FileWrapper at 0x7f22bb33ec80></div></td></tr> | |
<tr><td>wsgi.input</td><td class="code"><div><gunicorn.http.body.Body object at 0x7f22baf5f210></div></td></tr> | |
<tr><td>wsgi.multiprocess</td><td class="code"><div>True</div></td></tr> | |
<tr><td>wsgi.multithread</td><td class="code"><div>False</div></td></tr> | |
<tr><td>wsgi.run_once</td><td class="code"><div>False</div></td></tr> | |
<tr><td>wsgi.url_scheme</td><td class="code"><div>'http'</div></td></tr> | |
<tr><td>wsgi.version</td><td class="code"><div>(1, 0)</div></td></tr> | |
</tbody> | |
</table> | |
</div> | |
<div id="explanation"> | |
<p> | |
You're seeing this error because you have <code>web.config.debug</code> | |
set to <code>True</code>. Set that to <code>False</code> if you don't to see this. | |
</p> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment