Add kivy helper search file
This commit is contained in:
parent
35a926f604
commit
54059992eb
71
src/bitmessagekivy/kivy_helper_search.py
Normal file
71
src/bitmessagekivy/kivy_helper_search.py
Normal file
|
@ -0,0 +1,71 @@
|
|||
"""
|
||||
Sql queries for bitmessagekivy
|
||||
"""
|
||||
from pybitmessage.helper_sql import sqlQuery
|
||||
|
||||
|
||||
def search_sql(
|
||||
xAddress="toaddress", account=None, folder="inbox", where=None,
|
||||
what=None, unreadOnly=False, start_indx=0, end_indx=20):
|
||||
# pylint: disable=too-many-arguments, too-many-branches
|
||||
"""Method helping for searching mails"""
|
||||
if what is not None and what != "":
|
||||
what = "%" + what + "%"
|
||||
else:
|
||||
what = None
|
||||
if folder in ("sent", "draft"):
|
||||
sqlStatementBase = (
|
||||
'''SELECT toaddress, fromaddress, subject, message, status,'''
|
||||
''' ackdata, senttime FROM sent '''
|
||||
)
|
||||
elif folder == "addressbook":
|
||||
sqlStatementBase = '''SELECT label, address From addressbook '''
|
||||
else:
|
||||
sqlStatementBase = (
|
||||
'''SELECT folder, msgid, toaddress, message, fromaddress,'''
|
||||
''' subject, received, read FROM inbox '''
|
||||
)
|
||||
sqlStatementParts = []
|
||||
sqlArguments = []
|
||||
if account is not None:
|
||||
if xAddress == 'both':
|
||||
sqlStatementParts.append("(fromaddress = ? OR toaddress = ?)")
|
||||
sqlArguments.append(account)
|
||||
sqlArguments.append(account)
|
||||
else:
|
||||
sqlStatementParts.append(xAddress + " = ? ")
|
||||
sqlArguments.append(account)
|
||||
if folder != "addressbook":
|
||||
if folder is not None:
|
||||
if folder == "new":
|
||||
folder = "inbox"
|
||||
unreadOnly = True
|
||||
sqlStatementParts.append("folder = ? ")
|
||||
sqlArguments.append(folder)
|
||||
else:
|
||||
sqlStatementParts.append("folder != ?")
|
||||
sqlArguments.append("trash")
|
||||
if what is not None:
|
||||
for colmns in where:
|
||||
if len(where) > 1:
|
||||
if where[0] == colmns:
|
||||
filter_col = "(%s LIKE ?" % (colmns)
|
||||
else:
|
||||
filter_col += " or %s LIKE ? )" % (colmns)
|
||||
else:
|
||||
filter_col = "%s LIKE ?" % (colmns)
|
||||
sqlArguments.append(what)
|
||||
sqlStatementParts.append(filter_col)
|
||||
if unreadOnly:
|
||||
sqlStatementParts.append("read = 0")
|
||||
if sqlStatementParts:
|
||||
sqlStatementBase += "WHERE " + " AND ".join(sqlStatementParts)
|
||||
if folder in ("sent", "draft"):
|
||||
sqlStatementBase += \
|
||||
"ORDER BY senttime DESC limit {0}, {1}".format(
|
||||
start_indx, end_indx)
|
||||
elif folder == "inbox":
|
||||
sqlStatementBase += \
|
||||
"ORDER BY received DESC limit {0}, {1}".format(
|
||||
start_indx, end_indx)
|
||||
return sqlQuery(sqlStatementBase, sqlArguments)
|
Reference in New Issue
Block a user