125 lines
6.2 KiB
HTML
125 lines
6.2 KiB
HTML
|
{{extend 'layout.html'}}
|
||
|
{{import os, stat, time}}
|
||
|
{{block sectionclass}}errors{{end}}
|
||
|
<!-- begin "errors" block -->
|
||
|
{{if db_ready['status'] == False:
|
||
|
switchbutton = A(SPAN(T("switch to : db")), _href=db_ready['errlink'], _class="button unavailable btn btn-danger", _title="%s" % (db_ready['errmessage']))
|
||
|
else:
|
||
|
switchbutton = A(SPAN(T("switch to : db")), _href=URL(args=[app, 'dbnew']), _class="button btn")
|
||
|
pass}}
|
||
|
<h2>{{=T('Error logs for "%(app)s"',dict(app=app))}}</h2>
|
||
|
<div class="errorform">
|
||
|
<form name="myform" method="post">
|
||
|
{{ if 'new' in method: }}
|
||
|
{{base_url = 'db' in method and 'ticketdb' or 'ticket' }}
|
||
|
<p class="controls row-fluid">
|
||
|
<div class="controls controls-row">
|
||
|
{{if 'db' in method:}}
|
||
|
<span class="uneditable-input">{{=T('source : db')}}</span>
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'new'])}}"><span>{{=T('switch to : filesystem')}}</span></a>
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'dbold'])}}"><span>{{=T('lists by ticket')}}</span></a>
|
||
|
{{else:}}
|
||
|
<span class="uneditable-input">{{=T('source : filesystem')}}</span>
|
||
|
{{=switchbutton}}
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'old'])}}"><span>{{=T('lists by ticket')}}</span></a>
|
||
|
{{pass}}
|
||
|
</div>
|
||
|
</p>
|
||
|
<div class="tablebar">
|
||
|
<input value="{{=T('delete all checked')}}" type="submit" class="btn"/>
|
||
|
<span class="help label label-info">{{=T('Click row to expand traceback')}}</span>
|
||
|
</div>
|
||
|
<div class="row-fluid">
|
||
|
<div class="span6">
|
||
|
<table id="trck_errors" class="sortable table table-hover table-condensed">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th class="column1 cbcentered"><input type="checkbox" name="delete_all}" /></th>
|
||
|
<th class="column2">{{=T("Count")}}</th>
|
||
|
<th class="column3">{{=T("File")}}</th>
|
||
|
<th>{{=T("Error")}}</th>
|
||
|
<th class="columnN"></th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
{{for e in errors:}}
|
||
|
<tr class="error_ticket">
|
||
|
<td class="cbcentered"><input type="checkbox" name="delete_{{=e['hash']}}" /></td>
|
||
|
<td>{{=e['count']}}</td>
|
||
|
<td>{{=e['causer']}}</td>
|
||
|
<td>{{=A(e['last_line'],_href="#",_onclick="collapse('%s');return false;"%e['hash'])}}</td>
|
||
|
<td>+ {{=A(T('details'),_href=URL(base_url,args=[app,e['ticket']]))}}</td>
|
||
|
</tr>
|
||
|
<tr id="{{=e['hash']}}" class="traceback">
|
||
|
<td colspan="5">
|
||
|
<div class="ticket_code">
|
||
|
{{=CODE(e['pickel']['traceback'])}}
|
||
|
</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
{{pass}}
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
{{ else: }}
|
||
|
<p class="controls row-fluid">
|
||
|
<div class="controls controls-row">
|
||
|
{{if 'db' in method:}}
|
||
|
<span class="uneditable-input">{{=T('source : db')}}</span>
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'old'])}}"><span>{{=T('switch to : filesystem')}}</span></a>
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'dbnew'])}}"><span>{{=T('lists by exception')}}</span></a>
|
||
|
{{else:}}
|
||
|
<span class="uneditable-input">{{=T('source : filesystem')}}</span>
|
||
|
{{=switchbutton}}
|
||
|
<a class="button btn" href="{{=URL(args=[app, 'new'])}}"><span>{{=T('lists by exception')}}</span></a>
|
||
|
{{pass}}
|
||
|
</div>
|
||
|
</p>
|
||
|
<div class="tablebar">
|
||
|
<input value="{{=T('delete all checked')}}" type="submit" class="btn"/>
|
||
|
<span class="help label label-info">{{=T('Click row to expand traceback')}}</span>
|
||
|
</div>
|
||
|
<div class="row-fluid">
|
||
|
<div class="span6">
|
||
|
<table id="trck_errors" class="sortable table table-hover table-condensed">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th class="column1 cbcentered"><input type="checkbox" name="delete_all}" /></th>
|
||
|
<th>{{=T("Ticket")}}</th>
|
||
|
<th class="columnN1">{{=T("Date and Time")}}</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
{{for ticket in tickets:}}
|
||
|
<tr>
|
||
|
<td class="cbcentered"><input type="checkbox" name="delete_{{=ticket}}"/></td>
|
||
|
{{if 'db' in method:}}
|
||
|
<td><a href="{{=URL('ticketdb',args=[app,ticket])}}">{{=ticket}}</a></td>
|
||
|
<td>{{=time.strftime('%Y-%m-%d %H:%M:%S',times[ticket].timetuple())}}</td>
|
||
|
{{else:}}
|
||
|
<td><a href="{{=URL('ticket',args=[app,ticket])}}">{{=ticket}}</a></td>
|
||
|
<td>{{=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.stat(os.path.join(request.folder,'../%s/errors/%s' % (app,ticket)))[stat.ST_CTIME]))}}</td>
|
||
|
{{pass}}
|
||
|
</tr>
|
||
|
{{pass}}
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
{{ pass }}
|
||
|
</form><!-- /errorform -->
|
||
|
</div>
|
||
|
<script type="text/javascript">
|
||
|
jQuery(document).ready(function() {
|
||
|
jQuery('.traceback').hide();
|
||
|
jQuery("#trck_errors thead tr th:first input[type=checkbox]").click(function() {
|
||
|
var checkedStatus = this.checked;
|
||
|
jQuery("#trck_errors tbody tr td:first-child input[type=checkbox]").each(function() {
|
||
|
this.checked = checkedStatus;
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
</script>
|
||
|
<!-- end "errors" block -->
|