def test_copy_past_rendering_settings_from_image(self): # Create 2 images with 2 channels each iid1 = self.createTestImage(sizeC=2, session=self.sf).id.val iid2 = self.createTestImage(sizeC=2, session=self.sf).id.val conn = omero.gateway.BlitzGateway(client_obj=self.client) # image1 set color model image1 = conn.getObject("Image", iid1) image1.resetDefaults() image1.setColorRenderingModel() image1.saveDefaults() image1 = conn.getObject("Image", iid1) # image2 set greyscale model image2 = conn.getObject("Image", iid2) image2.setGreyscaleRenderingModel() image2.saveDefaults() image2 = conn.getObject("Image", iid2) assert image1.isGreyscaleRenderingModel() is False assert image2.isGreyscaleRenderingModel() is True # copy rendering settings from image1 via ID request_url = reverse('webgateway.views.copy_image_rdef_json') data = {"fromid": iid1} _get_response(self.django_client, request_url, data, status_code=200) # paste rendering settings to image2 data = {'toids': iid2} _csrf_post_response(self.django_client, request_url, data) image2 = conn.getObject("Image", iid2) assert image2.isGreyscaleRenderingModel() is False
def test_pixel_size_units(self): # Create image iid = self.createTestImage(sizeC=2, session=self.sf).id.val # show right panel for image request_url = reverse('load_metadata_details', args=['image', iid]) data = {} rsp = _get_response(self.django_client, request_url, data, status_code=200) html = rsp.content # Units are µm by default assert "Pixels Size (XYZ) (µm):" in html # Now save units as PIXELs and view again conn = omero.gateway.BlitzGateway(client_obj=self.client) i = conn.getObject("Image", iid) u = omero.model.LengthI(1.2, UnitsLength.PIXEL) p = i.getPrimaryPixels()._obj p.setPhysicalSizeX(u) p.setPhysicalSizeY(u) conn.getUpdateService().saveObject(p) # Should now be showning pixels rsp = _get_response(self.django_client, request_url, data, status_code=200) html = rsp.content assert "Pixels Size (XYZ) (pixel):" in html
def test_orphaned_image_direct_download(self): """ Download of archived files for a non-SPW orphaned Image. """ image = self.importSingleImage() # download archived files request_url = reverse("webgateway.views.archived_files", args=[image.id.val]) _get_response(self.django_client, request_url, {}, status_code=200)
def test_well_download(self, image_well_plate): """ Download of archived files for a SPW Well. """ plate, well, image = image_well_plate # download archived files request_url = reverse("webgateway.views.archived_files") data = {"well": well.id.val} _get_response(self.django_client, request_url, data, status_code=404)
def test_spw_download(self, image_well_plate): """ Download of an Image that is part of a plate should be disabled, and return a 404 response. """ plate, well, image = image_well_plate # download archived files request_url = reverse("webgateway.views.archived_files") data = {"image": image.id.val} _get_response(self.django_client, request_url, data, status_code=404)
def test_orphaned_image_direct_download(self): """ Download of archived files for a non-SPW orphaned Image. """ image = self.importSingleImage() # download archived files request_url = reverse('webgateway.views.archived_files', args=[image.id.val]) _get_response(self.django_client, request_url, {}, status_code=200)
def test_well_download(self, image_well_plate): """ Download of archived files for a SPW Well. """ plate, well, image = image_well_plate # download archived files request_url = reverse('webgateway.views.archived_files') data = { "well": well.id.val } _get_response(self.django_client, request_url, data, status_code=404)
def test_attachement_download(self): """ Download of attachement. """ image = self.importSingleImage() fa = self.make_file_annotation() self.link(image, fa) # download archived files request_url = reverse("download_annotation", args=[fa.id.val]) _get_response(self.django_client, request_url, {}, status_code=200)
def test_attachement_download(self): """ Download of attachement. """ image = self.importSingleImage() fa = self.make_file_annotation() self.link(image, fa) # download archived files request_url = reverse('download_annotation', args=[fa.id.val]) _get_response(self.django_client, request_url, {}, status_code=200)
def test_spw_download(self, image_well_plate): """ Download of an Image that is part of a plate should be disabled, and return a 404 response. """ plate, well, image = image_well_plate # download archived files request_url = reverse('webgateway.views.archived_files') data = { "image": image.id.val } _get_response(self.django_client, request_url, data, status_code=404)
def test_image_in_dataset_download(self): """ Download of archived files for a non-SPW Image in Dataset. """ image = self.importSingleImage() ds = self.make_dataset() self.link(ds, image) # download archived files request_url = reverse("webgateway.views.archived_files") data = {"image": image.id.val} _get_response(self.django_client, request_url, data, status_code=200)
def test_image_in_dataset_download(self): """ Download of archived files for a non-SPW Image in Dataset. """ image = self.importSingleImage() ds = self.make_dataset() self.link(ds, image) # download archived files request_url = reverse('webgateway.views.archived_files') data = { "image": image.id.val } _get_response(self.django_client, request_url, data, status_code=200)
def _get_response_json(django_client, request_url, query_string, status_code=200): rsp = _get_response(django_client, request_url, query_string, status_code) # allow 'text/javascript'? # assert rsp.get('Content-Type') == 'application/json' return json.loads(rsp.content)
def test_load_share_content(self): """ Test if share content is loaded to the view """ client, user = self.new_client_and_user() image = self.make_image() share_id = self.create_share( objects=[image], description="description", experimenters=[user]) share = self.client.sf.getShareService() assert len(share.getContents(share_id)) == 1 # load share content request_url = reverse('load_public', args=[share_id]) data = { "view": "icon" } _get_response(self.django_client, request_url, data, status_code=200)
def test_reset_rendering_settings(self): """ CSRF protection does not check `GET` requests so we need to be sure that this request results in an HTTP 405 (method not allowed) status code. """ img = self.createTestImage(session=self.sf) # Reset through webclient as it is calling directly # webgateway.reset_image_rdef_json request_url = reverse('reset_rdef_json') data = {'toids': img.id.val, 'to_type': 'image'} _post_response(self.django_client, request_url, data) _csrf_post_response(self.django_client, request_url, data) _get_response(self.django_client, request_url, data) _csrf_get_response(self.django_client, request_url, data, status_code=405)
def test_copy_past_rendering_settings_from_image(self): # Create 2 images with 2 channels each iid1 = self.createTestImage(sizeC=2, session=self.sf).id.val iid2 = self.createTestImage(sizeC=2, session=self.sf).id.val conn = omero.gateway.BlitzGateway(client_obj=self.client) # image1 set color model image1 = conn.getObject("Image", iid1) image1.resetDefaults() image1.setColorRenderingModel() image1.saveDefaults() image1 = conn.getObject("Image", iid1) # image2 set greyscale model image2 = conn.getObject("Image", iid2) image2.setGreyscaleRenderingModel() image2.saveDefaults() image2 = conn.getObject("Image", iid2) assert image1.isGreyscaleRenderingModel() is False assert image2.isGreyscaleRenderingModel() is True # copy rendering settings from image1 via ID request_url = reverse('webgateway.views.copy_image_rdef_json') data = { "fromid": iid1 } _get_response(self.django_client, request_url, data, status_code=200) # paste rendering settings to image2 data = { 'toids': iid2 } _csrf_post_response(self.django_client, request_url, data) image2 = conn.getObject("Image", iid2) assert image2.isGreyscaleRenderingModel() is False
def test_render_image_region_malformed_region_argument(self): """ Either `tile` or `region` is a required request argument to `render_image_region()`. This test ensure that if a malformed `region` is requested the correct HTTP status code is used and that consequently, any and all rendering engines that were created servicing the request are closed. """ image_id = self.createTestImage(sizeC=1, session=self.sf).id.val request_url = reverse( 'webgateway.views.render_image_region', kwargs={'iid': str(image_id), 'z': '0', 't': '0'} ) data = {'region': 'malformed'} django_client = self.new_django_client_from_session_id( self.client.getSessionId() ) try: _get_response(django_client, request_url, data, status_code=400) finally: self.assert_no_leaked_rendering_engines()
def test_unsupported_share_content(self): """ Test if share content is loaded to the view even when share contain unsuported objects """ client, user = self.new_client_and_user() dataset = self.new_dataset(name=self.uuid()) image = self.new_image(name=self.uuid()) link = self.link(dataset, image) share_id = self.create_share( objects=[link, link.getChild(), link.getParent()], description="description", experimenters=[user]) share = self.client.sf.getShareService() assert len(share.getContents(share_id)) == 3 # load share content request_url = reverse('load_public', args=[share_id]) data = { "view": "icon" } _get_response(self.django_client, request_url, data, status_code=200)
def test_reset_rendering_settings(self): """ CSRF protection does not check `GET` requests so we need to be sure that this request results in an HTTP 405 (method not allowed) status code. """ img = self.createTestImage(session=self.sf) # Reset through webclient as it is calling directly # webgateway.reset_image_rdef_json request_url = reverse('reset_rdef_json') data = { 'toids': img.id.val, 'to_type': 'image' } _post_response(self.django_client, request_url, data) _csrf_post_response(self.django_client, request_url, data) _get_response(self.django_client, request_url, data) _csrf_get_response(self.django_client, request_url, data, status_code=405)
def test_render_image_region_malformed_region_argument(self): """ Either `tile` or `region` is a required request argument to `render_image_region()`. This test ensure that if a malformed `region` is requested the correct HTTP status code is used and that consequently, any and all rendering engines that were created servicing the request are closed. """ image_id = self.createTestImage(sizeC=1, session=self.sf).id.val request_url = reverse('webgateway.views.render_image_region', kwargs={ 'iid': str(image_id), 'z': '0', 't': '0' }) data = {'region': 'malformed'} django_client = self.new_django_client_from_session_id( self.client.getSessionId()) try: _get_response(django_client, request_url, data, status_code=400) finally: self.assert_no_leaked_rendering_engines()
def _get_response_json(django_client, request_url, query_string): rsp = _get_response(django_client, request_url, query_string, status_code=200) return json.loads(rsp.content)
def test_copy_past_rendering_settings_from_url(self): # Create 2 images with 2 channels each iid1 = self.createTestImage(sizeC=2, session=self.sf).id.val iid2 = self.createTestImage(sizeC=2, session=self.sf).id.val conn = omero.gateway.BlitzGateway(client_obj=self.client) # image1 set color model image1 = conn.getObject("Image", iid1) image1.resetDefaults() image1.setColorRenderingModel() image1.saveDefaults() image1 = conn.getObject("Image", iid1) # image2 set greyscale model image2 = conn.getObject("Image", iid2) image2.setGreyscaleRenderingModel() image2.saveDefaults() image2 = conn.getObject("Image", iid2) assert image1.isGreyscaleRenderingModel() is False assert image2.isGreyscaleRenderingModel() is True def buildParamC(im): chs = [] for i, ch in enumerate(im.getChannels()): act = "" if ch.isActive() else "-" start = ch.getWindowStart() end = ch.getWindowEnd() color = ch.getColor().getHtml() chs.append("%s%s|%s:%s$%s" % (act, i+1, start, end, color)) return ",".join(chs) # build channel parameter e.g. 1|0:15$FF0000... old_c1 = buildParamC(image1) # copy rendering settings from image1 via URL request_url = reverse('webgateway.views.copy_image_rdef_json') data = { "imageId": iid1, "c": old_c1, "ia": 0, "m": "c", "p": "normal", "q": 0.9, "t": 1, "x": 0, "y": 0, "z": 1, "zm": 100 } _get_response(self.django_client, request_url, data, status_code=200) # paste rendering settings to image2 data = { 'toids': iid2 } _csrf_post_response(self.django_client, request_url, data) # reload image1 image1 = conn.getObject("Image", iid1) # reload image2 image2 = conn.getObject("Image", iid2) new_c2 = buildParamC(image2) # compare Channels # old image1 1|0:15$FF0000,2|0:15$00FF00 # image2 1|0:15$00FF00,2|0:15$00FF00 # new image1 1|0:15$FF0000,2|0:15$00FF00 # image2 1|0:15$FF0000,2|0:15$00FF00 assert old_c1 == new_c2 # check if image2 rendering model changed from greyscale to color assert image2.isGreyscaleRenderingModel() is False
def _get_response_json(django_client, request_url, query_string, status_code=200): rsp = _get_response(django_client, request_url, query_string, status_code) assert rsp.get('Content-Type') == 'application/json' return json.loads(rsp.content)