本文整理匯總了Python中rapuma.core.tools.Tools.getXMLSettings方法的典型用法代碼示例。如果您正苦於以下問題:Python Tools.getXMLSettings方法的具體用法?Python Tools.getXMLSettings怎麽用?Python Tools.getXMLSettings使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rapuma.core.tools.Tools
的用法示例。
在下文中一共展示了Tools.getXMLSettings方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: Config
# 需要導入模塊: from rapuma.core.tools import Tools [as 別名]
# 或者: from rapuma.core.tools.Tools import getXMLSettings [as 別名]
#.........這裏部分代碼省略.........
'''Load/return the layout configuation object.'''
self.layoutConfig = self.tools.loadConfig(self.local.layoutConfFile, self.local.layoutConfXmlFile)
def getIllustrationConfig (self) :
'''Load/return the illustration configuation object.'''
self.illustrationConfig = self.tools.loadConfig(self.local.illustrationConfFile, self.local.illustrationConfXmlFile)
def getFontConfig (self) :
'''Load/return the font configuation object.'''
self.fontConfig = self.tools.loadConfig(self.local.fontConfFile, self.local.fontConfXmlFile)
def getMacroConfig (self) :
'''Load/return the macro configuration object.'''
self.macroConfig = self.tools.loadConfig(self.local.macroConfFile, self.local.macroConfXmlFile)
###############################################################################
############################ Manager Level Functions ##########################
###############################################################################
####################### Error Code Block Series = 1000 ########################
###############################################################################
def makeNewprojectConf (self, local, pid, cVersion, pmid='book') :
'''Create a new project configuration file for a new project.'''
self.projectConfig = ConfigObj(self.tools.getXMLSettings(os.path.join(local.rapumaConfigFolder, pmid + '.xml')), encoding='utf-8')
# Insert intitial project settings
self.projectConfig['ProjectInfo']['projectMediaIDCode'] = pmid
self.projectConfig['ProjectInfo']['creatorID'] = self.userConfig['System']['userID']
self.projectConfig['ProjectInfo']['projectCreatorVersion'] = cVersion
self.projectConfig['ProjectInfo']['projectCreateDate'] = self.tools.tStamp()
self.projectConfig['ProjectInfo']['projectIDCode'] = pid
self.projectConfig['Backup']['ownerID'] = self.userConfig['System']['userID']
self.projectConfig['Groups'] = {}
# Even though there was no push, we need a time stamp to avoid confusion
self.projectConfig['Backup']['lastCloudPush'] = self.tools.fullFileTimeStamp()
self.projectConfig.filename = local.projectConfFile
self.projectConfig.write()
###############################################################################
######################## Basic Config Handling Functions ######################
###############################################################################
####################### Error Code Block Series = 2000 ########################
###############################################################################
def processSinglePlaceholder (self, ph, value) :
'''Once we are sure we have a single placeholder (noting embedded) this
will process it and replace it with the correct value.'''
holderType = ph.split(':')[0]
try :
holderKey = ph.split(':')[1]
except :
holderKey = ''
if self.hasPlaceHolder(value):
示例2: Project
# 需要導入模塊: from rapuma.core.tools import Tools [as 別名]
# 或者: from rapuma.core.tools.Tools import getXMLSettings [as 別名]
class Project (object) :
def __init__(self, pid, gid) :
'''Instantiate this class.'''
self.pid = pid
self.gid = gid
self.user = UserConfig()
self.userConfig = self.user.userConfig
self.projHome = os.path.join(os.environ['RAPUMA_PROJECTS'], self.pid)
self.config = Config(self.pid)
self.config.getProjectConfig()
self.projectConfig = self.config.projectConfig
self.cType = self.projectConfig['Groups'][self.gid]['cType']
self.Ctype = self.cType.capitalize()
self.local = ProjLocal(pid, gid, self.cType)
self.log = ProjLog(self.pid)
self.tools = Tools()
self.groups = {}
self.components = {}
self.managers = {}
self.projectMediaIDCode = self.projectConfig['ProjectInfo']['projectMediaIDCode']
self.projectIDCode = self.projectConfig['ProjectInfo']['projectIDCode']
self.projectName = self.projectConfig['ProjectInfo']['projectTitle']
self.plid = self.projectConfig['ProjectInfo']['languageCode']
self.psid = self.projectConfig['ProjectInfo']['scriptCode']
# The gid cannot generally be set yet but we will make a placeholder
# for it here and the functions below will set it. (I'm just say'n)
# import pdb; pdb.set_trace()
m = import_module('rapuma.manager.' + self.projectMediaIDCode)
self.__class__ = getattr(m, self.projectMediaIDCode[0].upper() + self.projectMediaIDCode[1:])
# Update the existing config file with the project type XML file
# if needed
newXmlDefaults = os.path.join(self.local.rapumaConfigFolder, self.projectMediaIDCode + '.xml')
xmlConfig = self.tools.getXMLSettings(newXmlDefaults)
newConf = ConfigObj(xmlConfig.dict(), encoding='utf-8').override(self.projectConfig)
for s,v in self.projectConfig.items() :
if s not in newConf :
newConf[s] = v
# Replace with new conf if new is different from old
# Rem new conf doesn't have a filename, give it one
if self.projectConfig != newConf :
self.projectConfig = newConf
self.projectConfig.filename = self.local.projectConfFile
# Log messages for this module
self.errorCodes = {
'PROJ-000' : ['MSG', 'Project module messages'],
'PROJ-030' : ['MSG', 'Changed [<<1>>][<<2>>][<<3>>] setting from \"<<4>>\" to \"<<5>>\".'],
'PROJ-040' : ['ERR', 'Problem making setting change. Section [<<1>>] missing from configuration file.'],
'PROJ-050' : ['ERR', 'Component [<<1>>] working text file was not found in the project configuration.'],
'PROJ-060' : ['ERR', 'Component [<<1>>] was not found in the project configuration.'],
'PROJ-070' : ['ERR', 'Source file not found: [<<1>>].'],
'PROJ-080' : ['MSG', 'Successful copy of [<<1>>] to [<<2>>].'],
'PROJ-090' : ['ERR', 'Target file [<<1>>] already exists. Use force (-f) to overwrite.'],
'0205' : ['LOG', 'Created the [<<1>>] manager object.'],
'0210' : ['LOG', 'Wrote out [<<1>>] settings to the project configuration file.'],
'0211' : ['ERR', 'Failed to write out project [<<1>>] settings to the project configuration file.'],
'0660' : ['ERR', 'Invalid component ID: [<<1>>].'],
}
###############################################################################
############################ Manager Level Functions ##########################
###############################################################################
######################## Error Code Block Series = 200 ########################
###############################################################################
def createManager (self, mType) :
'''Check to see if a manager is listed in the config and load it if
it is not already.'''
fullName = self.cType + '_' + mType.capitalize()
if fullName not in self.managers :
self.addManager(mType)
self.loadManager(mType)
self.log.writeToLog(self.errorCodes['0205'], [fullName])
def loadManager (self, mType) :
'''Do basic load on a manager.'''
fullName = self.cType + '_' + mType.capitalize()
cfg = self.projectConfig['Managers'][fullName]
module = import_module('rapuma.manager.' + mType)
ManagerClass = getattr(module, mType.capitalize())
manobj = ManagerClass(self, cfg, self.cType)
self.managers[fullName] = manobj
def addManager (self, mType) :
'''Create a manager reference in the project config that components
will point to.'''
#.........這裏部分代碼省略.........
示例3: Macro
# 需要導入模塊: from rapuma.core.tools import Tools [as 別名]
# 或者: from rapuma.core.tools.Tools import getXMLSettings [as 別名]
#.........這裏部分代碼省略.........
def addMacPack(self, source):
"""Add a macro package to the project. It will not work if
the same package is already present. Remove must be used
to get rid of the existing one first."""
# import pdb; pdb.set_trace()
macPackId = self.getMacPackIdFromSource(source)
confXml = os.path.join(self.local.projMacroFolder, macPackId, macPackId + ".xml")
if not os.path.isfile(source):
self.log.writeToLog(self.errorCodes["3050"], [source])
# Do not add/install if there seems to be a macro package there already
if self.projectConfig["CompTypes"][self.cType.capitalize()]["macroPackage"] and os.path.exists(
self.local.macroConfFile
):
self.log.writeToLog(self.errorCodes["3100"], [macPackId])
return False
# Set the projectConf to the new/same package
self.projectConfig["CompTypes"][self.cType.capitalize()]["macroPackage"] = macPackId
self.tools.writeConfFile(self.projectConfig)
# If we got this far, install the a fresh copy of the macPack
self.installMacPackOnly(source)
# Move the style files and custom TeX files out of the macPack
self.moveMacStyles(macPackId)
self.moveMacTex(macPackId)
# Create a fresh macro.conf file if it dosn't exist
if not os.path.isfile(self.local.macroConfFile):
self.macroConfig = self.tools.initNewConfig(self.local.macroConfFile, self.local.macroConfXmlFile)
# Inject information from this particular macro package
mInfo = self.tools.getXMLSettings(confXml)
self.macroConfig["Macros"][macPackId] = mInfo.dict()
# Save the settings now
self.tools.writeConfFile(self.macroConfig)
self.log.writeToLog(self.errorCodes["3300"], [macPackId, self.local.macroConfFileName])
return True
def moveMacStyles(self, macPackId):
"""Move the default macro package styles out of the freshly installed
project macro package folder to the project Style folder."""
# import pdb; pdb.set_trace()
# Collect the style files to copy
for f in self.getMacStyExtFiles(macPackId):
source = os.path.join(os.path.join(self.local.projMacroFolder, macPackId, f))
target = os.path.join(self.local.projStyleFolder, f)
self.tools.makedirs(self.local.projStyleFolder)
# Do not overwrite existing files unless force is used
if not os.path.exists(target):
shutil.copy(source, target)
# Look for default and set to read-only
defaultStyFile = os.path.join(self.local.projStyleFolder, macPackId + ".sty")
if target == defaultStyFile:
self.tools.makeReadOnly(defaultStyFile)
# Remove the source to avoid confusion
if os.path.exists(target):
os.remove(source)
else:
self.log.writeToLog(self.errorCodes["3310"], [source, self.local.projStyleFolder])
示例4: Macro
# 需要導入模塊: from rapuma.core.tools import Tools [as 別名]
# 或者: from rapuma.core.tools.Tools import getXMLSettings [as 別名]
#.........這裏部分代碼省略.........
def addMacPack (self, source) :
'''Add a macro package to the project. It will not work if
the same package is already present. Remove must be used
to get rid of the existing one first.'''
# import pdb; pdb.set_trace()
macPackId = self.getMacPackIdFromSource(source)
confXml = os.path.join(self.local.projMacroFolder, macPackId, macPackId + '.xml')
if not os.path.isfile(source) :
self.log.writeToLog(self.errorCodes['3050'], [source])
# Do not add/install if there seems to be a macro package there already
if self.projectConfig['CompTypes'][self.cType.capitalize()]['macroPackage'] and os.path.exists(self.local.macroConfFile) :
self.log.writeToLog(self.errorCodes['3100'], [macPackId])
return False
# Set the projectConf to the new/same package
self.projectConfig['CompTypes'][self.cType.capitalize()]['macroPackage'] = macPackId
self.tools.writeConfFile(self.projectConfig)
# If we got this far, install the a fresh copy of the macPack
self.installMacPackOnly(source)
# Move the style files and custom TeX files out of the macPack
self.moveMacStyles(macPackId)
self.moveMacTex(macPackId)
# Create a fresh macro.conf file if it dosn't exist
if not os.path.isfile(self.local.macroConfFile) :
self.macroConfig = self.tools.initNewConfig(self.local.macroConfFile, self.local.macroConfXmlFile)
# Inject information from this particular macro package
mInfo = self.tools.getXMLSettings(confXml)
self.macroConfig['Macros'][macPackId] = mInfo.dict()
# Save the settings now
self.tools.writeConfFile(self.macroConfig)
self.log.writeToLog(self.errorCodes['3300'], [macPackId, self.local.macroConfFileName])
return True
def moveMacStyles (self, macPackId) :
'''Move the default macro package styles out of the freshly installed
project macro package folder to the project Style folder.'''
# import pdb; pdb.set_trace()
# Collect the style files to copy
for f in self.getMacStyExtFiles(macPackId) :
source = os.path.join(os.path.join(self.local.projMacroFolder, macPackId, f))
target = os.path.join(self.local.projStyleFolder, f)
self.tools.makedirs(self.local.projStyleFolder)
# Do not overwrite existing files unless force is used
if not os.path.exists(target) :
shutil.copy(source, target)
# Look for default and set to read-only
defaultStyFile = os.path.join(self.local.projStyleFolder, macPackId + '.sty')
if target == defaultStyFile :
self.tools.makeReadOnly(defaultStyFile)
# Remove the source to avoid confusion
if os.path.exists(target) :
os.remove(source)
示例5: ProjFont
# 需要導入模塊: from rapuma.core.tools import Tools [as 別名]
# 或者: from rapuma.core.tools.Tools import getXMLSettings [as 別名]
#.........這裏部分代碼省略.........
def getFontIdFromFileName (self, fileName) :
'''Return the font ID based on the file name'''
# File name less ext is the font ID
parts = len(fileName.split('.'))
return '.'.join(fileName.split('.')[:parts-1])
def getFontIdFromSource (self, source) :
'''Return the font ID based on the complete path and file name.'''
# Get the file name from the path
fileName = self.tools.fName(source)
# Return the font ID
return self.getFontIdFromFileName(fileName)
def recordFont (self, fontId, cType=None) :
'''Check for the exsitance of the specified font in the font folder.
Then extract the meta data into the appropreate configurations.'''
# import pdb; pdb.set_trace()
# Set vars do initial checks
metaDataSource = os.path.join(self.local.projFontFolder, fontId, fontId + '.xml')
if not os.path.isfile(metaDataSource) :
self.log.writeToLog(self.errorCodes['1240'], [fontId + '.xml', 'proj_font.recordFont():1240'])
# Build the Fonts section in the config (if needed)
self.tools.buildConfSection(self.fontConfig, 'Fonts')
# (Re)Inject the font info into the macPack config file.
fInfo = self.tools.getXMLSettings(metaDataSource)
self.fontConfig['Fonts'][fontId] = fInfo.dict()
# Save the settings now
self.tools.writeConfFile(self.fontConfig)
# If a component type was specified, record that as well
if cType :
self.projectConfig['CompTypes'][cType.capitalize()]['fontName'] = fontId
self.tools.writeConfFile(self.projectConfig)
return True
def copyInFont (self, source) :
'''Copy a font into a project. The font is bundled with other
necessary components in a .zip file. If the font folder is
already there we assume there is a font there and we do not
proceed. The user will be prompted to remove the old one first.'''
fontId = self.getFontIdFromSource(source)
confXml = os.path.join(self.local.projFontFolder, fontId, fontId + '.xml')
if not os.path.isfile(source) :
self.log.writeToLog(self.errorCodes['1220'], [source])
# Install new copy
if self.tools.pkgExtract(source, self.local.projFontFolder, confXml) :
self.log.writeToLog(self.errorCodes['1260'], [self.tools.fName(source)])
return True
else :
self.log.writeToLog(self.errorCodes['1265'], [fontId])
return False