0
|
1 # To change this template, choose Tools | Templates
|
|
2 # and open the template in the editor.
|
|
3
|
|
4 __author__ = "Chaitanya Guttula"
|
|
5
|
|
6
|
|
7 import os
|
|
8 import sys
|
|
9 from shutil import copytree, ignore_patterns
|
|
10
|
|
11 galaxyhome=os.environ.get('GALAXY_HOME')
|
|
12 #print galaxyhome
|
|
13
|
|
14 #os.mkdir(galaxyhome+'/GAL')
|
|
15 dirfilelist=os.listdir(galaxyhome+'/tools')
|
|
16 exist = False
|
|
17 for dirfile in dirfilelist:
|
|
18 if dirfile == 'WebServiceToolWorkflow_REST_SOAP':
|
|
19 exist = True
|
|
20 break
|
|
21
|
|
22 if exist:
|
|
23 print 'WebServiceToolWorkflow_REST_SOAP is already present in '+galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP'
|
|
24 else:
|
|
25 copytree('WebServiceToolWorkflow_REST_SOAP',galaxyhome+'/tools/WebServiceToolWorkflow_REST_SOAP', ignore=ignore_patterns('*.pyc', 'tmp*'))
|
|
26 print 'Copied the folder \'WebServiceToolWorkflow_REST_SOAP\' to '+galaxyhome+'/tools'
|
|
27
|
|
28 f1=open(galaxyhome+'/tool_conf.xml','r')
|
|
29 f1.seek(0,0)
|
|
30 f2=open(galaxyhome+'/tool_conf_backup.xml','w')
|
|
31 f2.seek(0,0)
|
|
32
|
|
33 #copy the first line <toolbox> into another file f2
|
|
34 line = f1.readline()
|
|
35 #f2.write(line)
|
|
36
|
|
37 lineStripped=line.lstrip()
|
|
38 lineStripped=lineStripped.rstrip()
|
|
39
|
|
40 #Flags for verifying that the tool is not already installed
|
|
41 tool_present = False
|
|
42 webservice_present = False
|
|
43 workflow_present = False
|
|
44
|
|
45 # Check of the tools are already installed or not
|
|
46 # and sets the flags to true if they are already installed
|
|
47 while not lineStripped == '</toolbox>':
|
|
48 line = f1.readline()
|
|
49 lineStripped = line.lstrip()
|
|
50 lineStripped=lineStripped.rstrip()
|
|
51 if(lineStripped.find('<!--')>-1):
|
|
52 line = f1.readline()
|
|
53 while(not line.find('-->')>-1):
|
|
54 line = f1.readline()
|
|
55
|
|
56 if lineStripped == '<section name="Add Web service tool" id="RegisterWebService">':
|
|
57 tool_present = True
|
|
58 elif lineStripped == '<section name="Web Service Tools" id="WebServices">':
|
|
59 webservice_present = True
|
|
60 elif lineStripped == '<section name="Web Service Workflow Tools" id="WebServiceWorkflow">':
|
|
61 workflow_present = True
|
|
62
|
|
63
|
|
64 f1.seek(0,0)
|
|
65 line = f1.readline()
|
|
66 f2.write(line)
|
|
67
|
|
68 lineStripped=line.lstrip()
|
|
69 lineStripped=lineStripped.rstrip()
|
|
70
|
|
71 # copy to the file f2 till <toolbox>
|
|
72 while not lineStripped == '<toolbox>':
|
|
73 line = f1.readline()
|
|
74 f2.write(line)
|
|
75 lineStripped = line.lstrip()
|
|
76 lineStripped = lineStripped.rstrip()
|
|
77
|
|
78 # Check if the tool is not installed and then add it to the file f2
|
|
79 if not tool_present:
|
|
80 f2.write(' <section name="Add Web service tool" id="RegisterWebService">\n')
|
|
81 f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/WebServiceTool_input_url_REST_SOAP.xml"/>\n')
|
|
82 f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/WebServiceTool_input_method_REST_SOAP.xml"/>\n')
|
|
83 f2.write(' <tool file="WebServiceToolWorkflow_REST_SOAP/refreshTool.xml"/>\n')
|
|
84 f2.write(' </section>\n')
|
|
85 print 'The "Add Web Service Tool" added successfully'
|
|
86 else:
|
|
87 print 'The "Add Web service tool" tool is already present'
|
|
88
|
|
89
|
|
90 # Check if the section "Web Service Tools" is not installed and then add it to the file f2
|
|
91 if not webservice_present:
|
|
92 f2.write(' <section name="Web Service Tools" id="WebServices">\n')
|
|
93 f2.write('\n')
|
|
94 f2.write(' </section>\n')
|
|
95 print 'The "Web Service Tools" added successfully'
|
|
96 else:
|
|
97 print 'The section "Web Service Tools" is already present'
|
|
98
|
|
99
|
|
100 # Check if the Section "Web Service Workflow Tools" is not installed and then add it to the file f2
|
|
101 if not workflow_present:
|
|
102 f2.write(' <section name="Web Service Workflow Tools" id="WebServiceWorkflow">\n')
|
|
103 f2.write('\n')
|
|
104 f2.write(' </section>\n')
|
|
105 print 'The section "Web Service Workflow Tools" is added successfully'
|
|
106 else:
|
|
107 print 'The section "Web Service Workflow Tools" is already present'
|
|
108
|
|
109
|
|
110 #copy rest of tool_conf.xml file to f2
|
|
111 while not lineStripped == '</toolbox>':
|
|
112 line = f1.readline()
|
|
113 f2.write(line)
|
|
114 lineStripped = line.lstrip()
|
|
115 lineStripped=lineStripped.rstrip()
|
|
116 #else:
|
|
117 # print line
|
|
118
|
|
119 ##close f1 and f2
|
|
120 f1.close()
|
|
121 f2.close()
|
|
122
|
|
123 ##interchange modes of f1 and f2
|
|
124 f1=open(galaxyhome+'/tool_conf.xml','w')
|
|
125 f1.seek(0,0)
|
|
126 f2=open(galaxyhome+'/tool_conf_backup.xml','r')
|
|
127 f2.seek(0,0)
|
|
128
|
|
129 line = f2.readline()
|
|
130 f1.write(line)
|
|
131
|
|
132 lineStripped=line.lstrip()
|
|
133 lineStripped = lineStripped.rstrip()
|
|
134
|
|
135 ##write entire f2 into f1 (reverse roles)
|
|
136 while not lineStripped == '</toolbox>':
|
|
137 line = f2.readline()
|
|
138 f1.write(line)
|
|
139 lineStripped = line.lstrip()
|
|
140 lineStripped = lineStripped.rstrip()
|
|
141 #else:
|
|
142 # print line
|
|
143
|
|
144 f1.close()
|
|
145 f2.close()
|
|
146
|
|
147
|
|
148 # Adding Code to __init__.py in lib/galaxy/tools folder in Galaxy for disabling Web service stand alone tools in Workflows
|
|
149 f1 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','r')
|
|
150 f1.seek(0,0)
|
|
151
|
|
152 exist = False
|
|
153 line = f1.readline()
|
|
154 linestripped = line.lstrip()
|
|
155 linestripped = linestripped.rstrip()
|
|
156 while line != '':
|
|
157 # if(linsetripped.find('\'\'\'')>-1):
|
|
158 # line = f1.readline()
|
|
159 # while(not line.find('\'\'\'')>-1):
|
|
160 # line = f1.readline()
|
|
161 if(linestripped == 'if self.id.find("WebService")>-1:'):
|
|
162 exist = True
|
|
163 break
|
|
164 line = f1.readline()
|
|
165 linestripped = line.lstrip()
|
|
166 linestripped = linestripped.rstrip()
|
|
167
|
|
168 if exist :
|
|
169 print 'Workflow code is already present in __init__.py'
|
|
170 else:
|
|
171 f2 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','w')
|
|
172 f2.seek(0,0)
|
|
173 f1.seek(0,0)
|
|
174 line = f1.readline()
|
|
175 f2.write(line)
|
|
176 linestripped = line.lstrip()
|
|
177 linestripped = linestripped.rstrip()
|
|
178 while not (linestripped.find('def check_workflow_compatible(')>-1):
|
|
179 line = f1.readline()
|
|
180 linestripped = line.lstrip()
|
|
181 linestripped = linestripped.rstrip()
|
|
182 f2.write(line)
|
|
183 if line.find('(')>-1:
|
|
184 while not line.find(')')>-1:
|
|
185 line = f1.readline()
|
|
186 f2.write(line)
|
|
187
|
|
188 line = f1.readline()
|
|
189 while line.find('#')>-1:
|
|
190 f2.write(line)
|
|
191 line = f1.readline()
|
|
192
|
|
193 indent=0
|
|
194 while (line[indent] == ' '):
|
|
195 indent = indent+1
|
|
196
|
|
197 space = ''
|
|
198 for i in range(0,indent):
|
|
199 space +=' '
|
|
200
|
|
201 f2.write(space+'#############\n')
|
|
202 f2.write(space+'#added by Chaitany Guttula, chaitu86@uga.edu - to disable webservice standalone tools in Workflows\n')
|
|
203 f2.write(space+'if self.id.find("WebService")>-1:\n')
|
|
204 f2.write(space+' return False\n')
|
|
205 f2.write(space+'#############\n')
|
|
206
|
|
207 f2.write(line)
|
|
208 line = f1.readline()
|
|
209 f2.write(line)
|
|
210
|
|
211 while line != '':
|
|
212 line = f1.readline()
|
|
213 f2.write(line)
|
|
214
|
|
215 f1.close()
|
|
216 f2.close()
|
|
217
|
|
218 f1 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','r')
|
|
219 f2 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','w')
|
|
220
|
|
221 line = f1.readline()
|
|
222 f2.write(line)
|
|
223
|
|
224 while line != '':
|
|
225 line = f1.readline()
|
|
226 f2.write(line)
|
|
227
|
|
228 f1.close()
|
|
229 f2.close()
|
|
230 print 'Workflow disabling Code added to __init__.py'
|
|
231
|
|
232
|
|
233
|
|
234 # Adding Code to __init__.py in lib/galaxy/tools folder in Galaxy for invoking the refresh functionality
|
|
235 f1 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','r')
|
|
236 f1.seek(0,0)
|
|
237
|
|
238 exist = False
|
|
239 line = f1.readline()
|
|
240 linestripped = line.lstrip()
|
|
241 linestripped = linestripped.rstrip()
|
|
242 while line != '':
|
|
243 # if(linsetripped.find('\'\'\'')>-1):
|
|
244 # line = f1.readline()
|
|
245 # while(not line.find('\'\'\'')>-1):
|
|
246 # line = f1.readline()
|
|
247 if(linestripped == 'if self.id == \'WebService_REFRESH_ID\':'):
|
|
248 exist = True
|
|
249 break
|
|
250 line = f1.readline()
|
|
251 linestripped = line.lstrip()
|
|
252 linestripped = linestripped.rstrip()
|
|
253
|
|
254 if exist :
|
|
255 print 'Refresh code is already present in __init__.py'
|
|
256 else:
|
|
257 f2 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','w')
|
|
258 f2.seek(0,0)
|
|
259 f1.seek(0,0)
|
|
260 line = f1.readline()
|
|
261 f2.write(line)
|
|
262 linestripped = line.lstrip()
|
|
263 linestripped = linestripped.rstrip()
|
|
264 while not (linestripped.find('def execute(')>-1):
|
|
265 line = f1.readline()
|
|
266 linestripped = line.lstrip()
|
|
267 linestripped = linestripped.rstrip()
|
|
268 f2.write(line)
|
|
269 if line.find('(')>-1:
|
|
270 while not line.find(')')>-1:
|
|
271 line = f1.readline()
|
|
272 f2.write(line)
|
|
273
|
|
274 line = f1.readline()
|
|
275 while line.find('#')>-1:
|
|
276 f2.write(line)
|
|
277 line = f1.readline()
|
|
278
|
|
279 indent=0
|
|
280 while (line[indent] == ' '):
|
|
281 indent = indent+1
|
|
282
|
|
283 space = ''
|
|
284 for i in range(0,indent):
|
|
285 space +=' '
|
|
286
|
|
287 f2.write(space+'#############\n')
|
|
288 f2.write(space+'#add code to verify if user has administrative privileges\n')
|
|
289 f2.write(space+'#added by sumedha ganjoo, sganjoo@uga.edu - to refresh toolbox\n')
|
|
290 f2.write(space+'if self.id == \'WebService_REFRESH_ID\':\n')
|
|
291 f2.write(space+' self.app.refreshToolBox()\n')
|
|
292 f2.write(space+'#############\n')
|
|
293
|
|
294 f2.write(line)
|
|
295 line = f1.readline()
|
|
296 f2.write(line)
|
|
297
|
|
298 while line != '':
|
|
299 line = f1.readline()
|
|
300 f2.write(line)
|
|
301
|
|
302 f1.close()
|
|
303 f2.close()
|
|
304
|
|
305 f1 = open(galaxyhome+'/lib/galaxy/tools/__init__backup.py','r')
|
|
306 f2 = open(galaxyhome+'/lib/galaxy/tools/__init__.py','w')
|
|
307
|
|
308 line = f1.readline()
|
|
309 f2.write(line)
|
|
310
|
|
311 while line != '':
|
|
312 line = f1.readline()
|
|
313 f2.write(line)
|
|
314
|
|
315 f1.close()
|
|
316 f2.close()
|
|
317 print 'Refresh Code added to __init__.py'
|
|
318
|
|
319
|
|
320 # Adding Code to app.py in lib/galaxy folder in Galaxy for invoking the refresh functionality
|
|
321 f1 = open(galaxyhome+'/lib/galaxy/app.py','r')
|
|
322
|
|
323 f1.seek(0,0)
|
|
324
|
|
325 exist = False
|
|
326 line = f1.readline()
|
|
327 linestripped = line.lstrip()
|
|
328 linestripped = linestripped.rstrip()
|
|
329 while line != '':
|
|
330 if(linestripped == 'def refreshToolBox( self ):'):
|
|
331 exist = True
|
|
332 break
|
|
333 line = f1.readline()
|
|
334 linestripped = line.lstrip()
|
|
335 linestripped = linestripped.rstrip()
|
|
336
|
|
337 if exist:
|
|
338 print 'Refresh code is already present in app.py'
|
|
339 else:
|
|
340 f2 = open(galaxyhome+'/lib/galaxy/app_backup.py','w')
|
|
341 f2.seek(0,0)
|
|
342 f1.seek(0,0)
|
|
343 line = f1.readline()
|
|
344 f2.write(line)
|
|
345 linestripped = line.lstrip()
|
|
346 linestripped = linestripped.rstrip()
|
|
347 while not (line.find('class UniverseApplication')>-1):
|
|
348 line = f1.readline()
|
|
349 linestripped = line.lstrip()
|
|
350 linestripped = linestripped.rstrip()
|
|
351 f2.write(line)
|
|
352 if line.find('(')>-1:
|
|
353 while not line.find(')')>-1:
|
|
354 line = f1.readline()
|
|
355 f2.write(line)
|
|
356
|
|
357 line = f1.readline()
|
|
358
|
|
359 while line.find('#')>-1:
|
|
360 f2.write(line)
|
|
361 line = f1.readline()
|
|
362
|
|
363
|
|
364 indent=0
|
|
365 while (line[indent] == ' '):
|
|
366 indent = indent+1
|
|
367
|
|
368 space = ''
|
|
369 for i in range(0,indent):
|
|
370 space +=' '
|
|
371
|
|
372 f2.write(space+'#############\n')
|
|
373 f2.write(space+'#added by sumedha ganjoo, sganjoo@uga.edu\n')
|
|
374 f2.write(space+'def refreshToolBox( self ):\n')
|
|
375 f2.write(space+' self.toolbox = tools.ToolBox( self.config.tool_config, self.config.tool_path, self )\n')
|
|
376 f2.write(space+'#############\n\n')
|
|
377
|
|
378 f2.write(line)
|
|
379 line = f1.readline()
|
|
380 f2.write(line)
|
|
381
|
|
382 while line != '':
|
|
383 line = f1.readline()
|
|
384 f2.write(line)
|
|
385
|
|
386 f1.close()
|
|
387 f2.close()
|
|
388
|
|
389 f1 = open(galaxyhome+'/lib/galaxy/app_backup.py','r')
|
|
390 f2 = open(galaxyhome+'/lib/galaxy/app.py','w')
|
|
391
|
|
392 line = f1.readline()
|
|
393 f2.write(line)
|
|
394
|
|
395 while line != '':
|
|
396 line = f1.readline()
|
|
397 f2.write(line)
|
|
398
|
|
399 f1.close()
|
|
400 f2.close()
|
|
401 print 'Refresh code is added to app.py'
|
|
402
|
|
403
|
|
404
|
|
405 print '****Installation of tool is complete. Now reload galaxy to use the installed tool****'
|
|
406
|