0001-logs-add-a-link-to-a-search-per-date-23298.patch
passerelle/static/js/passerelle.js | ||
---|---|---|
1 |
$(function() { |
|
2 |
$('#logs tbody tr').on('click', function() { |
|
3 |
var base_url = $(this).parents('table.main').data('log-base-url'); |
|
4 |
var log_pk = $(this).data('pk'); |
|
1 |
open_log_window = function(base_url, log_pk) { |
|
5 | 2 |
var url = base_url + log_pk + '/'; |
6 | 3 |
$.get(url, |
7 | 4 |
function(response) { |
8 | 5 |
var $dialog = $(response).dialog({modal: true, width: 'auto'}); |
9 | 6 |
}); |
7 |
}; |
|
8 | ||
9 |
$(function() { |
|
10 |
$('#logs tbody tr').on('click', function() { |
|
11 |
var base_url = $(this).parents('table.main').data('log-base-url'); |
|
12 |
var log_pk = $(this).data('pk'); |
|
13 |
open_log_window(base_url, log_pk); |
|
10 | 14 |
}); |
11 | 15 |
$('#jobs tbody tr').on('click', function() { |
12 | 16 |
var base_url = $(this).parents('table.main').data('job-base-url'); |
passerelle/templates/passerelle/includes/resource-logs-table.html | ||
---|---|---|
11 | 11 |
<tbody> |
12 | 12 |
{% for record in logrecords %} |
13 | 13 |
<tr class="level-{{record.level}}" data-pk="{{ record.pk }}"> |
14 |
<td class="timestamp">{{ record.timestamp|localtime }}</td> |
|
14 |
<td class="timestamp"> |
|
15 |
{{ record.timestamp|localtime|date:'DATE_FORMAT' }} |
|
16 |
{{ record.timestamp|localtime|time:"H:i:s" }} |
|
17 |
</td> |
|
15 | 18 |
<td>{{ record.sourceip|default:"-" }}</td> |
16 | 19 |
<td class="message">{{ record.message|censor }}</td> |
17 | 20 |
</tr> |
passerelle/templates/passerelle/manage/log.html | ||
---|---|---|
21 | 21 |
{% endfor %} |
22 | 22 |
</table> |
23 | 23 | |
24 |
{% if logline.extra.transaction_id %} |
|
25 | 24 |
<div class="buttons"> |
25 |
{% if logline.extra.transaction_id %} |
|
26 | 26 |
<a class="button" href="{% url 'view-logs-connector' connector=object.get_connector_slug slug=object.slug %}?q={{logline.extra.transaction_id}}">{% trans "Search for logs from the same call" %}</a> |
27 |
</div> |
|
28 | 27 |
{% endif %} |
28 |
<a class="button" href="{% url 'view-logs-connector' connector=object.get_connector_slug slug=object.slug %}?log_id={{ logline.id }}">{% trans "Link to this window" %}</a> |
|
29 |
</div> |
|
29 | 30 | |
30 | 31 |
</div> |
passerelle/templates/passerelle/manage/service_logs.html | ||
---|---|---|
24 | 24 |
{% include "passerelle/includes/resource-logs-table.html" with logrecords=page_obj %} |
25 | 25 |
</div> |
26 | 26 | |
27 |
{% if log_target %} |
|
28 |
<script> |
|
29 |
$(function () { |
|
30 |
open_log_window($('table.main').data('log-base-url'), {{ log_target.id }}); |
|
31 |
}); |
|
32 |
</script> |
|
33 |
{% endif %} |
|
34 | ||
27 | 35 |
{% endblock %} |
passerelle/views.py | ||
---|---|---|
229 | 229 |
context = super(GenericViewLogsConnectorView, self).get_context_data(**kwargs) |
230 | 230 |
context['object'] = self.get_object() |
231 | 231 |
context['query'] = self.request.GET.get('q') or '' |
232 |
if self.request.GET.get('log_id'): |
|
233 |
try: |
|
234 |
context['log_target'] = ResourceLog.objects.get( |
|
235 |
appname=self.kwargs['connector'], |
|
236 |
slug=self.kwargs['slug'], |
|
237 |
pk=self.request.GET['log_id'] |
|
238 |
) |
|
239 |
except (ValueError, ResourceLog.DoesNotExist): |
|
240 |
pass |
|
232 | 241 |
return context |
233 | 242 | |
234 | 243 |
def get_object(self): |
tests/test_manager.py | ||
---|---|---|
137 | 137 |
assert resp.headers['content-type'] == 'application/javascript' |
138 | 138 |
assert resp.content.startswith(b'FooBar([{"') |
139 | 139 | |
140 | ||
140 | 141 |
def test_logs(app, admin_user): |
141 | 142 |
data = StringIO('1;Foo\n2;Bar\n3;Baz') |
142 | 143 |
csv = CsvDataSource.objects.create(csv_file=File(data, 't.csv'), |
... | ... | |
197 | 198 | |
198 | 199 |
resp = app.get(base_url + '12345' + '/', status=404) |
199 | 200 | |
201 |
resp = app.get(base_url + log_pk + '/') |
|
202 |
assert '/manage/csvdatasource/test/logs/?log_id=%s' % log_pk in resp.text |
|
203 |
resp = app.get('/manage/csvdatasource/test/logs/?log_id=%s' % log_pk) |
|
204 |
assert 'log_target' in resp.context |
|
205 | ||
206 |
# unknown id |
|
207 |
resp = app.get('/manage/csvdatasource/test/logs/?log_id=0') |
|
208 |
assert 'log_target' not in resp.context |
|
209 |
# bad id |
|
210 |
resp = app.get('/manage/csvdatasource/test/logs/?log_id=foo') |
|
211 |
assert 'log_target' not in resp.context |
|
212 | ||
213 | ||
200 | 214 |
def test_logging_parameters(app, admin_user): |
201 | 215 |
data = StringIO('1;Foo\n2;Bar\n3;Baz') |
202 | 216 |
csv = CsvDataSource.objects.create(csv_file=File(data, 't.csv'), |
203 |
- |