diff --git a/src/omero/gateway/__init__.py b/src/omero/gateway/__init__.py index c0c6d6d4f..3d9949944 100644 --- a/src/omero/gateway/__init__.py +++ b/src/omero/gateway/__init__.py @@ -6419,6 +6419,16 @@ def getGroup(self): self._conn, self._obj.getGroup()) or None return self._group + def getExternalInfo(self): + """ + Returns a wrapped ExternalInfo or None + + :return: ExternalInfo + :rtype: :class:`BlitzObjectWrapper` + """ + if self.externalInfo is not None: + return BlitzObjectWrapper(self._conn, self.externalInfo) + return None class _DatasetWrapper (BlitzObjectWrapper): """ diff --git a/test/unit/test_gateway.py b/test/unit/test_gateway.py index 7e1839b19..5f2f29842 100644 --- a/test/unit/test_gateway.py +++ b/test/unit/test_gateway.py @@ -28,13 +28,13 @@ import pytest import sys -from omero.gateway import BlitzGateway, ImageWrapper, \ +from omero.gateway import BlitzGateway, BlitzObjectWrapper, ImageWrapper, \ WellWrapper, LogicalChannelWrapper, OriginalFileWrapper from omero.model import ImageI, PixelsI, ExperimenterI, EventI, \ ProjectI, TagAnnotationI, FileAnnotationI, OriginalFileI, \ MapAnnotationI, NamedValue, PlateI, WellI, \ LogicalChannelI, LengthI, IlluminationI, BinningI, \ - DetectorSettingsI, DichroicI, LightPathI + DetectorSettingsI, DichroicI, LightPathI, ExternalInfoI from omero.model.enums import UnitsLength from omero.rtypes import rstring, rtime, rlong, rint, rdouble @@ -347,3 +347,28 @@ def test_simple_marshal_not_tiled(self, wrapped_image): data = wrapped_image.simpleMarshal(xtra={'tiled': True}) self.assert_data(data) assert data['tiled'] is False + + def test_externalinfo(self): + image = ImageI() + image.id = rlong(1) + image.name = rstring('name') + image.details.owner = ExperimenterI(1, False) + wrapper = ImageWrapper(conn=None, obj=image) + assert wrapper.getDetails().getExternalInfo() is None + assert wrapper._obj.getDetails().getExternalInfo() is None + assert wrapper.getDetails()._obj.getExternalInfo() is None + assert wrapper.getExternalInfo() is None + + external_info = ExternalInfoI() + external_info.id = rlong(1) + external_info.entityType = rstring("type") + external_info.entityId = rlong(1) + image.details.externalInfo = external_info + wrapper = ImageWrapper(conn=None, obj=image) + assert isinstance(wrapper.getDetails().getExternalInfo(), BlitzObjectWrapper) + assert wrapper.getDetails().getExternalInfo()._obj == external_info + assert wrapper._obj.getDetails().getExternalInfo() == external_info + assert wrapper.getDetails()._obj.getExternalInfo() == external_info + # BlitzObjectWrapper.getExternalInfo() returns omero.model.ExternalInfo + assert isinstance(wrapper.getExternalInfo(), ExternalInfoI) + assert wrapper.getExternalInfo() == external_info