fix one of database compatibility problems; others remained

This commit is contained in:
Kashiko Koibumi 2024-05-30 02:10:02 +09:00
parent e5c065416f
commit c39dd18212
No known key found for this signature in database
GPG Key ID: 8F06E069E37C40C4
2 changed files with 36 additions and 4 deletions

View File

@ -16,6 +16,10 @@ from datetime import datetime, timedelta
from sqlite3 import register_adapter from sqlite3 import register_adapter
import six import six
from six.moves import range as xrange from six.moves import range as xrange
if six.PY3:
from codecs import escape_decode
if six.PY2:
import sqlite3
from unqstr import ustr, unic from unqstr import ustr, unic
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
@ -2943,7 +2947,15 @@ class MyForm(settingsmixin.SMainWindow):
if not msgid: if not msgid:
return return
queryreturn = sqlQuery( queryreturn = sqlQuery(
'''select message from inbox where msgid=?''', msgid) 'SELECT message FROM inbox WHERE msgid=?', msgid)
# for compatibility
if len(queryreturn) < 1:
if six.PY3:
queryreturn = sqlQuery(
'SELECT message FROM inbox WHERE msgid=CAST(? AS TEXT)', msgid)
else: # assume six.PY2
queryreturn = sqlQuery(
'SELECT message FROM inbox WHERE msgid=?', sqlite3.Binary(msgid))
if queryreturn != []: if queryreturn != []:
for row in queryreturn: for row in queryreturn:
messageText, = row messageText, = row
@ -3603,7 +3615,11 @@ class MyForm(settingsmixin.SMainWindow):
if messagelist: if messagelist:
currentRow = messagelist.currentRow() currentRow = messagelist.currentRow()
if currentRow >= 0: if currentRow >= 0:
return messagelist.item(currentRow, 3).data() msgid_str = messagelist.item(currentRow, 3).data()
if six.PY3:
return escape_decode(msgid_str)[0][2:-1]
else: # assume six.PY2
return msgid_str
def getCurrentMessageTextedit(self): def getCurrentMessageTextedit(self):
currentIndex = self.ui.tabWidget.currentIndex() currentIndex = self.ui.tabWidget.currentIndex()
@ -4147,11 +4163,27 @@ class MyForm(settingsmixin.SMainWindow):
folder = self.getCurrentFolder() folder = self.getCurrentFolder()
if msgid: if msgid:
queryreturn = sqlQuery( queryreturn = sqlQuery(
'''SELECT message FROM %s WHERE %s=?''' % ( 'SELECT message FROM %s WHERE %s=?' % (
('sent', 'ackdata') if folder == 'sent' ('sent', 'ackdata') if folder == 'sent'
else ('inbox', 'msgid') else ('inbox', 'msgid')
), msgid ), msgid
) )
# for compatibility
if len(queryreturn) < 1:
if six.PY3:
queryreturn = sqlQuery(
'SELECT message FROM %s WHERE %s=CAST(? AS TEXT)' % (
('sent', 'ackdata') if folder == 'sent'
else ('inbox', 'msgid')
), msgid
)
else: # assume six.PY2
queryreturn = sqlQuery(
'SELECT message FROM %s WHERE %s=?' % (
('sent', 'ackdata') if folder == 'sent'
else ('inbox', 'msgid')
), sqlite3.Binary(msgid)
)
try: try:
message = queryreturn[-1][0] message = queryreturn[-1][0]

View File

@ -478,7 +478,7 @@ class MessageList_TimeWidget(BMTableWidgetItem):
def __init__(self, label=None, unread=False, timestamp=None, msgid=b''): def __init__(self, label=None, unread=False, timestamp=None, msgid=b''):
super(MessageList_TimeWidget, self).__init__(label, unread) super(MessageList_TimeWidget, self).__init__(label, unread)
self.setData(QtCore.Qt.UserRole, QtCore.QByteArray(msgid)) self.setData(QtCore.Qt.UserRole, QtCore.QByteArray(bytes(msgid)))
self.setData(TimestampRole, int(timestamp)) self.setData(TimestampRole, int(timestamp))
def __lt__(self, other): def __lt__(self, other):