Projet

Général

Profil

0001-logs-add-a-link-to-a-search-per-date-23298.patch

Lauréline Guérin, 02 avril 2020 14:07

Télécharger (5,85 ko)

Voir les différences:

Subject: [PATCH] logs: add a link to a search per date (#23298)

 passerelle/static/js/passerelle.js                 | 12 ++++++++----
 .../passerelle/includes/resource-logs-table.html   |  5 ++++-
 passerelle/templates/passerelle/manage/log.html    |  5 +++--
 .../templates/passerelle/manage/service_logs.html  |  8 ++++++++
 passerelle/views.py                                |  9 +++++++++
 tests/test_manager.py                              | 14 ++++++++++++++
 6 files changed, 46 insertions(+), 7 deletions(-)
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
-