Merge branch '1208' into v0.6
This commit is contained in:
commit
32ab6aaae5
|
@ -3,9 +3,9 @@
|
||||||
from helper_sql import *
|
from helper_sql import *
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtGui
|
||||||
haveQt = True
|
haveQt = True
|
||||||
except:
|
except Exception:
|
||||||
haveQt = False
|
haveQt = False
|
||||||
|
|
||||||
def search_translate (context, text):
|
def search_translate (context, text):
|
||||||
|
|
|
@ -1,22 +1,27 @@
|
||||||
|
"""Helper Sql performs sql operations."""
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import Queue
|
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()
|
sqlReturnQueue = Queue.Queue()
|
||||||
sqlLock = threading.Lock()
|
sqlLock = threading.Lock()
|
||||||
|
|
||||||
|
|
||||||
def sqlQuery(sqlStatement, *args):
|
def sqlQuery(sqlStatement, *args):
|
||||||
|
"""SQLLITE execute statement and return query."""
|
||||||
sqlLock.acquire()
|
sqlLock.acquire()
|
||||||
sqlSubmitQueue.put(sqlStatement)
|
sqlSubmitQueue.put(sqlStatement)
|
||||||
|
|
||||||
if args == ():
|
if args == ():
|
||||||
sqlSubmitQueue.put('')
|
sqlSubmitQueue.put('')
|
||||||
elif type(args[0]) in [list, tuple]:
|
elif isinstance(args[0], (list, tuple)):
|
||||||
sqlSubmitQueue.put(args[0])
|
sqlSubmitQueue.put(args[0])
|
||||||
else:
|
else:
|
||||||
sqlSubmitQueue.put(args)
|
sqlSubmitQueue.put(args)
|
||||||
|
queryreturn, _ = sqlReturnQueue.get()
|
||||||
queryreturn, rowcount = sqlReturnQueue.get()
|
|
||||||
sqlLock.release()
|
sqlLock.release()
|
||||||
|
|
||||||
return queryreturn
|
return queryreturn
|
||||||
|
@ -37,14 +42,14 @@ def sqlExecuteChunked(sqlStatement, idCount, *args):
|
||||||
sqlExecuteChunked.chunkSize - (len(args) - idCount)
|
sqlExecuteChunked.chunkSize - (len(args) - idCount)
|
||||||
):
|
):
|
||||||
chunk_slice = args[
|
chunk_slice = args[
|
||||||
i:i+sqlExecuteChunked.chunkSize - (len(args) - idCount)
|
i:i + sqlExecuteChunked.chunkSize - (len(args) - idCount)
|
||||||
]
|
]
|
||||||
sqlSubmitQueue.put(
|
sqlSubmitQueue.put(
|
||||||
sqlStatement.format(','.join('?' * len(chunk_slice)))
|
sqlStatement.format(','.join('?' * len(chunk_slice)))
|
||||||
)
|
)
|
||||||
# first static args, and then iterative chunk
|
# first static args, and then iterative chunk
|
||||||
sqlSubmitQueue.put(
|
sqlSubmitQueue.put(
|
||||||
args[0:len(args)-idCount] + chunk_slice
|
args[0:len(args) - idCount] + chunk_slice
|
||||||
)
|
)
|
||||||
retVal = sqlReturnQueue.get()
|
retVal = sqlReturnQueue.get()
|
||||||
totalRowCount += retVal[1]
|
totalRowCount += retVal[1]
|
||||||
|
@ -60,8 +65,7 @@ def sqlExecute(sqlStatement, *args):
|
||||||
sqlSubmitQueue.put('')
|
sqlSubmitQueue.put('')
|
||||||
else:
|
else:
|
||||||
sqlSubmitQueue.put(args)
|
sqlSubmitQueue.put(args)
|
||||||
|
_, rowcount = sqlReturnQueue.get()
|
||||||
queryreturn, rowcount = sqlReturnQueue.get()
|
|
||||||
sqlSubmitQueue.put('commit')
|
sqlSubmitQueue.put('commit')
|
||||||
sqlLock.release()
|
sqlLock.release()
|
||||||
return rowcount
|
return rowcount
|
||||||
|
@ -71,30 +75,24 @@ def sqlStoredProcedure(procName):
|
||||||
sqlSubmitQueue.put(procName)
|
sqlSubmitQueue.put(procName)
|
||||||
sqlLock.release()
|
sqlLock.release()
|
||||||
|
|
||||||
|
|
||||||
class SqlBulkExecute:
|
class SqlBulkExecute:
|
||||||
|
"""This is used when you have to execute the same statement in a cycle."""
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
sqlLock.acquire()
|
sqlLock.acquire()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, type, value, traceback):
|
def __exit__(self, exc_type, value, traceback):
|
||||||
sqlSubmitQueue.put('commit')
|
sqlSubmitQueue.put('commit')
|
||||||
sqlLock.release()
|
sqlLock.release()
|
||||||
|
|
||||||
def execute(self, sqlStatement, *args):
|
@staticmethod
|
||||||
|
def execute(sqlStatement, *args):
|
||||||
|
"""Used for statements that do not return results."""
|
||||||
sqlSubmitQueue.put(sqlStatement)
|
sqlSubmitQueue.put(sqlStatement)
|
||||||
|
|
||||||
if args == ():
|
if args == ():
|
||||||
sqlSubmitQueue.put('')
|
sqlSubmitQueue.put('')
|
||||||
else:
|
else:
|
||||||
sqlSubmitQueue.put(args)
|
sqlSubmitQueue.put(args)
|
||||||
sqlReturnQueue.get()
|
sqlReturnQueue.get()
|
||||||
|
|
||||||
def query(self, sqlStatement, *args):
|
|
||||||
sqlSubmitQueue.put(sqlStatement)
|
|
||||||
|
|
||||||
if args == ():
|
|
||||||
sqlSubmitQueue.put('')
|
|
||||||
else:
|
|
||||||
sqlSubmitQueue.put(args)
|
|
||||||
return sqlReturnQueue.get()
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
|
"""Helper Start performs all the startup operations."""
|
||||||
|
|
||||||
import ConfigParser
|
import ConfigParser
|
||||||
from bmconfigparser import BMConfigParser
|
from bmconfigparser import BMConfigParser
|
||||||
import defaults
|
import defaults
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import locale
|
|
||||||
import random
|
|
||||||
import string
|
|
||||||
import platform
|
import platform
|
||||||
from distutils.version import StrictVersion
|
from distutils.version import StrictVersion
|
||||||
|
|
||||||
|
@ -14,7 +13,10 @@ import paths
|
||||||
import state
|
import state
|
||||||
import helper_random
|
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():
|
def _loadTrustedPeer():
|
||||||
try:
|
try:
|
||||||
|
@ -27,15 +29,16 @@ def _loadTrustedPeer():
|
||||||
host, port = trustedPeer.split(':')
|
host, port = trustedPeer.split(':')
|
||||||
state.trustedPeer = state.Peer(host, int(port))
|
state.trustedPeer = state.Peer(host, int(port))
|
||||||
|
|
||||||
|
|
||||||
def loadConfig():
|
def loadConfig():
|
||||||
if state.appdata:
|
if state.appdata:
|
||||||
BMConfigParser().read(state.appdata + 'keys.dat')
|
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:
|
try:
|
||||||
BMConfigParser().get('bitmessagesettings', 'settingsversion')
|
BMConfigParser().get('bitmessagesettings', 'settingsversion')
|
||||||
print 'Loading config files from directory specified on startup: ' + state.appdata
|
print 'Loading config files from directory specified on startup: ' + state.appdata
|
||||||
needToCreateKeysFile = False
|
needToCreateKeysFile = False
|
||||||
except:
|
except Exception:
|
||||||
needToCreateKeysFile = True
|
needToCreateKeysFile = True
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -45,16 +48,16 @@ def loadConfig():
|
||||||
print 'Loading config files from same directory as program.'
|
print 'Loading config files from same directory as program.'
|
||||||
needToCreateKeysFile = False
|
needToCreateKeysFile = False
|
||||||
state.appdata = paths.lookupExeFolder()
|
state.appdata = paths.lookupExeFolder()
|
||||||
except:
|
except Exception:
|
||||||
# Could not load the keys.dat file in the program directory. Perhaps it
|
# Could not load the keys.dat file in the program directory.
|
||||||
# is in the appdata directory.
|
# Perhaps it is in the appdata directory.
|
||||||
state.appdata = paths.lookupAppdataFolder()
|
state.appdata = paths.lookupAppdataFolder()
|
||||||
BMConfigParser().read(state.appdata + 'keys.dat')
|
BMConfigParser().read(state.appdata + 'keys.dat')
|
||||||
try:
|
try:
|
||||||
BMConfigParser().get('bitmessagesettings', 'settingsversion')
|
BMConfigParser().get('bitmessagesettings', 'settingsversion')
|
||||||
print 'Loading existing config files from', state.appdata
|
print 'Loading existing config files from', state.appdata
|
||||||
needToCreateKeysFile = False
|
needToCreateKeysFile = False
|
||||||
except:
|
except Exception:
|
||||||
needToCreateKeysFile = True
|
needToCreateKeysFile = True
|
||||||
|
|
||||||
if needToCreateKeysFile:
|
if needToCreateKeysFile:
|
||||||
|
@ -110,7 +113,6 @@ def loadConfig():
|
||||||
BMConfigParser().set('bitmessagesettings', 'maxuploadrate', '0')
|
BMConfigParser().set('bitmessagesettings', 'maxuploadrate', '0')
|
||||||
BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', '8')
|
BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', '8')
|
||||||
BMConfigParser().set('bitmessagesettings', 'ttl', '367200')
|
BMConfigParser().set('bitmessagesettings', 'ttl', '367200')
|
||||||
|
|
||||||
#start:UI setting to stop trying to send messages after X days/months
|
#start:UI setting to stop trying to send messages after X days/months
|
||||||
BMConfigParser().set(
|
BMConfigParser().set(
|
||||||
'bitmessagesettings', 'stopresendingafterxdays', '')
|
'bitmessagesettings', 'stopresendingafterxdays', '')
|
||||||
|
@ -128,7 +130,7 @@ def loadConfig():
|
||||||
|
|
||||||
ensureNamecoinOptions()
|
ensureNamecoinOptions()
|
||||||
|
|
||||||
if storeConfigFilesInSameDirectoryAsProgramByDefault:
|
if StoreConfigFilesInSameDirectoryAsProgramByDefault:
|
||||||
# Just use the same directory as the program and forget about
|
# Just use the same directory as the program and forget about
|
||||||
# the appdata folder
|
# the appdata folder
|
||||||
state.appdata = ''
|
state.appdata = ''
|
||||||
|
@ -145,9 +147,9 @@ def loadConfig():
|
||||||
|
|
||||||
def isOurOperatingSystemLimitedToHavingVeryFewHalfOpenConnections():
|
def isOurOperatingSystemLimitedToHavingVeryFewHalfOpenConnections():
|
||||||
try:
|
try:
|
||||||
if sys.platform[0:3]=="win":
|
if sys.platform[0:3] == "win":
|
||||||
VER_THIS=StrictVersion(platform.version())
|
VER_THIS = StrictVersion(platform.version())
|
||||||
return StrictVersion("5.1.2600")<=VER_THIS and StrictVersion("6.0.6000")>=VER_THIS
|
return StrictVersion("5.1.2600")<=VER_THIS and StrictVersion("6.0.6000")>=VER_THIS
|
||||||
return False
|
return False
|
||||||
except Exception as err:
|
except Exception:
|
||||||
return False
|
return False
|
||||||
|
|
Reference in New Issue
Block a user