Projet

Général

Profil

0001-base-log-searching-in-messages-42357.patch

Valentin Deniaud, 17 juin 2020 17:11

Télécharger (2,87 ko)

Voir les différences:

Subject: [PATCH] base: log searching in messages (#42357)

 passerelle/views.py   |  4 ++--
 tests/test_manager.py | 20 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)
passerelle/views.py
27 27
from django.contrib.auth import logout as auth_logout
28 28
from django.contrib.auth import views as auth_views
29 29
from django.db import transaction
30
from django.db.models import TextField
30
from django.db.models import TextField, Q
31 31
from django.db.models.functions import Cast
32 32
from django.http import HttpResponse, HttpResponseRedirect, Http404
33 33
from django.views.decorators.csrf import csrf_exempt
......
249 249
            except Exception:
250 250
                qs = qs.annotate(
251 251
                    text_extra=Cast('extra', TextField())
252
                ).filter(text_extra__icontains=query)
252
                ).filter(Q(text_extra__icontains=query) | Q(message__icontains=query))
253 253
            else:
254 254
                date = make_aware(date)
255 255
                if date.hour == 0 and date.minute == 0 and date.second == 0:
tests/test_manager.py
10 10
from django.utils.timezone import now
11 11
import pytest
12 12

  
13
from passerelle.base.models import ApiUser, AccessRight, ResourceStatus, Job
13
from passerelle.base.models import ApiUser, AccessRight, ResourceStatus, Job, ResourceLog
14 14
from passerelle.apps.csvdatasource.models import CsvDataSource, Query
15 15

  
16 16
pytestmark = pytest.mark.django_db
......
236 236
    assert resp.text.count('level-info') == 2
237 237

  
238 238

  
239
def test_logs_search_in_message(app, admin_user):
240
    csv = CsvDataSource.objects.create(csv_file=File(StringIO('1;t\n'), 't.csv'), slug='t', title='t')
241
    app = login(app)
242

  
243
    ResourceLog.objects.create(appname=csv.get_connector_slug(), slug=csv.slug, levelno=1, message='hop')
244
    resp = app.get(csv.get_absolute_url())
245
    resp = resp.click('full page')
246
    assert resp.text.count('<td class="timestamp">') == 1
247

  
248
    resp.form['q'] = 'not there'
249
    resp = resp.form.submit()
250
    assert resp.text.count('<td class="timestamp">') == 0
251

  
252
    resp.form['q'] = 'hop'
253
    resp = resp.form.submit()
254
    assert resp.text.count('<td class="timestamp">') == 1
255

  
256

  
239 257
def test_logging_parameters(app, admin_user):
240 258
    data = StringIO('1;Foo\n2;Bar\n3;Baz')
241 259
    csv = CsvDataSource.objects.create(csv_file=File(data, 't.csv'),
242
-