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
Example #2
0
    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
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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)
Example #13
0
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)
Example #14
0
    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)
Example #15
0
    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
Example #17
0
    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()
Example #18
0
    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)
Example #20
0
    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()
Example #21
0
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)
Example #22
0
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)