0
|
1 import json
|
|
2 from galaxy.datatypes.data import Text
|
|
3 from galaxy.datatypes.images import Html
|
|
4
|
|
5 class Jplace(Text):
|
|
6 file_ext = "jplace"
|
|
7
|
|
8 def sniff(self, filename):
|
|
9 try:
|
|
10 with open(filename, "r") as f:
|
|
11 data = json.load(f)
|
|
12 if all (k in data for k in ("version", "tree", "placements", "fields")):
|
|
13 return True
|
|
14 except:
|
|
15 pass
|
|
16
|
|
17 return False
|
|
18
|
|
19 def get_mime(self):
|
|
20 return "application/json"
|
|
21
|
|
22 class AutoPrimaryComposite(Html):
|
|
23 composite_type = "auto_primary_file"
|
|
24
|
|
25 def __init__(self, **kwd):
|
|
26 Html.__init__(self, **kwd)
|
|
27
|
|
28 def regenerate_primary_file(self,dataset):
|
|
29 """
|
|
30 cannot do this until we are setting metadata
|
|
31 """
|
|
32 bn = dataset.metadata.base_name
|
|
33 efp = dataset.extra_files_path
|
|
34 flist = os.listdir(efp)
|
|
35 rval = ['<html><head><title>Files for Composite Dataset %s</title></head><body><p/>Composite %s contains:<p/><ul>' % (dataset.name,dataset.name)]
|
|
36 for i,fname in enumerate(flist):
|
|
37 sfname = os.path.split(fname)[-1]
|
|
38 f,e = os.path.splitext(fname)
|
|
39 rval.append( '<li><a href="%s">%s</a></li>' % ( sfname, sfname) )
|
|
40 rval.append( '</ul></body></html>' )
|
|
41 f = file(dataset.file_name,'w')
|
|
42 f.write("\n".join( rval ))
|
|
43 f.write('\n')
|
|
44 f.close()
|
|
45
|
|
46 def set_meta(self, dataset, **kwd):
|
|
47 Html.set_meta(self, dataset, **kwd)
|
|
48 self.regenerate_primary_file(dataset)
|
|
49
|
|
50 def get_mime(self):
|
|
51 return "text/html"
|
|
52
|
|
53 class BasicHtmlComposite(Html):
|
|
54 composite_type = "basic"
|