Projet

Général

Profil

0001-csv-handle-string-filter-criteria.patch

Serghei Mihai (congés, retour 15/05), 24 septembre 2015 13:45

Télécharger (2,87 ko)

Voir les différences:

Subject: [PATCH 1/3] csv: handle string filter criteria

 passerelle/apps/csvdatasource/models.py |  2 ++
 tests/test_csv_datasource.py            | 29 +++++++++++++++++++++++++++--
 2 files changed, 29 insertions(+), 2 deletions(-)
passerelle/apps/csvdatasource/models.py
44 44
        def filter_row(row, titles, filter_criteria):
45 45
            if 'text' in titles:
46 46
                col = titles.index('text')
47
                if not isinstance(filter_criteria, unicode):
48
                    filter_criteria = unicode(filter_criteria, 'utf-8')
47 49
                if filter_criteria not in unicode(row[col], 'utf-8'):
48 50
                    return False
49 51
            return True
tests/test_csv_datasource.py
1
# -*- coding: utf-8 -*-
2

  
1 3
import pytest
2 4
from StringIO import StringIO
3 5

  
......
11 13
620;52156;ARNAUD;Mathis;H
12 14
902;36;BRIGAND;Coline;F
13 15
2179;48548;THEBAULT;Salima;F
14
3420;46;WILSON-LUZAYADIO;Anaelle;F
16
3420;46;WILSON-LUZAYADIO;Anaëlle;F
15 17
1421;55486;WONE;Fadouma;F
16 18
2841;51;FIDJI;Zakia;F
17 19
2431;59;BELICARD;Sacha;H
......
21 23
4135;22231;SAVERIAS;Marius;H
22 24
4809;75;COROLLER;Maelys;F
23 25
5427;117;KANTE;Aliou;H
24
7017;118;ANGELOTTI;Esther;F
25 26
116642;118;ZAHMOUM;Yaniss;H
27
216352;38;Dupont;Benoît;H
26 28
"""
27 29

  
28 30
from csvdatasource.models import CsvDataSource
......
80 82
    result = csv.get_data('Sacha')
81 83
    assert result[0] == {'id': '59', 'text': 'Sacha',
82 84
                         'fam': '2431', 'sexe': 'H'}
85

  
86
def test_unicode_filter_data():
87
    csv = CsvDataSource.objects.create(csv_file=File(StringIO(data), 'data.csv'),
88
                                       columns_keynames=',id,,text,')
89
    filter_criteria = u'noît'
90
    result = csv.get_data(filter_criteria)
91
    assert len(result)
92
    for item in result:
93
        assert 'id' in item
94
        assert 'text' in item
95
        assert filter_criteria in item['text'].decode('utf-8')
96

  
97

  
98
def test_str_filter_data():
99
    csv = CsvDataSource.objects.create(csv_file=File(StringIO(data), 'data.csv'),
100
                                       columns_keynames=',id,,text,')
101
    filter_criteria = 'aëlle'
102
    result = csv.get_data(filter_criteria)
103
    assert len(result)
104
    for item in result:
105
        assert 'id' in item
106
        assert 'text' in item
107
        assert filter_criteria in item['text']
83
-