comparison taxtastic.py @ 0:d4690e65afcd draft

Uploaded
author bcclaywell
date Thu, 26 Feb 2015 18:16:36 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d4690e65afcd
1 import os
2 import zipfile
3 from galaxy.datatypes.binary import Binary
4 from galaxy.datatypes.data import Text
5
6 class Refpkg(Text):
7 composite_type = "basic"
8
9 def __init__(self, **kwd):
10 Text.__init__(self, **kwd)
11 self.add_composite_file("CONTENTS.json")
12
13 def get_mime(self):
14 return "application/json"
15
16 class RefpkgZip(Binary):
17 file_ext = "refpkg.zip"
18
19 def __init__(self, **kwd):
20 Binary.__init__(self, **kwd)
21
22 def sniff(self, filename):
23 if not zipfile.is_zipfile(filename):
24 return False
25 contains_contents_file = False
26 zip_file = zipfile.ZipFile(filename, "r")
27 for name in zip_file.namelist():
28 if os.path.basename(name) == "CONTENTS.json":
29 contains_contents_file = True
30 break
31 zip_file.close()
32 if not contains_contents_file:
33 return False
34 return True
35
36 def get_mime(self):
37 return "application/zip"
38
39 class OfficeXlsx(Binary):
40 file_ext = "xlsx"
41
42 def __init__(self, **kwd):
43 Binary.__init__(self, **kwd)
44
45 # TODO: this should check for an xl/ directory also
46 def sniff(self, filename):
47 if not zipfile.is_zipfile(filename):
48 return False
49 contains_contents_file = False
50 zip_file = zipfile.ZipFile(filename, "r")
51 for name in zip_file.namelist():
52 if os.path.basename(name) == "[Content_Types].xml":
53 contains_contents_file = True
54 break
55 zip_file.close()
56 if not contains_contents_file:
57 return False
58 return True
59
60 def get_mime(self):
61 return "application/zip"
62
63 Binary.register_sniffable_binary_format("refpkg.zip", "refpkg.zip", RefpkgZip)
64 Binary.register_sniffable_binary_format("xlsx", "xlsx", OfficeXlsx)