Upgrade Peewee to latest 3.x
This requires a number of small changes in the data model code, as well as additional testing.
This commit is contained in:
parent
70b7ee4654
commit
d3d9cca182
26 changed files with 220 additions and 193 deletions
11
data/text.py
11
data/text.py
|
@ -1,4 +1,4 @@
|
|||
from peewee import Clause, SQL, fn, TextField, Field
|
||||
from peewee import NodeList, SQL, fn, TextField, Field
|
||||
|
||||
def _escape_wildcard(search_query):
|
||||
""" Escapes the wildcards found in the given search query so that they are treated as *characters*
|
||||
|
@ -16,7 +16,7 @@ def prefix_search(field, prefix_query):
|
|||
""" Returns the wildcard match for searching for the given prefix query. """
|
||||
# Escape the known wildcard characters.
|
||||
prefix_query = _escape_wildcard(prefix_query)
|
||||
return Field.__pow__(field, Clause(prefix_query + '%', SQL("ESCAPE '!'")))
|
||||
return Field.__pow__(field, NodeList((prefix_query + '%', SQL("ESCAPE '!'"))))
|
||||
|
||||
|
||||
def match_mysql(field, search_query):
|
||||
|
@ -29,14 +29,13 @@ def match_mysql(field, search_query):
|
|||
# queries of the form `*` to raise a parsing error. If found, simply filter out.
|
||||
search_query = search_query.replace('*', '')
|
||||
|
||||
return Clause(fn.MATCH(SQL("`%s`" % field.name)), fn.AGAINST(SQL('%s', search_query)),
|
||||
parens=True)
|
||||
|
||||
return NodeList((fn.MATCH(SQL("`%s`" % field.name)), fn.AGAINST(SQL('%s', [search_query]))),
|
||||
parens=True)
|
||||
|
||||
def match_like(field, search_query):
|
||||
""" Generates a full-text match query using an ILIKE operation, which is needed for SQLite and
|
||||
Postgres.
|
||||
"""
|
||||
escaped_query = _escape_wildcard(search_query)
|
||||
clause = Clause('%' + escaped_query + '%', SQL("ESCAPE '!'"))
|
||||
clause = NodeList(('%' + escaped_query + '%', SQL("ESCAPE '!'")))
|
||||
return Field.__pow__(field, clause)
|
||||
|
|
Reference in a new issue