Change cl_api module (delete class attribute).

develop
Самоукин Алексей 14 years ago
parent a78005fc10
commit 9c08517221

@ -46,7 +46,9 @@ class libVars:
return True return True
class _services(color_print, libVars): class _services(color_print, libVars):
apiObjs = {}
def __init__(self):
self.apiObjs = {}
def getApiClass(self, apiFile): def getApiClass(self, apiFile):
importPath, moduleName = os.path.split(apiFile) importPath, moduleName = os.path.split(apiFile)
@ -153,11 +155,17 @@ class attribute(object):
class _pkgAPI(object): class _pkgAPI(object):
def __init__(self, pkgName): def __init__(self, pkgName):
self._pkgName = pkgName
def __setvar__(self, pkgName):
services = _services() services = _services()
self.var = False
varObj = services.runMethodToPkg(pkgName, 'get_vars') varObj = services.runMethodToPkg(pkgName, 'get_vars')
if varObj: if varObj:
self.var = attribute(varObj) self.var = attribute(varObj)
def __setmethods__(self, pkgName):
services = _services()
pkgObj = services.getPkgApi(pkgName) pkgObj = services.getPkgApi(pkgName)
for attr in dir(pkgObj): for attr in dir(pkgObj):
if not attr.startswith("_") and callable(getattr(pkgObj, attr)) and\ if not attr.startswith("_") and callable(getattr(pkgObj, attr)) and\
@ -165,13 +173,36 @@ class _pkgAPI(object):
setattr(self, attr, getattr(pkgObj, attr)) setattr(self, attr, getattr(pkgObj, attr))
def __getattribute__(self, attr): def __getattribute__(self, attr):
if attr.startswith("__") or attr in ('var','all'): if attr.startswith("__") or attr in ('_pkgName'):
value = object.__getattribute__(self, attr) value = object.__getattribute__(self, attr)
elif attr == 'var':
try:
value = object.__getattribute__(self, attr)
except AttributeError:
pkgName = object.__getattribute__(self, '_pkgName')
self.__setvar__(pkgName)
value = object.__getattribute__(self, attr)
elif attr == 'api':
try:
value = object.__getattribute__(self, attr)
except AttributeError:
services = _services()
pkgName = object.__getattribute__(self, '_pkgName')
value = services.getPkgApi(pkgName)
setattr(self, attr, value)
else: else:
try: try:
value = object.__getattribute__(self,attr)() value = object.__getattribute__(self, attr)()
flagFoundAttr = True
except: except:
raise APIError(_("Can not found method %s")%attr) flagFoundAttr = False
if flagFoundAttr is False:
pkgName = object.__getattribute__(self, '_pkgName')
self.__setmethods__(pkgName)
try:
value = object.__getattribute__(self, attr)()
except:
raise APIError(_("Can not found method %s")%attr)
return value return value
class _allPkg(object): class _allPkg(object):
@ -223,7 +254,7 @@ class _allPkg(object):
listValues = [] listValues = []
for pkgObj in listObi: for pkgObj in listObi:
try: try:
val = object.__getattribute__(pkgObj, attr)() val = getattr(pkgObj, attr)
except Exception, e: except Exception, e:
continue continue
listValues.append(val) listValues.append(val)
@ -234,20 +265,31 @@ class _allPkg(object):
else: else:
return True return True
listValues = filter(lambda x: x, listValues) listValues = filter(lambda x: x, listValues)
listValues = map(lambda x: '1' if x is True else x, listValues) listValues = map(lambda x: '1' if x is True else str(x), listValues)
value = "\n".join(listValues) value = "\n".join(listValues)
object.__setattr__(self, attr, value) object.__setattr__(self, attr, value)
return value return value
class packagesAPI: class packagesAPI(object):
def __init__(self): def __getattribute__(self, attr):
objLibVars = libVars() if attr.startswith("__"):
objLibVars.createClLibVars() value = object.__getattribute__(self, attr)
apiDict = objLibVars.clLibVars.Get('cl_api') else:
listPkgObj = [] try:
for pkgName in apiDict.keys(): value = object.__getattribute__(self, attr)
pkgAPIObj = _pkgAPI(pkgName) flagFoundAttr = True
setattr(self, pkgName.replace('-','_'), pkgAPIObj) except AttributeError:
listPkgObj.append(pkgAPIObj) flagFoundAttr = False
setattr(self, 'all', _allPkg(listPkgObj)) if flagFoundAttr is False:
objLibVars = libVars()
objLibVars.createClLibVars()
apiDict = objLibVars.clLibVars.Get('cl_api')
listPkgObj = []
for pkgName in apiDict.keys():
pkgAPIObj = _pkgAPI(pkgName)
setattr(self, pkgName.replace('-','_'), pkgAPIObj)
listPkgObj.append(pkgAPIObj)
setattr(self, 'all', _allPkg(listPkgObj))
value = object.__getattribute__(self, attr)
return value

Loading…
Cancel
Save