Mercurial > repos > uga-galaxy-group > webservice_toolsuite_v1_1
view WebServiceExtensionsV1.1/install.py~ @ 0:049760c677de default tip
Galaxy WSExtensions added successfully
author | uga-galaxy-group |
---|---|
date | Tue, 05 Jul 2011 19:34:18 -0400 |
parents | |
children |
line wrap: on
line source
# To change this template, choose Tools | Templates # and open the template in the editor. __author__ = "Chaitanya Guttula" import os import sys from shutil import copytree, ignore_patterns galaxyhome=os.environ.get('GALAXY_HOME') #print galaxyhome #os.mkdir(galaxyhome+'/GAL') dirfilelist=os.listdir(galaxyhome+'/tools') exist = False for dirfile in dirfilelist: if dirfile == 'WebServiceToolWorkflow_REST_SOAP': exist = True break if exist: print 'WebServiceToolWorkflow_REST_SOAP is already present in '+galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP' else: copytree('WebServiceToolWorkflow_REST_SOAP',galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP', ignore=ignore_patterns('*.pyc', 'tmp*')) print 'Copied the folder \'WebServiceToolWorkflow_REST_SOAP\' to '+galaxyhome+'/tools' f1=open(galaxyhome+'/tool_conf.xml','r') f1.seek(0,0) f2=open(galaxyhome+'/tool_conf_backup.xml','w') f2.seek(0,0) #copy the first line <toolbox> into another file f2 line = f1.readline() #f2.write(line) lineStripped=line.lstrip() lineStripped=lineStripped.rstrip() #Flags for verifying that the tool is not already installed tool_present = False webservice_present = False workflow_present = False # Check of the tools are already installed or not # and sets the flags to true if they are already installed while not lineStripped == '</toolbox>': line = f1.readline() lineStripped = line.lstrip() lineStripped=lineStripped.rstrip() if(lineStripped.find('<!--')>-1): line = f1.readline() while(not line.find('-->')>-1): line = f1.readline() if lineStripped == '<section name="Add Web service tool" id="RegisterWebService">': tool_present = True elif lineStripped == '<section name="Web Service Tools" id="WebServices">': webservice_present = True elif lineStripped == '<section name="Web Service Workflow Tools" id="WebServiceWorkflow">': workflow_present = True f1.seek(0,0) line = f1.readline() f2.write(line) lineStripped=line.lstrip() lineStripped=lineStripped.rstrip() # copy to the file f2 till <toolbox> while not lineStripped == '<toolbox>': line = f1.readline() f2.write(line) lineStripped = line.lstrip() lineStripped = lineStripped.rstrip() # Check if the tool is not installed and then add it to the file f2 if not tool_present: f2.write(' <section name="Add Web service tool" id="RegisterWebService">\n') f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/WebServiceTool_input_url_REST_SOAP.xml"/>\n') f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/WebServiceTool_input_method_REST_SOAP.xml"/>\n') f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/refreshTool.xml"/>\n') f2.write(' </section>\n') print 'The "Add Web Service Tool" added successfully' else: print 'The "Add Web service tool" tool is already present' # Check if the section "Web Service Tools" is not installed and then add it to the file f2 if not webservice_present: f2.write(' <section name="Web Service Tools" id="WebServices">\n') f2.write('\n') f2.write(' </section>\n') print 'The "Web Service Tools" added successfully' else: print 'The section "Web Service Tools" is already present' # Check if the Section "Web Service Workflow Tools" is not installed and then add it to the file f2 if not workflow_present: f2.write(' <section name="Web Service Workflow Tools" id="WebServiceWorkflow">\n') f2.write('\n') f2.write(' </section>\n') print 'The section "Web Service Workflow Tools" is added successfully' else: print 'The section "Web Service Workflow Tools" is already present' #copy rest of tool_conf.xml file to f2 while not lineStripped == '</toolbox>': line = f1.readline() f2.write(line) lineStripped = line.lstrip() lineStripped=lineStripped.rstrip() #else: # print line ##close f1 and f2 f1.close() f2.close() ##interchange modes of f1 and f2 f1=open(galaxyhome+'/tool_conf.xml','w') f1.seek(0,0) f2=open(galaxyhome+'/tool_conf_backup.xml','r') f2.seek(0,0) line = f2.readline() f1.write(line) lineStripped=line.lstrip() lineStripped = lineStripped.rstrip() ##write entire f2 into f1 (reverse roles) while not lineStripped == '</toolbox>': line = f2.readline() f1.write(line) lineStripped = line.lstrip() lineStripped = lineStripped.rstrip() #else: # print line f1.close() f2.close() # Adding Code to __init__.py in lib/galaxy/tools folder in Galaxy for disabling Web service stand alone tools in Workflows f1 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','r') f1.seek(0,0) exist = False line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() while line != '': # if(linsetripped.find('\'\'\'')>-1): # line = f1.readline() # while(not line.find('\'\'\'')>-1): # line = f1.readline() if(linestripped == 'if self.id.find("WebService")>-1:'): exist = True break line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() if exist : print 'Workflow code is already present in __init__.py' else: f2 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','w') f2.seek(0,0) f1.seek(0,0) line = f1.readline() f2.write(line) linestripped = line.lstrip() linestripped = linestripped.rstrip() while not (linestripped.find('def check_workflow_compatible(')>-1): line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() f2.write(line) if line.find('(')>-1: while not line.find(')')>-1: line = f1.readline() f2.write(line) line = f1.readline() while line.find('#')>-1: f2.write(line) line = f1.readline() indent=0 while (line[indent] == ' '): indent = indent+1 space = '' for i in range(0,indent): space +=' ' f2.write(space+'#############\n') f2.write(space+'#added by Chaitany Guttula, chaitu86@uga.edu - to disable webservice standalone tools in Workflows\n') f2.write(space+'if self.id.find("WebService")>-1:\n') f2.write(space+' return False\n') f2.write(space+'#############\n') f2.write(line) line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() f1 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','r') f2 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','w') line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() print 'Workflow disabling Code added to __init__.py' # Adding Code to __init__.py in lib/galaxy/tools folder in Galaxy for invoking the refresh functionality f1 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','r') f1.seek(0,0) exist = False line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() while line != '': # if(linsetripped.find('\'\'\'')>-1): # line = f1.readline() # while(not line.find('\'\'\'')>-1): # line = f1.readline() if(linestripped == 'if self.id == \'WebService_REFRESH_ID\':'): exist = True break line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() if exist : print 'Refresh code is already present in __init__.py' else: f2 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','w') f2.seek(0,0) f1.seek(0,0) line = f1.readline() f2.write(line) linestripped = line.lstrip() linestripped = linestripped.rstrip() while not (linestripped.find('def execute(')>-1): line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() f2.write(line) if line.find('(')>-1: while not line.find(')')>-1: line = f1.readline() f2.write(line) line = f1.readline() while line.find('#')>-1: f2.write(line) line = f1.readline() indent=0 while (line[indent] == ' '): indent = indent+1 space = '' for i in range(0,indent): space +=' ' f2.write(space+'#############\n') f2.write(space+'#add code to verify if user has administrative privileges\n') f2.write(space+'#added by sumedha ganjoo, sganjoo@uga.edu - to refresh toolbox\n') f2.write(space+'if self.id == \'WebService_REFRESH_ID\':\n') f2.write(space+' self.app.refreshToolBox()\n') f2.write(space+'#############\n') f2.write(line) line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() f1 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','r') f2 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','w') line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() print 'Refresh Code added to __init__.py' # Adding Code to app.py in lib/galaxy folder in Galaxy for invoking the refresh functionality f1 = open(galaxyhome+'/lib/galaxy/app.py','r') f1.seek(0,0) exist = False line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() while line != '': if(linestripped == 'def refreshToolBox( self ):'): exist = True break line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() if exist: print 'Refresh code is already present in app.py' else: f2 = open(galaxyhome+'/lib/galaxy/app_backup.py','w') f2.seek(0,0) f1.seek(0,0) line = f1.readline() f2.write(line) linestripped = line.lstrip() linestripped = linestripped.rstrip() while not (line.find('class UniverseApplication')>-1): line = f1.readline() linestripped = line.lstrip() linestripped = linestripped.rstrip() f2.write(line) if line.find('(')>-1: while not line.find(')')>-1: line = f1.readline() f2.write(line) line = f1.readline() while line.find('#')>-1: f2.write(line) line = f1.readline() indent=0 while (line[indent] == ' '): indent = indent+1 space = '' for i in range(0,indent): space +=' ' f2.write(space+'#############\n') f2.write(space+'#added by sumedha ganjoo, sganjoo@uga.edu\n') f2.write(space+'def refreshToolBox( self ):\n') f2.write(space+' self.toolbox = tools.ToolBox( self.config.tool_config, self.config.tool_path, self )\n') f2.write(space+'#############\n\n') f2.write(line) line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() f1 = open(galaxyhome+'/lib/galaxy/app_backup.py','r') f2 = open(galaxyhome+'/lib/galaxy/app.py','w') line = f1.readline() f2.write(line) while line != '': line = f1.readline() f2.write(line) f1.close() f2.close() print 'Refresh code is added to app.py' print '****Installation of tool is complete. Now reload galaxy to use the installed tool****'