all changelogs should be utf-8

This commit is contained in:
j 2019-02-23 17:11:50 +05:30
parent b3246f05db
commit 7ee959cd11
3 changed files with 27 additions and 3 deletions

View file

@ -446,7 +446,7 @@ class Changelog(db.Model):
listitems = data[2] listitems = data[2]
#remove from additemlists #remove from additemlists
removed = [] removed = []
if list_id in changes.get('addlistitems',{}): if list_id in changes.get('addlistitems', {}):
removed = [ removed = [
i for i in changes['addlistitems'][list_id] if i in listitems i for i in changes['addlistitems'][list_id] if i in listitems
] ]

View file

@ -95,4 +95,4 @@ FULLTEXT_SUPPORT = fulltext.platform_supported()
if not FULLTEXT_SUPPORT: if not FULLTEXT_SUPPORT:
config['itemKeys'] = [k for k in config['itemKeys'] if k['id'] != 'fulltext'] config['itemKeys'] = [k for k in config['itemKeys'] if k['id'] != 'fulltext']
DB_VERSION = 19 DB_VERSION = 20

View file

@ -381,6 +381,8 @@ class Update(Thread):
db_version = migrate_18() db_version = migrate_18()
if db_version < 19: if db_version < 19:
db_version = migrate_19() db_version = migrate_19()
if db_version < 20:
db_version = migrate_20()
settings.server['db_version'] = db_version settings.server['db_version'] = db_version
def run(self): def run(self):
@ -710,5 +712,27 @@ def migrate_19():
peer = utils.get_peer(u.id) peer = utils.get_peer(u.id)
if not peer.info.get('revision') and os.path.exists(peer._logpath) and os.path.getsize(peer._logpath): if not peer.info.get('revision') and os.path.exists(peer._logpath) and os.path.getsize(peer._logpath):
logger.debug('try to apply pending logs for %s', u.id) logger.debug('try to apply pending logs for %s', u.id)
try:
peer.apply_log() peer.apply_log()
except:
logger.error('failed to apply log for %s', u.id)
return 19 return 19
def migrate_20():
from glob import glob
changed = False
for log in glob(os.path.join(settings.data_path, 'peers', '*.log')):
with open(log, 'rb') as fd:
data = fd.read()
try:
data.decode('utf-8')
except UnicodeDecodeError:
data = data.decode('Windows-1252')
logger.error('convert %s to utf-8', log)
with open(log, 'wb') as fd:
fd.write(data.encode('utf-8'))
changed = True
if changed:
migrate_19()
return 20