def test1172(self): uuid = self.root.sf.getAdminService().getEventContext().sessionUuid share = self.root.sf.getShareService() query = self.root.sf.getQueryService() update = self.root.sf.getUpdateService() ### create user client_share1, user1 = self.new_client_and_user() #create dataset with image #dataset with image ds = omero.model.DatasetI() ds.setName(rstring("dataset-%s" % (uuid))) ds = update.saveAndReturnObject(ds) ds.unload() # create image img = ImageI() img.setName(rstring('test-img in dataset-%s' % (uuid))) img.setAcquisitionDate(rtime(0)) img = update.saveAndReturnObject(img) img.unload() dil = DatasetImageLinkI() dil.setParent(ds) dil.setChild(img) dil = update.saveAndReturnObject(dil) dil.unload() # create share by root items = list() ms = list() p = omero.sys.Parameters() p.map = {} p.map["oid"] = ds.id sql = "select ds from Dataset ds join fetch ds.details.owner join fetch ds.details.group " \ "left outer join fetch ds.imageLinks dil left outer join fetch dil.child i " \ "where ds.id=:oid" items.extend(query.findAllByQuery(sql, p)) self.assertEquals(1, len(items)) #members p.map["eid"] = rlong(user1.id.val) sql = "select e from Experimenter e where e.id =:eid order by e.omeName" ms = query.findAllByQuery(sql, p) sid = share.createShare(("test-share-%s" % uuid), rtime(long(time.time()*1000 + 86400)) , items, ms, [], True) # USER RETRIEVAL ## login as user1 share1 = client_share1.sf.getShareService() query1 = client_share1.sf.getQueryService() cntar1 = client_share1.sf.getContainerService() content = share1.getContents(sid) # Content now contains just the dataset with nothing loaded self.assertEquals(1, len(content)) # get shared dataset and image when share is activated share1.activate(sid) #retrieve dataset p = omero.sys.Parameters() p.map = {} p.map["ids"] = rlist([ds.id]) sql = "select ds from Dataset ds join fetch ds.details.owner join fetch ds.details.group " \ "left outer join fetch ds.imageLinks dil left outer join fetch dil.child i " \ "where ds.id in (:ids) order by ds.name" try: res1 = query1.findAllByQuery(sql, p) self.fail("This should throw an exception") except: pass # # Now we add all the other elements to the share to prevent # the security violation # # Not working imgs = cntar.getImages("Dataset",[ds.id.val], None) img = query.findByQuery("select i from Image i join fetch i.datasetLinks dil join dil.parent d where d.id = %s " % ds.id.val, None) self.assert_(img) share.addObject(sid, img) share.addObjects(sid, img.copyDatasetLinks()) self.assertEquals(3, len(share.getContents(sid))) # # And try again to load them # share1.activate(sid) res1 = query1.findAllByQuery(sql, p) self.assert_(len(res1) == 1) for e in res1: self.assert_(e.id.val == ds.id.val) # retrieve only image p = omero.sys.Parameters() p.map = {} p.map["oid"] = rlong(img.id) sql = "select im from Image im " \ "where im.id=:oid order by im.name" res2 = query1.findByQuery(sql, p) self.assert_(res2.id.val == img.id.val)
def test1172(self): uuid = self.root.sf.getAdminService().getEventContext().sessionUuid share = self.root.sf.getShareService() query = self.root.sf.getQueryService() update = self.root.sf.getUpdateService() ### create user client_share1, user1 = self.new_client_and_user() #create dataset with image #dataset with image ds = omero.model.DatasetI() ds.setName(rstring("dataset-%s" % (uuid))) ds = update.saveAndReturnObject(ds) ds.unload() # create image img = ImageI() img.setName(rstring('test-img in dataset-%s' % (uuid))) img.setAcquisitionDate(rtime(0)) img = update.saveAndReturnObject(img) img.unload() dil = DatasetImageLinkI() dil.setParent(ds) dil.setChild(img) dil = update.saveAndReturnObject(dil) dil.unload() # create share by root items = list() ms = list() p = omero.sys.Parameters() p.map = {} p.map["oid"] = ds.id sql = "select ds from Dataset ds join fetch ds.details.owner join fetch ds.details.group " \ "left outer join fetch ds.imageLinks dil left outer join fetch dil.child i " \ "where ds.id=:oid" items.extend(query.findAllByQuery(sql, p)) self.assertEquals(1, len(items)) #members p.map["eid"] = rlong(user1.id.val) sql = "select e from Experimenter e where e.id =:eid order by e.omeName" ms = query.findAllByQuery(sql, p) sid = share.createShare(("test-share-%s" % uuid), rtime(long(time.time() * 1000 + 86400)), items, ms, [], True) # USER RETRIEVAL ## login as user1 share1 = client_share1.sf.getShareService() query1 = client_share1.sf.getQueryService() cntar1 = client_share1.sf.getContainerService() content = share1.getContents(sid) # Content now contains just the dataset with nothing loaded self.assertEquals(1, len(content)) # get shared dataset and image when share is activated share1.activate(sid) #retrieve dataset p = omero.sys.Parameters() p.map = {} p.map["ids"] = rlist([ds.id]) sql = "select ds from Dataset ds join fetch ds.details.owner join fetch ds.details.group " \ "left outer join fetch ds.imageLinks dil left outer join fetch dil.child i " \ "where ds.id in (:ids) order by ds.name" try: res1 = query1.findAllByQuery(sql, p) self.fail("This should throw an exception") except: pass # # Now we add all the other elements to the share to prevent # the security violation # # Not working imgs = cntar.getImages("Dataset",[ds.id.val], None) img = query.findByQuery( "select i from Image i join fetch i.datasetLinks dil join dil.parent d where d.id = %s " % ds.id.val, None) self.assert_(img) share.addObject(sid, img) share.addObjects(sid, img.copyDatasetLinks()) self.assertEquals(3, len(share.getContents(sid))) # # And try again to load them # share1.activate(sid) res1 = query1.findAllByQuery(sql, p) self.assert_(len(res1) == 1) for e in res1: self.assert_(e.id.val == ds.id.val) # retrieve only image p = omero.sys.Parameters() p.map = {} p.map["oid"] = rlong(img.id) sql = "select im from Image im " \ "where im.id=:oid order by im.name" res2 = query1.findByQuery(sql, p) self.assert_(res2.id.val == img.id.val)