pyTSLPy/pyTSLPy.py

176 lines
3.9 KiB
Python

# coding: utf8
import pyTSL
import datetime
import configparser
connectConfig = {}
defaultConnection = None
connectConfigFile = None
def SetConnectConfig(fn):
global connectConfigFile
connectConfigFile = fn
def connectOptions(alias):
global connectConfigFile
if connectConfigFile:
f = connectConfigFile
else:
f = 'tslclient.ini'
config = configparser.ConfigParser()
config.read(f)
if alias in config:
return config[alias]
return {}
def DefaultConnectAndLogin(alias):
global defaultConnection
opts = connectOptions(alias)
if opts:
defaultConnection = pyTSL.Client(
opts['LoginName']
, opts['LoginPass']
, opts['Address']
, int(opts['Port'])
)
if defaultConnection.login():
return 0, ''
else:
return defaultConnection.last_error()
def ConnectServer(host, port, proxy={}):
global connectConfig
connectConfig['host'] = host
connectConfig['port'] = port
connectConfig['proxy'] = proxy
def LoginServer(user, passwd):
global defaultConnection
host = connectConfig['host']
port = connectConfig['port']
defaultConnection = pyTSL.Client(user, passwd, host, port)
if defaultConnection.login():
return 0, ''
else:
return defaultConnection.last_error()
def Disconnect():
global defaultConnection
if defaultConnection:
defaultConnection.logout()
def Logined():
global defaultConnection
if defaultConnection:
return defaultConnection.login()
return 0
def SetService(service):
global defaultConnection
if defaultConnection:
defaultConnection.default_service(service)
def SetComputeBitsOption(opt):
pass
def GetComputeBitsOption():
pass
def GetService():
global defaultConnection
if defaultConnection:
defaultConnection.default_service()
def parse_params(params):
pp = {}
if 'StockID' in params:
pp['stock'] = params['StockID']
if 'Cycle' in params:
pp['cycle'] = params['Cycle']
if 'CurrentDate' in params:
pp['time'] = params['CurrentDate']
if 'bRate' in params:
pp['rate'] = params['bRate']
if 'RateDay' in params:
pp['rateday'] = params['RateDay']
if 'nDay' in params:
pp['nday'] = params['nDay']
if 'Precision' in params:
pp['precision'] = params['Precision']
if 'ReportMode' in params:
pp['reportmode'] = params['ReportMode']
if 'EmptyMode' in params:
pp['emptymode'] = params['EmptyMode']
if 'viewpoint' in params:
pp['viewpoint'] = params['viewpoint']
return pp
def RemoteExecute(script, params):
global defaultConnection
if defaultConnection:
pp = parse_params(params)
r = defaultConnection.exec(script, **pp)
return r.error(), r.value()
return -1, '连接错误'
def RemoteCallFunc(func, args, params):
global defaultConnection
if defaultConnection:
pp = parse_params(params)
r = defaultConnection.clas(func, *args, **pp)
return r.error(), r.value()
return -1, '连接错误'
def SetSysParam():
assert 0
def GetSysParam():
assert 0
def EncodeDate(y, m, d):
return pyTSL.DatetimeToDouble(datetime.datetime(y, m, d))
def EncodeTime(h, m, s, ss):
return h / 24.0 + m / 24.0 / 60.0 + s / 24.0 / 3600.0 + ss / 24.0 / 3600000.0
def EncodeDateTime(Y, M, D, h, m, s, ss):
return pyTSL.DatetimeToDouble(datetime.datetime(Y, M, D, h, m, s, ss * 1000))
def DecodeDate(dt):
d = pyTSL.DoubleToDatetime(dt)
return d.year, d.month, d.day
def DecodeTime(dt):
d = pyTSL.DoubleToDatetime(dt)
return d.hour, d.minute, d.second, d.microsecond * 1000
def DecodeDateTime(dt):
d = pyTSL.DoubleToDatetime(dt)
return d.year, d.month, d.day, d.hour, d.minute, d.second, d.microsecond * 1000
if __name__ == '__main__':
pass