Source code for plugins.delete
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2009-2015 Glencoe Software, Inc. All rights reserved.
# Use is subject to license terms supplied in LICENSE.txt
#
"""
Startup plugin for command-line deletes
"""
import sys
from omero.cli import CLI, GraphControl
HELP = """Delete OMERO data.
Remove entire graphs of data based on the ID of the top-node.
By default linked tag, file and term annotations are not deleted.
To delete linked annotations they must be explicitly included.
Examples:
# Delete an image but not its linked tag, file and term annotations
omero delete Image:50
# Delete an image including linked tag, file and term annotations
omero delete Image:51 --include TagAnnotation,FileAnnotation,TermAnnotation
# Delete an image including all linked annotations
omero delete Image:52 --include Annotation
# Delete three images and two datasets including their contents
omero delete Image:101,102,103 Dataset:201,202
# Delete five images and four datasets including their contents
# Note that --force flag is required when deleting a range, if not
# passed, a dry run is performed
omero delete Image:106-110 Dataset:203-205,207 --force
# Delete a project excluding contained datasets and linked annotations
omero delete Project:101 --exclude Dataset,Annotation
# Delete all images contained under a project
omero delete Project/Dataset/Image:53
# Delete all images contained under two projects
omero delete Project/Image:201,202
# Do a dry run of a delete reporting the outcome if the delete had been run
omero delete Dataset:53 --dry-run
# Do a dry run of a delete, reporting all the objects
# that would have been deleted
omero delete Dataset:53 --dry-run --report
"""
[docs]
class DeleteControl(GraphControl):
[docs]
def cmd_type(self):
import omero
import omero.all
return omero.cmd.Delete2
[docs]
def print_detailed_report(self, req, rsp, status):
import omero
if isinstance(rsp, omero.cmd.DoAllRsp):
for response in rsp.responses:
if isinstance(response, omero.cmd.Delete2Response):
self.print_delete_response(response)
elif isinstance(rsp, omero.cmd.Delete2Response):
self.print_delete_response(rsp)
[docs]
def print_delete_response(self, rsp):
if rsp.deletedObjects:
self.ctx.out("Deleted objects")
objIds = self._get_object_ids(rsp.deletedObjects)
for k in objIds:
self.ctx.out(" %s:%s" % (k, objIds[k]))
[docs]
def default_exclude(self):
"""
Don't delete these three types of Annotation by default
"""
return ["TagAnnotation", "TermAnnotation", "FileAnnotation"]
try:
register("delete", DeleteControl, HELP)
except NameError:
if __name__ == "__main__":
cli = CLI()
cli.register("delete", DeleteControl, HELP)
cli.invoke(sys.argv[1:])