Projet

Général

Profil

0001-misc-add-evolution-messages-to-fulltext-search-22651.patch

Frédéric Péters, 31 décembre 2018 14:46

Télécharger (4,43 ko)

Voir les différences:

Subject: [PATCH] misc: add evolution messages to fulltext search (#22651)

 tests/test_sql.py  | 20 +++++++++++++++++++-
 wcs/qommon/misc.py |  7 +++++++
 wcs/sql.py         |  8 +++++++-
 3 files changed, 33 insertions(+), 2 deletions(-)
tests/test_sql.py
18 18
from wcs.roles import Role
19 19
from wcs.workflows import Workflow, CommentableWorkflowStatusItem, WorkflowCriticalityLevel
20 20
from wcs.wf.jump import JumpWorkflowStatusItem
21
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
21 22
from wcs import sql
22 23
import wcs.qommon.storage as st
23 24

  
......
912 913
            t.data = {'3': 'foo'}
913 914
        else:
914 915
            t.data = {'3': 'bar'}
916
        t.just_created()
915 917
        t.store()
916
    t.store()
917 918

  
918 919
    assert data_class.count() == 50
919 920
    assert len(data_class.select()) == 50
920 921

  
921 922
    assert [x.id for x in data_class.select([st.FtsMatch('BAR')], order_by='id')] == range(21, 51)
922 923

  
924
    # check fts against data in history
925
    assert len(data_class.select([st.FtsMatch('XXX')])) == 0
926
    formdata1 = data_class.select([st.FtsMatch('BAR')])[0]
927
    formdata1.evolution[0].comment = 'XXX'
928
    formdata1.store()
929
    assert len(data_class.select([st.FtsMatch('XXX')])) == 1
930
    assert data_class.select([st.FtsMatch('XXX')])[0].id == formdata1.id
931

  
932
    assert len(data_class.select([st.FtsMatch('yyy')])) == 0
933
    item = RegisterCommenterWorkflowStatusItem()
934
    item.comment = '<span>ÿÿÿ</span>'
935
    item.perform(formdata1)
936
    assert formdata1.evolution[-1].display_parts()[-1] == '<span>ÿÿÿ</span>'
937
    formdata1.store()
938
    assert len(data_class.select([st.FtsMatch('yyy')])) == 1
939
    assert len(data_class.select([st.FtsMatch('span')])) == 0
940

  
923 941
    assert data_class.count([st.FtsMatch('Pierre')]) == 0
924 942
    sql.SqlUser.wipe()
925 943
    user = sql.SqlUser()
wcs/qommon/misc.py
37 37

  
38 38
from django.conf import settings
39 39
from django.utils import datetime_safe
40
from django.utils.html import strip_tags
40 41
from django.template import engines, TemplateSyntaxError, VariableDoesNotExist
42
from django.utils.six.moves.html_parser import HTMLParser
41 43

  
42 44
from quixote import get_publisher, get_response, get_request
43 45
from quixote.html import htmltext
......
611 613
    lat = wrap(lat, decimal.Decimal('-90.0'), decimal.Decimal('90.0'))
612 614
    lon = wrap(lon, decimal.Decimal('-180.0'), decimal.Decimal('180.0'))
613 615
    return {'lat': float(lat), 'lon': float(lon)}
616

  
617
def html2text(text):
618
    if isinstance(text, (htmltext, str)):
619
        text = unicode(str(text), get_publisher().site_charset)
620
    return site_encode(HTMLParser().unescape(strip_tags(text)))
wcs/sql.py
1424 1424
            for evo in self._evolution:
1425 1425
                if evo.comment:
1426 1426
                    fts_strings.append(evo.comment)
1427
                for part in evo.parts or []:
1428
                    if hasattr(part, 'view'):
1429
                        html_part = part.view()
1430
                        if html_part:
1431
                            fts_strings.append(qommon.misc.html2text(html_part))
1427 1432
        user = self.get_user()
1428 1433
        if user:
1429 1434
            fts_strings.append(user.get_display_name())
......
2155 2160
    return result
2156 2161

  
2157 2162

  
2158
SQL_LEVEL = 28
2163
SQL_LEVEL = 29
2159 2164

  
2160 2165
def migrate_global_views(conn, cur):
2161 2166
    cur.execute('''SELECT COUNT(*) FROM information_schema.tables
......
2263 2268
        # 21: (third part), add user ascii_names to full-text index
2264 2269
        # 23: (second part) use misc.simplify() over full text queries
2265 2270
        # 28: add display id and formdef name to full-text index
2271
        # 29: add evolution parts to full-text index
2266 2272
        set_reindex('formdata', 'needed', conn=conn, cur=cur)
2267 2273
    if sql_level < 24:
2268 2274
        from wcs.formdef import FormDef
2269
-