Package omero :: Package plugins :: Module export
[hide private]
[frames] | no frames]

Source Code for Module omero.plugins.export

 1  #!/usr/bin/env python 
 2  """ 
 3     Startup plugin for command-line exporter 
 4   
 5     Copyright 2009 Glencoe Software, Inc. All rights reserved. 
 6     Use is subject to license terms supplied in LICENSE.txt 
 7   
 8  """ 
 9   
10  import os 
11  import sys 
12   
13  from omero.cli import BaseControl, CLI, NewFileType 
14   
15  HELP="""Support for exporting data in XML and TIFF formats""" 
16   
17   
18 -class ExportControl(BaseControl):
19
20 - def _configure(self, parser):
21 parser.add_argument("-f", "--file", type=NewFileType("wb"), required=True, help="Filename to export to or '-' for stdout. File may not exist") 22 parser.add_argument("-t", "--type", default="TIFF", choices=("TIFF", "XML"), help="Type of export. Default: %(default)s") 23 parser.add_argument("obj", help="Format: Image:<id>") 24 parser.set_defaults(func=self.export)
25
26 - def export(self, args):
27 28 img = args.obj 29 if 0 > img.find(":"): 30 self.ctx.die(5, "Format: 'Image:<id>'") 31 32 klass, id = img.split(":") 33 images = [] 34 if klass == "Image": 35 images.append(id) 36 else: 37 self.ctx.die(5, "Can't add type: %s" % klass) 38 39 e = None 40 handle = args.file 41 42 c = self.ctx.conn(args) 43 e = c.getSession().createExporter() 44 45 remove = True 46 try: 47 for img in images: 48 e.addImage(long(img)) 49 50 import omero 51 try: 52 if args.type == "TIFF": 53 l = e.generateTiff() 54 else: 55 l = e.generateXml() 56 except omero.ServerError, se: 57 self.ctx.err("%s: %s" % (se.__class__.__name__, se.message)) 58 return 59 60 remove = False 61 offset = 0 62 while True: 63 rv = e.read(offset, 1000*1000) 64 if not rv: 65 break 66 offset += len(rv) 67 if handle == sys.stdout: 68 sys.stdout.buffer.write(rv) 69 else: 70 handle.write(rv) 71 72 finally: 73 if handle != sys.stdout: 74 handle.close() 75 if remove: 76 os.remove(handle.name) 77 e.close()
78 79 try: 80 register("export", ExportControl, HELP) 81 except NameError: 82 if __name__ == "__main__": 83 cli = CLI() 84 cli.register("export", ExportControl, HELP) 85 cli.invoke(sys.argv[1:]) 86