Merge branch '1208' into v0.6

This commit is contained in:
Peter Šurda 2018-04-10 08:12:25 +02:00
commit 32ab6aaae5
Signed by untrusted user: PeterSurda
GPG Key ID: 0C5F50C0B5F37D87
3 changed files with 38 additions and 38 deletions

View File

@ -3,9 +3,9 @@
from helper_sql import *
try:
from PyQt4 import QtCore, QtGui
from PyQt4 import QtGui
haveQt = True
except:
except Exception:
haveQt = False
def search_translate (context, text):

View File

@ -1,22 +1,27 @@
"""Helper Sql performs sql operations."""
import threading
import Queue
sqlSubmitQueue = Queue.Queue() #SQLITE3 is so thread-unsafe that they won't even let you call it from different threads using your own locks. SQL objects can only be called from one thread.
sqlSubmitQueue = Queue.Queue()
# SQLITE3 is so thread-unsafe that they won't even let you call it from different threads using your own locks.
# SQL objects #can only be called from one thread.
sqlReturnQueue = Queue.Queue()
sqlLock = threading.Lock()
def sqlQuery(sqlStatement, *args):
"""SQLLITE execute statement and return query."""
sqlLock.acquire()
sqlSubmitQueue.put(sqlStatement)
if args == ():
sqlSubmitQueue.put('')
elif type(args[0]) in [list, tuple]:
elif isinstance(args[0], (list, tuple)):
sqlSubmitQueue.put(args[0])
else:
sqlSubmitQueue.put(args)
queryreturn, rowcount = sqlReturnQueue.get()
queryreturn, _ = sqlReturnQueue.get()
sqlLock.release()
return queryreturn
@ -37,14 +42,14 @@ def sqlExecuteChunked(sqlStatement, idCount, *args):
sqlExecuteChunked.chunkSize - (len(args) - idCount)
):
chunk_slice = args[
i:i+sqlExecuteChunked.chunkSize - (len(args) - idCount)
i:i + sqlExecuteChunked.chunkSize - (len(args) - idCount)
]
sqlSubmitQueue.put(
sqlStatement.format(','.join('?' * len(chunk_slice)))
)
# first static args, and then iterative chunk
sqlSubmitQueue.put(
args[0:len(args)-idCount] + chunk_slice
args[0:len(args) - idCount] + chunk_slice
)
retVal = sqlReturnQueue.get()
totalRowCount += retVal[1]
@ -60,8 +65,7 @@ def sqlExecute(sqlStatement, *args):
sqlSubmitQueue.put('')
else:
sqlSubmitQueue.put(args)
queryreturn, rowcount = sqlReturnQueue.get()
_, rowcount = sqlReturnQueue.get()
sqlSubmitQueue.put('commit')
sqlLock.release()
return rowcount
@ -71,30 +75,24 @@ def sqlStoredProcedure(procName):
sqlSubmitQueue.put(procName)
sqlLock.release()
class SqlBulkExecute:
"""This is used when you have to execute the same statement in a cycle."""
def __enter__(self):
sqlLock.acquire()
return self
def __exit__(self, type, value, traceback):
def __exit__(self, exc_type, value, traceback):
sqlSubmitQueue.put('commit')
sqlLock.release()
def execute(self, sqlStatement, *args):
@staticmethod
def execute(sqlStatement, *args):
"""Used for statements that do not return results."""
sqlSubmitQueue.put(sqlStatement)
if args == ():
sqlSubmitQueue.put('')
else:
sqlSubmitQueue.put(args)
sqlReturnQueue.get()
def query(self, sqlStatement, *args):
sqlSubmitQueue.put(sqlStatement)
if args == ():
sqlSubmitQueue.put('')
else:
sqlSubmitQueue.put(args)
return sqlReturnQueue.get()

View File

@ -1,11 +1,10 @@
"""Helper Start performs all the startup operations."""
import ConfigParser
from bmconfigparser import BMConfigParser
import defaults
import sys
import os
import locale
import random
import string
import platform
from distutils.version import StrictVersion
@ -14,7 +13,10 @@ import paths
import state
import helper_random
storeConfigFilesInSameDirectoryAsProgramByDefault = False # The user may de-select Portable Mode in the settings if they want the config files to stay in the application data folder.
StoreConfigFilesInSameDirectoryAsProgramByDefault = False
# The user may de-select Portable Mode in the settings if they want the config
# files to stay in the application data folder.
def _loadTrustedPeer():
try:
@ -27,15 +29,16 @@ def _loadTrustedPeer():
host, port = trustedPeer.split(':')
state.trustedPeer = state.Peer(host, int(port))
def loadConfig():
if state.appdata:
BMConfigParser().read(state.appdata + 'keys.dat')
#state.appdata must have been specified as a startup option.
# state.appdata must have been specified as a startup option.
try:
BMConfigParser().get('bitmessagesettings', 'settingsversion')
print 'Loading config files from directory specified on startup: ' + state.appdata
needToCreateKeysFile = False
except:
except Exception:
needToCreateKeysFile = True
else:
@ -45,16 +48,16 @@ def loadConfig():
print 'Loading config files from same directory as program.'
needToCreateKeysFile = False
state.appdata = paths.lookupExeFolder()
except:
# Could not load the keys.dat file in the program directory. Perhaps it
# is in the appdata directory.
except Exception:
# Could not load the keys.dat file in the program directory.
# Perhaps it is in the appdata directory.
state.appdata = paths.lookupAppdataFolder()
BMConfigParser().read(state.appdata + 'keys.dat')
try:
BMConfigParser().get('bitmessagesettings', 'settingsversion')
print 'Loading existing config files from', state.appdata
needToCreateKeysFile = False
except:
except Exception:
needToCreateKeysFile = True
if needToCreateKeysFile:
@ -110,7 +113,6 @@ def loadConfig():
BMConfigParser().set('bitmessagesettings', 'maxuploadrate', '0')
BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', '8')
BMConfigParser().set('bitmessagesettings', 'ttl', '367200')
#start:UI setting to stop trying to send messages after X days/months
BMConfigParser().set(
'bitmessagesettings', 'stopresendingafterxdays', '')
@ -128,7 +130,7 @@ def loadConfig():
ensureNamecoinOptions()
if storeConfigFilesInSameDirectoryAsProgramByDefault:
if StoreConfigFilesInSameDirectoryAsProgramByDefault:
# Just use the same directory as the program and forget about
# the appdata folder
state.appdata = ''
@ -145,9 +147,9 @@ def loadConfig():
def isOurOperatingSystemLimitedToHavingVeryFewHalfOpenConnections():
try:
if sys.platform[0:3]=="win":
VER_THIS=StrictVersion(platform.version())
if sys.platform[0:3] == "win":
VER_THIS = StrictVersion(platform.version())
return StrictVersion("5.1.2600")<=VER_THIS and StrictVersion("6.0.6000")>=VER_THIS
return False
except Exception as err:
except Exception:
return False