133 lines
4.5 KiB
HTML
133 lines
4.5 KiB
HTML
{{extend 'default.mobile/layout.html'}}
|
|
|
|
{{block sectionclass}}ticket{{end}}
|
|
|
|
<h2>{{=T('Error ticket')}} for "{{=app}}"</h2>
|
|
<h3>{{=T('Ticket ID')}}</h3>
|
|
<p>{{=ticket}}</p>
|
|
{{if output:}}<h4>{{=output}}</h4>{{pass}}
|
|
<h3>{{=T('Version')}}</h3>
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<th>web2py™</th>
|
|
<td>{{=myversion}}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Python</th>
|
|
<td>{{=snapshot.get('pyver','')}}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3>{{=T('Traceback')}}</h3>
|
|
<div>
|
|
{{=traceback}}
|
|
</div>
|
|
|
|
{{if snapshot:}}
|
|
{{try:}}
|
|
|
|
<!-- ERROR SNAPSHOT -->
|
|
|
|
<h3>
|
|
{{=T('Error snapshot')}}<span>{{=T('Detailed traceback description')}}</span>
|
|
</h3>
|
|
|
|
<!-- SNAPSHOT LIST -->
|
|
|
|
<div id="snapshot">
|
|
<!-- Exception details -->
|
|
<p>
|
|
<code>{{=snapshot['etype']}}({{=snapshot['evalue']}})</code>
|
|
</p>
|
|
<p>
|
|
<a data-role="button" onclick="collapse('exception_inner');"><span>{{=T('inspect attributes')}}</span></a>
|
|
</p>
|
|
<div id="exception_inner">
|
|
<div>
|
|
<h5>{{=T("Exception instance attributes")}}</h5>
|
|
<table>
|
|
<tbody>
|
|
{{for k,v in snapshot['exception'].items():}}
|
|
<tr>
|
|
<th>{{=k}}</th>
|
|
<td>{{=v}}</td>
|
|
</tr>
|
|
{{pass}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- FRAMES -->
|
|
<div id="frames">
|
|
<h4>{{=T('Frames')}}</h4>
|
|
<ul>
|
|
{{for i, frame in enumerate(snapshot['frames']):}}
|
|
<li>
|
|
{{is_hidden = (i != len(snapshot['frames'])-1 and 'hide' or 'inspect')}}
|
|
<div>
|
|
<p>
|
|
<strong>File {{="%s in %s at line %s" % (frame['file'], frame['func'], frame['lnum'])}}</strong>
|
|
<a class="button tbbutton" onclick="collapse('{{="%s_code_inner" % i}}');"><span>{{=T("code")}}</span></a>
|
|
<a class="button tbbutton" onclick="collapse('{{="%s_args_inner" % i}}');"><span>{{=T("arguments")}}</span></a>
|
|
<a class="button tbbutton" onclick="collapse('{{="%s_vars_inner" % i}}');"><span>{{=T("variables")}}</span></a>
|
|
</p>
|
|
<div id="{{="%s_args_inner" % i}}" class="{{=is_hidden}}">
|
|
<h5>Function argument list</h5>
|
|
<p>{{=frame['call']}}</p>
|
|
</div>
|
|
<div id="{{="%s_code_inner" % i}}" class="{{=is_hidden}}">
|
|
<h5>Code listing</h5>
|
|
{{if frame['lines']:}}
|
|
<pre>{{=CODE('\n'.join([x[1] for x in sorted(frame['lines'].items(),key=lambda x: x[0])]),
|
|
language='python', link=None, counter=min(frame['lines'].keys()), highlight_line=frame['lnum'])}}</pre>
|
|
{{pass}}
|
|
</div>
|
|
<div id="{{="%s_vars_inner" % i}}" class="{{=is_hidden}}">
|
|
<h5>Variables</h5>
|
|
<table>
|
|
<tbody>
|
|
{{for k,v in frame['dump'].items():}}
|
|
<tr>
|
|
<th>{{=k}}</th>
|
|
<td>{{=v}}</td>
|
|
</tr>
|
|
{{pass}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
{{pass}}
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- VIEW ENVIRONMENT -->
|
|
<div class="viewenv">
|
|
<h4>Context</h4>
|
|
<p class="controls">
|
|
<a class="button" onclick="jQuery('#locals').slideToggle()"><span>{{=T('locals')}}</span></a>
|
|
<a class="button" onclick="jQuery('#request').slideToggle()"><span>{{=T('request')}}</span></a>
|
|
<a class="button" onclick="jQuery('#session').slideToggle()"><span>{{=T('session')}}</span></a>
|
|
<a class="button" onclick="jQuery('#response').slideToggle()"><span>{{=T('response')}}</span></a>
|
|
</p>
|
|
<div class="hide inspect" id="locals"><h6>locals</h6>{{=BEAUTIFY(snapshot['locals'])}}</div>
|
|
<div class="hide inspect" id="request"><h6>request</h6>{{=BEAUTIFY(snapshot['request'])}}</div>
|
|
<div class="hide inspect" id="session"><h6>session</h6>{{=BEAUTIFY(snapshot['session'])}}</div>
|
|
<div class="hide inspect" id="response"><h6>response</h6>{{=BEAUTIFY(snapshot['response'])}}</div>
|
|
</div>
|
|
{{except Exception as e:}}
|
|
<!-- this should not happen, just in case... (cannot output normal hmtl as we don't know current open tags) -->
|
|
{{import traceback;tb=traceback.format_exc().replace("\n","\\n") }}
|
|
<script language='javascript'>alert("Exception during snapshot rendering: {{=tb}} ");</script>
|
|
{{pass}}
|
|
{{pass}}
|
|
|
|
<div class="errorsource">
|
|
<h3>In file: {{=layer}}</h3>
|
|
{{=CODE(code.replace('\r',''),language='python',link='/examples/global/vars/')}}
|
|
</div>
|
|
|