#!C:\Programme2\Python26\python.exe # -*- coding: UTF-8 -*- ''' $RCSfile: system.py,v $ $Revision$ $Author: markus $ $Date$ The BioCASE querytool ''' import os, sys # ***** include the biocase.lib directory in the python sys path for importing ***** execfile( os.path.abspath( os.path.join( os.path.dirname( __file__ ), os.pardir, os.pardir, 'lib', 'biocase', 'adjustpath.py' ) )) execfile( os.path.abspath( os.path.join( os.path.dirname( __file__ ), os.pardir, os.pardir, 'lib', 'biocase', 'appinit.py' ) )) from biocase.configtool.general import * from biocase.tools.caching import clearCache import biocase.configuration import biocase.datasources from biocase.cmfinfo import CMFTemplateListClass import string, shutil def replNone(x, replace_string=''): if x is None: return replace_string else: return x ############################################################################################################ # # MAIN # #=========================================================================================================== # check authentication! authorize(form, dsa=None) # # PROCESS FORMS # if action == 'dsa_create': # create a new DSA newdsa = form.getfirst('dsa_name_new', None) if newdsa is not None: biocase.datasources.createDsa(newdsa, form.getfirst('dsa_template_new', None)) elif action == 'dsa_delete': # delete a DSA dsaDir = os.path.join(cfg.dsaLocator, form.getfirst('del_dsa', None)) if os.path.isdir(dsaDir): recycleBinDir = str(cfg.dsaLocator + ".recycle.bin") if not os.path.exists(recycleBinDir): os.makedirs(recycleBinDir) dsaRecycleBinDir = os.path.join(recycleBinDir, form.getfirst('del_dsa', None)) shutil.move(dsaDir, dsaRecycleBinDir) log.info("Datasource %s is moved to recycle bin."%dsa) else: log.error("Can't delete datasource %s. Please remove it manually."%dsa) elif action == 'dsa_restore': dsaSource = dsaRecycleBinDir = os.path.join(str(cfg.dsaLocator) + ".recycle.bin", form.getfirst('restore_dsa', None)) dsaTarget = os.path.join(cfg.dsaLocator, form.getfirst('restore_dsa', None)) if os.path.isdir(dsaSource): shutil.move(dsaSource, dsaTarget) log.info("Datasource %s is restored."%dsa) elif action == 'empty_recyclebin': dsaRecycleBinDir = str(cfg.dsaLocator) + ".recycle.bin" if os.path.exists(dsaRecycleBinDir): for dsa in os.listdir(dsaRecycleBinDir): shutil.rmtree(os.path.join(dsaRecycleBinDir, dsa), False) log.info("Datasource %s is recycled."%dsa) elif action == 'cfg_update': for opt in cfg._listOptions("server"): if form.getfirst("server."+opt) is not None: if opt == 'graphviz_dot': cfg.server.__setOption__(opt, form.getfirst("server."+opt).replace("\\", "/")) else: cfg.server.__setOption__(opt, form.getfirst("server."+opt)) cfg.__save__() elif action == 'clear_cache': clearCache() # # CREATE OUTPUT VIA TEMPLATE # # load html template tmpl = PageMacro('Content', PageMacro.DELMODE) tmpl.load('Content', os.path.join(templateDir, '_system.html')) # server config for opt in cfg._listOptions("server"): tmpl["server."+opt] = str(getattr(cfg.server, str(opt))) # DATASOURCES dsaObjList = biocase.datasources.getDsaList() dsaTmplList = [{'dsa':dsaObj.name} for dsaObj in dsaObjList] tmpl.expand('Content', 'datasourcelist', dsaTmplList) # Recycle Bin dsaObjList = biocase.datasources.getDsaInRecycleBinList() if len(dsaObjList) == 0: tmpl["emptyButton"] = "disabled" dsaTmplList = [{'dsa':dsaObj.name} for dsaObj in dsaObjList] tmpl.expand('Content', 'recyclebin', dsaTmplList) # DSA TEMPLATES tmpl['dsa_template_options']=getDropDownOptionHtml([t for t in os.listdir(cfg.dsaTemplateLocator) if not t.startswith('.')],'empty') # CMF TEMPLATES cmfTmplListObj = CMFTemplateListClass() cmfTmplList = [{'name':cmf.name, 'ns':cmf.NS, 'concept_num':str(cmf.concepts)} for cmf in cmfTmplListObj] tmpl.expand('Content', 'cmftemplates', cmfTmplList) # ALL CFGs tmpl['cfgprintout'] = unicode(cfg).replace("\\", "\\\\") # # print HTML ! # printOverHTTP( tmpl )