0001-misc-add-evolution-messages-to-fulltext-search-22651.patch
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 |
- |