def __init__(self,ta_info): try: self.template = botslib.botsbaseimport('genshi.template') except ImportError as msg: raise ImportError(_(u'Dependency failure: editype "%(editype)s" requires python library "genshi".'),{'editype':self.__class__.__name__}) super(templatehtml,self).__init__(ta_info) self.data = templatehtml.TemplateData() #self.data can be used by mappingscript as container for content
def generalinit(configdir): ########################################################################## #Configdir: settings.py & bots.ini######################################### #Configdir MUST be importable. So configdir is relative to PYTHONPATH. Try several options for this import. try: #first check if is configdir outside bots-directory: import configdir.settings.py importnameforsettings = os.path.normpath( os.path.join(configdir, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #normal: configdir is in bots directory: import bots.configdir.settings.py try: importnameforsettings = os.path.normpath( os.path.join('bots', configdir, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #set pythonpath to config directory first if not os.path.exists(configdir): #check if configdir exists. raise botslib.PanicError( u'In initilisation: path to configuration does not exists: "%(configdir)s".', {'configdir': configdir}) addtopythonpath = os.path.abspath(os.path.dirname(configdir)) moduletoimport = os.path.basename(configdir) sys.path.append(addtopythonpath) importnameforsettings = os.path.normpath( os.path.join(moduletoimport, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) #settings is imported, so now we know where to find settings.py: importnameforsettings #note: the imported settings.py itself is NOT used, this is doen via django.conf.settings configdirectory = os.path.abspath(os.path.dirname(settings.__file__)) #Read configuration-file bots.ini. botsglobal.ini = BotsConfig() botsglobal.ini.read(os.path.join(configdirectory, 'bots.ini')) # 'directories','botspath': absolute path for bots directory botsglobal.ini.set('directories', 'botspath', os.path.abspath(os.path.dirname(__file__))) # 'directories','config': absolute path for config directory botsglobal.ini.set('directories', 'config', configdirectory) #set config as originally received; used in starting engine via bots-monitor botsglobal.ini.set('directories', 'config_org', configdir) ############################################################################ #Usersys#################################################################### #usersys MUST be importable. So usersys is relative to PYTHONPATH. Try several options for this import. usersys = botsglobal.ini.get('directories', 'usersys', 'usersys') try: #usersys outside bots-directory: import usersys importnameforusersys = os.path.normpath(usersys).replace(os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #usersys is in bots directory: import bots.usersys try: importnameforusersys = os.path.normpath( os.path.join('bots', usersys)).replace(os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #set pythonpath to usersys directory first if not os.path.exists(usersys): #check if configdir exists. raise botslib.PanicError( u'In initilisation: path to configuration does not exists: "%(usersys)s".', {'usersys': usersys}) addtopythonpath = os.path.abspath(os.path.dirname(usersys)) #???? moduletoimport = os.path.basename(usersys) sys.path.append(addtopythonpath) importnameforusersys = os.path.normpath(usersys).replace( os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) # 'directories','usersysabs': absolute path for config usersysabs botsglobal.ini.set('directories', 'usersysabs', os.path.abspath( os.path.dirname(importedusersys.__file__)) ) #???Find pathname usersys using imported usersys # botsglobal.usersysimportpath: used for imports from usersys botsglobal.usersysimportpath = importnameforusersys botsglobal.ini.set( 'directories', 'templatehtml', botslib.join(botsglobal.ini.get('directories', 'usersysabs'), 'grammars/templatehtml/templates')) ############################################################################ #Botssys#################################################################### # 'directories','botssys': absolute path for config botssys botssys = botsglobal.ini.get('directories', 'botssys', 'botssys') botsglobal.ini.set('directories', 'botssys_org', botssys) #store original botssys setting botsglobal.ini.set('directories', 'botssys', botslib.join(botssys)) #use absolute path botsglobal.ini.set('directories', 'data', botslib.join(botssys, 'data')) botsglobal.ini.set('directories', 'logging', botslib.join(botssys, 'logging')) ############################################################################ #other inits############################################################## if botsglobal.ini.get( 'webserver', 'environment', 'development' ) != 'development': #values in bots.ini are also used in setting up cherrypy logging.raiseExceptions = 0 # during production: if errors occurs in writing to log: ignore error. (leads to a missing log line, better than error;-). botslib.dirshouldbethere(botsglobal.ini.get('directories', 'data')) botslib.dirshouldbethere(botsglobal.ini.get('directories', 'logging')) initbotscharsets() #initialise bots charsets node.Node.checklevel = botsglobal.ini.getint('settings', 'get_checklevel', 1) botslib.settimeout(botsglobal.ini.getint('settings', 'globaltimeout', 10)) ############################################################################ #Init django################################################################################# os.environ['DJANGO_SETTINGS_MODULE'] = importnameforsettings import django if hasattr(django, 'setup'): django.setup() from django.conf import settings botsglobal.settings = settings #settings are accessed using botsglobal
def generalinit(configdir): #Set Configdir #Configdir MUST be importable. So configdir is relative to PYTHONPATH. Try several options for this import. try: #configdir outside bots-directory: import configdir.settings.py importnameforsettings = os.path.normpath(os.path.join(configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #configdir is in bots directory: import bots.configdir.settings.py try: importnameforsettings = os.path.normpath(os.path.join('bots',configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #set pythonpath to config directory first if not os.path.exists(configdir): #check if configdir exists. raise botslib.BotsError(_(u'In initilisation: path to configuration does not exists: "$path".'),path=configdir) addtopythonpath = os.path.abspath(os.path.dirname(configdir)) #~ print 'add pythonpath for usersys',addtopythonpath moduletoimport = os.path.basename(configdir) sys.path.append(addtopythonpath) importnameforsettings = os.path.normpath(os.path.join(moduletoimport,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) #settings are accessed using botsglobal botsglobal.settings = settings #Find pathname configdir using imported settings.py. configdirectory = os.path.abspath(os.path.dirname(settings.__file__)) #Read configuration-file bots.ini. botsglobal.ini = BotsConfig() cfgfile = open(os.path.join(configdirectory,'bots.ini'), 'r') botsglobal.ini.readfp(cfgfile) cfgfile.close() #Set usersys. #usersys MUST be importable. So usersys is relative to PYTHONPATH. Try several options for this import. usersys = botsglobal.ini.get('directories','usersys','usersys') try: #usersys outside bots-directory: import usersys importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #usersys is in bots directory: import bots.usersys try: importnameforusersys = os.path.normpath(os.path.join('bots',usersys)).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #set pythonpath to usersys directory first if not os.path.exists(usersys): #check if configdir exists. raise botslib.BotsError(_(u'In initilisation: path to configuration does not exists: "$path".'),path=usersys) addtopythonpath = os.path.abspath(os.path.dirname(usersys)) #???? moduletoimport = os.path.basename(usersys) #~ print 'add pythonpath for usersys',addtopythonpath sys.path.append(addtopythonpath) importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) #set directory settings in bots.ini************************************************************ botsglobal.ini.set('directories','botspath',botsglobal.settings.PROJECT_PATH) botsglobal.ini.set('directories','config',configdirectory) botsglobal.ini.set('directories','usersysabs',os.path.abspath(os.path.dirname(importedusersys.__file__))) #???Find pathname usersys using imported usersys botsglobal.usersysimportpath = importnameforusersys botssys = botsglobal.ini.get('directories','botssys','botssys') botsglobal.ini.set('directories','botssys',botslib.join(botssys)) botsglobal.ini.set('directories','data',botslib.join(botssys,'data')) botslib.dirshouldbethere(botsglobal.ini.get('directories','data')) botsglobal.ini.set('directories','logging',botslib.join(botssys,'logging')) botslib.dirshouldbethere(botsglobal.ini.get('directories','logging')) botsglobal.ini.set('directories','templates',botslib.join(botsglobal.ini.get('directories','usersysabs'),'grammars/template/templates')) botsglobal.ini.set('directories','templateshtml',botslib.join(botsglobal.ini.get('directories','usersysabs'),'grammars/templatehtml/templates')) #set values in setting.py********************************************************************** if botsglobal.ini.get('webserver','environment','development') == 'development': #values in bots.ini are also used in setting up cherrypy settings.DEBUG = True else: settings.DEBUG = False settings.TEMPLATE_DEBUG = settings.DEBUG #set paths in settings.py: #~ settings.FILE_UPLOAD_TEMP_DIR = os.path.join(settings.PROJECT_PATH, 'botssys/pluginsuploaded') #start initializing bots charsets initbotscharsets() #set environment for django to start*************************************************************************************************** os.environ['DJANGO_SETTINGS_MODULE'] = importnameforsettings initbotscharsets() botslib.settimeout(botsglobal.ini.getint('settings','globaltimeout',10)) #
def generalinit(configdir): #Set Configdir #Configdir MUST be importable. So configdir is relative to PYTHONPATH. Try several options for this import. try: #configdir outside bots-directory: import configdir.settings.py importnameforsettings = os.path.normpath( os.path.join(configdir, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #configdir is in bots directory: import bots.configdir.settings.py try: importnameforsettings = os.path.normpath( os.path.join('bots', configdir, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #set pythonpath to config directory first if not os.path.exists(configdir): #check if configdir exists. raise botslib.BotsError(_( u'In initilisation: path to configuration does not exists: "$path".' ), path=configdir) addtopythonpath = os.path.abspath(os.path.dirname(configdir)) #~ print 'add pythonpath for usersys',addtopythonpath moduletoimport = os.path.basename(configdir) sys.path.append(addtopythonpath) importnameforsettings = os.path.normpath( os.path.join(moduletoimport, 'settings')).replace(os.sep, '.') settings = botslib.botsbaseimport(importnameforsettings) #settings are accessed using botsglobal botsglobal.settings = settings #Find pathname configdir using imported settings.py. configdirectory = os.path.abspath(os.path.dirname(settings.__file__)) #Read configuration-file bots.ini. botsglobal.ini = BotsConfig() cfgfile = open(os.path.join(configdirectory, 'bots.ini'), 'r') botsglobal.ini.readfp(cfgfile) cfgfile.close() #Set usersys. #usersys MUST be importable. So usersys is relative to PYTHONPATH. Try several options for this import. usersys = botsglobal.ini.get('directories', 'usersys', 'usersys') try: #usersys outside bots-directory: import usersys importnameforusersys = os.path.normpath(usersys).replace(os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #usersys is in bots directory: import bots.usersys try: importnameforusersys = os.path.normpath( os.path.join('bots', usersys)).replace(os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #set pythonpath to usersys directory first if not os.path.exists(usersys): #check if configdir exists. raise botslib.BotsError(_( u'In initilisation: path to configuration does not exists: "$path".' ), path=usersys) addtopythonpath = os.path.abspath(os.path.dirname(usersys)) #???? moduletoimport = os.path.basename(usersys) #~ print 'add pythonpath for usersys',addtopythonpath sys.path.append(addtopythonpath) importnameforusersys = os.path.normpath(usersys).replace( os.sep, '.') importedusersys = botslib.botsbaseimport(importnameforusersys) #set directory settings in bots.ini************************************************************ botsglobal.ini.set('directories', 'botspath', botsglobal.settings.PROJECT_PATH) botsglobal.ini.set('directories', 'config', configdirectory) botsglobal.ini.set('directories', 'usersysabs', os.path.abspath( os.path.dirname(importedusersys.__file__)) ) #???Find pathname usersys using imported usersys botsglobal.usersysimportpath = importnameforusersys botssys = botsglobal.ini.get('directories', 'botssys', 'botssys') botsglobal.ini.set('directories', 'botssys', botslib.join(botssys)) botsglobal.ini.set('directories', 'data', botslib.join(botssys, 'data')) botslib.dirshouldbethere(botsglobal.ini.get('directories', 'data')) botsglobal.ini.set('directories', 'logging', botslib.join(botssys, 'logging')) botslib.dirshouldbethere(botsglobal.ini.get('directories', 'logging')) botsglobal.ini.set( 'directories', 'templates', botslib.join(botsglobal.ini.get('directories', 'usersysabs'), 'grammars/template/templates')) botsglobal.ini.set( 'directories', 'templateshtml', botslib.join(botsglobal.ini.get('directories', 'usersysabs'), 'grammars/templatehtml/templates')) #set values in setting.py********************************************************************** if botsglobal.ini.get( 'webserver', 'environment', 'development' ) == 'development': #values in bots.ini are also used in setting up cherrypy settings.DEBUG = True else: settings.DEBUG = False settings.TEMPLATE_DEBUG = settings.DEBUG #set paths in settings.py: #~ settings.FILE_UPLOAD_TEMP_DIR = os.path.join(settings.PROJECT_PATH, 'botssys/pluginsuploaded') #start initializing bots charsets initbotscharsets() #set environment for django to start*************************************************************************************************** os.environ['DJANGO_SETTINGS_MODULE'] = importnameforsettings initbotscharsets() botslib.settimeout(botsglobal.ini.getint('settings', 'globaltimeout', 10)) #
def generalinit(configdir): ########################################################################## #Configdir: settings.py & bots.ini######################################### #Configdir MUST be importable. So configdir is relative to PYTHONPATH. Try several options for this import. try: #first check if is configdir outside bots-directory: import configdir.settings.py importnameforsettings = os.path.normpath(os.path.join(configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #normal: configdir is in bots directory: import bots.configdir.settings.py try: importnameforsettings = os.path.normpath(os.path.join('bots',configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #set pythonpath to config directory first if not os.path.exists(configdir): #check if configdir exists. raise botslib.PanicError(u'In initilisation: path to configuration does not exists: "%(configdir)s".',{'configdir':configdir}) addtopythonpath = os.path.abspath(os.path.dirname(configdir)) moduletoimport = os.path.basename(configdir) sys.path.append(addtopythonpath) importnameforsettings = os.path.normpath(os.path.join(moduletoimport,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) #settings is imported, so now we know where to find settings.py: importnameforsettings #note: the imported settings.py itself is NOT used, this is doen via django.conf.settings configdirectory = os.path.abspath(os.path.dirname(settings.__file__)) #Read configuration-file bots.ini. botsglobal.ini = BotsConfig() botsglobal.ini.read(os.path.join(configdirectory,'bots.ini')) # 'directories','botspath': absolute path for bots directory botsglobal.ini.set('directories','botspath',os.path.abspath(os.path.dirname(__file__))) # 'directories','config': absolute path for config directory botsglobal.ini.set('directories','config',configdirectory) #set config as originally received; used in starting engine via bots-monitor botsglobal.ini.set('directories','config_org',configdir) ############################################################################ #Usersys#################################################################### #usersys MUST be importable. So usersys is relative to PYTHONPATH. Try several options for this import. usersys = botsglobal.ini.get('directories','usersys','usersys') try: #usersys outside bots-directory: import usersys importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #usersys is in bots directory: import bots.usersys try: importnameforusersys = os.path.normpath(os.path.join('bots',usersys)).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #set pythonpath to usersys directory first if not os.path.exists(usersys): #check if configdir exists. raise botslib.PanicError(u'In initilisation: path to configuration does not exists: "%(usersys)s".',{'usersys':usersys}) addtopythonpath = os.path.abspath(os.path.dirname(usersys)) #???? moduletoimport = os.path.basename(usersys) sys.path.append(addtopythonpath) importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) # 'directories','usersysabs': absolute path for config usersysabs botsglobal.ini.set('directories','usersysabs',os.path.abspath(os.path.dirname(importedusersys.__file__))) #???Find pathname usersys using imported usersys # botsglobal.usersysimportpath: used for imports from usersys botsglobal.usersysimportpath = importnameforusersys botsglobal.ini.set('directories','templatehtml',botslib.join(botsglobal.ini.get('directories','usersysabs'),'grammars/templatehtml/templates')) ############################################################################ #Botssys#################################################################### # 'directories','botssys': absolute path for config botssys botssys = botsglobal.ini.get('directories','botssys','botssys') botsglobal.ini.set('directories','botssys_org',botssys) #store original botssys setting botsglobal.ini.set('directories','botssys',botslib.join(botssys)) #use absolute path botsglobal.ini.set('directories','data',botslib.join(botssys,'data')) botsglobal.ini.set('directories','logging',botslib.join(botssys,'logging')) ############################################################################ #other inits############################################################## if botsglobal.ini.get('webserver','environment','development') != 'development': #values in bots.ini are also used in setting up cherrypy logging.raiseExceptions = 0 # during production: if errors occurs in writing to log: ignore error. (leads to a missing log line, better than error;-). botslib.dirshouldbethere(botsglobal.ini.get('directories','data')) botslib.dirshouldbethere(botsglobal.ini.get('directories','logging')) initbotscharsets() #initialise bots charsets node.Node.checklevel = botsglobal.ini.getint('settings','get_checklevel',1) botslib.settimeout(botsglobal.ini.getint('settings','globaltimeout',10)) ############################################################################ #Init django################################################################################# os.environ['DJANGO_SETTINGS_MODULE'] = importnameforsettings import django if hasattr(django,'setup'): django.setup() from django.conf import settings botsglobal.settings = settings #settings are accessed using botsglobal
def generalinit(configdir): #Set Configdir #Configdir MUST be importable. So configdir is relative to PYTHONPATH. Try several options for this import. try: #configdir outside bots-directory: import configdir.settings.py importnameforsettings = os.path.normpath(os.path.join(configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #configdir is in bots directory: import bots.configdir.settings.py try: importnameforsettings = os.path.normpath(os.path.join('bots',configdir,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) except ImportError: #set pythonpath to config directory first if not os.path.exists(configdir): #check if configdir exists. raise botslib.BotsError(u'In initilisation: path to configuration does not exists: "%(configdir)s".',{'configdir':configdir}) addtopythonpath = os.path.abspath(os.path.dirname(configdir)) #~ print 'add pythonpath for usersys',addtopythonpath moduletoimport = os.path.basename(configdir) sys.path.append(addtopythonpath) importnameforsettings = os.path.normpath(os.path.join(moduletoimport,'settings')).replace(os.sep,'.') settings = botslib.botsbaseimport(importnameforsettings) #settings are accessed using botsglobal botsglobal.settings = settings if hasattr(settings,'DATABASE_ENGINE'): #check for old django settings.py print u'You use an old settings.py. Please change settings.py first. See migration instructions in wiki: http://code.google.com/p/bots/wiki/Migrate' sys.exit(0) #Find pathname configdir using imported settings.py. configdirectory = os.path.abspath(os.path.dirname(settings.__file__)) #Read configuration-file bots.ini. botsglobal.ini = BotsConfig() botsglobal.ini.read(os.path.join(configdirectory,'bots.ini')) #Set usersys. #usersys MUST be importable. So usersys is relative to PYTHONPATH. Try several options for this import. usersys = botsglobal.ini.get('directories','usersys','usersys') try: #usersys outside bots-directory: import usersys importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #usersys is in bots directory: import bots.usersys try: importnameforusersys = os.path.normpath(os.path.join('bots',usersys)).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) except ImportError: #set pythonpath to usersys directory first if not os.path.exists(usersys): #check if configdir exists. raise botslib.BotsError(u'In initilisation: path to configuration does not exists: "%(usersys)s".',{'usersys':usersys}) addtopythonpath = os.path.abspath(os.path.dirname(usersys)) #???? moduletoimport = os.path.basename(usersys) #~ print 'add pythonpath for usersys',addtopythonpath sys.path.append(addtopythonpath) importnameforusersys = os.path.normpath(usersys).replace(os.sep,'.') importedusersys = botslib.botsbaseimport(importnameforusersys) #set directory settings in bots.ini************************************************************ # 'directories','botspath': absolute path for bots directory botsglobal.ini.set('directories','botspath',settings.PROJECT_PATH) # 'directories','config': absolute path for config directory botsglobal.ini.set('directories','config',configdirectory) botsglobal.ini.set('directories','config_org',configdir) #set config as originally received. # 'directories','usersysabs': absolute path for config usersysabs botsglobal.ini.set('directories','usersysabs',os.path.abspath(os.path.dirname(importedusersys.__file__))) #???Find pathname usersys using imported usersys # botsglobal.usersysimportpath: used for imports from usersys botsglobal.usersysimportpath = importnameforusersys # 'directories','botssys': absolute path for config botssys botssys = botsglobal.ini.get('directories','botssys','botssys') botsglobal.ini.set('directories','botssys_org',botssys) #store original botssys setting botsglobal.ini.set('directories','botssys',botslib.join(botssys)) botsglobal.ini.set('directories','data',botslib.join(botssys,'data')) botslib.dirshouldbethere(botsglobal.ini.get('directories','data')) botsglobal.ini.set('directories','logging',botslib.join(botssys,'logging')) botslib.dirshouldbethere(botsglobal.ini.get('directories','logging')) botsglobal.ini.set('directories','templates',botslib.join(botsglobal.ini.get('directories','usersysabs'),'grammars/template/templates')) botsglobal.ini.set('directories','templateshtml',botslib.join(botsglobal.ini.get('directories','usersysabs'),'grammars/templatehtml/templates')) if botsglobal.ini.get('webserver','environment','development') != 'development': #values in bots.ini are also used in setting up cherrypy logging.raiseExceptions = 0 # during production: if errors occurs in writing to log: ignore error. (leads to a missing log line, better than error;-). #initialise bots charsets initbotscharsets() #set environment for django to start*************************************************************************************************** os.environ['DJANGO_SETTINGS_MODULE'] = importnameforsettings botslib.settimeout(botsglobal.ini.getint('settings','globaltimeout',10))