From 871853f823fccdf3b93293118ddf822c3cf37a20 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Wed, 17 Jun 2020 17:10:40 +0200 Subject: [PATCH] base: log searching in messages (#42357) --- passerelle/views.py | 4 ++-- tests/test_manager.py | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/passerelle/views.py b/passerelle/views.py index 54e030b1..433b02a9 100644 --- a/passerelle/views.py +++ b/passerelle/views.py @@ -27,7 +27,7 @@ from django.core.exceptions import PermissionDenied from django.contrib.auth import logout as auth_logout from django.contrib.auth import views as auth_views from django.db import transaction -from django.db.models import TextField +from django.db.models import TextField, Q from django.db.models.functions import Cast from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.views.decorators.csrf import csrf_exempt @@ -249,7 +249,7 @@ class GenericViewLogsConnectorView(GenericConnectorMixin, ListView): except Exception: qs = qs.annotate( text_extra=Cast('extra', TextField()) - ).filter(text_extra__icontains=query) + ).filter(Q(text_extra__icontains=query) | Q(message__icontains=query)) else: date = make_aware(date) if date.hour == 0 and date.minute == 0 and date.second == 0: diff --git a/tests/test_manager.py b/tests/test_manager.py index 85566e08..234f1dd5 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -10,7 +10,7 @@ from django.utils.six import StringIO from django.utils.timezone import now import pytest -from passerelle.base.models import ApiUser, AccessRight, ResourceStatus, Job +from passerelle.base.models import ApiUser, AccessRight, ResourceStatus, Job, ResourceLog from passerelle.apps.csvdatasource.models import CsvDataSource, Query pytestmark = pytest.mark.django_db @@ -236,6 +236,24 @@ def test_logs(app, admin_user): assert resp.text.count('level-info') == 2 +def test_logs_search_in_message(app, admin_user): + csv = CsvDataSource.objects.create(csv_file=File(StringIO('1;t\n'), 't.csv'), slug='t', title='t') + app = login(app) + + ResourceLog.objects.create(appname=csv.get_connector_slug(), slug=csv.slug, levelno=1, message='hop') + resp = app.get(csv.get_absolute_url()) + resp = resp.click('full page') + assert resp.text.count('') == 1 + + resp.form['q'] = 'not there' + resp = resp.form.submit() + assert resp.text.count('') == 0 + + resp.form['q'] = 'hop' + resp = resp.form.submit() + assert resp.text.count('') == 1 + + def test_logging_parameters(app, admin_user): data = StringIO('1;Foo\n2;Bar\n3;Baz') csv = CsvDataSource.objects.create(csv_file=File(data, 't.csv'), -- 2.20.1