Beispiel #1
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(ScreensView, self).get_opts(request, **kwargs)
     opts["order_by"] = "lower(obj.name)"
     # at /plate/:plate_id/screens/ we have 'plate_id' in kwargs
     if "plate_id" in kwargs:
         opts["plate"] = int(kwargs["plate_id"])
     else:
         # filter by query /screens/?plate=:id
         plate = getIntOrDefault(request, "plate", None)
         if plate is not None:
             opts["plate"] = plate
     return opts
Beispiel #2
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(ProjectsView, self).get_opts(request, **kwargs)
     opts["order_by"] = "lower(obj.name)"
     # at /datasets/:dataset_id/projects/ we have 'dataset_id' in kwargs
     if "dataset_id" in kwargs:
         opts["dataset"] = int(kwargs["dataset_id"])
     else:
         # Filter Projects by child 'dataset'
         dataset = getIntOrDefault(request, "dataset", None)
         if dataset is not None:
             opts["dataset"] = dataset
     return opts
Beispiel #3
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(ScreensView, self).get_opts(request, **kwargs)
     opts['order_by'] = 'lower(obj.name)'
     # at /plate/:plate_id/screens/ we have 'plate_id' in kwargs
     if 'plate_id' in kwargs:
         opts['plate'] = long(kwargs['plate_id'])
     else:
         # filter by query /screens/?plate=:id
         plate = getIntOrDefault(request, 'plate', None)
         if plate is not None:
             opts['plate'] = plate
     return opts
Beispiel #4
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(ProjectsView, self).get_opts(request, **kwargs)
     opts['order_by'] = 'lower(obj.name)'
     # at /datasets/:dataset_id/projects/ we have 'dataset_id' in kwargs
     if 'dataset_id' in kwargs:
         opts['dataset'] = long(kwargs['dataset_id'])
     else:
         # Filter Projects by child 'dataset'
         dataset = getIntOrDefault(request, 'dataset', None)
         if dataset is not None:
             opts['dataset'] = dataset
     return opts
Beispiel #5
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(ImagesView, self).get_opts(request, **kwargs)
     opts["order_by"] = "lower(obj.name)"
     # at /datasets/:dataset_id/images/ we have 'dataset_id' in kwargs
     if "dataset_id" in kwargs:
         opts["dataset"] = int(kwargs["dataset_id"])
     else:
         # filter by query /images/?dataset=:id
         dataset = getIntOrDefault(request, "dataset", None)
         if dataset is not None:
             opts["dataset"] = dataset
     # When listing images, always load pixels by default
     opts["load_pixels"] = True
     return opts
Beispiel #6
0
    def _save_object(self, request, conn, object_json, **kwargs):
        """Here we handle the saving for PUT and POST."""
        # Try to get group from request, OR from details below...
        group = getIntOrDefault(request, 'group', None)
        decoder = None
        objType = object_json['@type']
        decoder = get_decoder(objType)
        # If we are passed incomplete object, or decoder couldn't be found...
        if decoder is None:
            raise BadRequestError('No decoder found for type: %s' % objType)

        # Any marshal errors most likely due to invalid input. status=400
        try:
            obj = decoder.decode(object_json)
        except Exception:
            msg = 'Error in decode of json data by omero_marshal'
            raise BadRequestError(msg, traceback.format_exc())

        if group is None:
            try:
                # group might be None or unloaded
                group = obj.getDetails().group.id.val
            except AttributeError:
                # Instead of default stack trace, give nicer message:
                msg = ("Specify Group in omero:details or "
                       "query parameters ?group=:id")
                raise BadRequestError(msg)

        # If owner was unloaded (E.g. from get() above) or if missing
        # ome.model.meta.Experimenter.ldap (not supported by omero_marshal)
        # then saveObject() will give ValidationException.
        # Therefore we ignore any details for now:
        obj.unloadDetails()

        # TODO: Unlink children for Projects, Datasets and Screens to avoid
        # breaking links. See PR #4930
        if hasattr(obj, 'unloadDatasetLinks'):
            obj.unloadDatasetLinks()
        if hasattr(obj, 'unloadImageLinks'):
            obj.unloadImageLinks()
        if hasattr(obj, 'unloadPlateLinks'):
            obj.unloadPlateLinks()

        conn.SERVICE_OPTS.setOmeroGroup(group)
        obj = conn.getUpdateService().saveAndReturnObject(
            obj, conn.SERVICE_OPTS)
        encoder = get_encoder(obj.__class__)
        return {'data': encoder.encode(obj)}
Beispiel #7
0
    def get_opts(self, request, **kwargs):
        """Add extra parameters to the opts dict."""
        opts = super(RoisView, self).get_opts(request, **kwargs)
        opts["load_shapes"] = True
        # order_by ID simply for consistency & paging
        opts["order_by"] = "obj.id"

        # at /images/:image_id/rois/ we have 'image_id' in kwargs
        if "image_id" in kwargs:
            opts["image"] = int(kwargs["image_id"])
        else:
            # filter by query /rois/?image=:id
            image = getIntOrDefault(request, "image", None)
            if image is not None:
                opts["image"] = image

        return opts
Beispiel #8
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(WellsView, self).get_opts(request, **kwargs)
     opts["order_by"] = "obj.column, obj.row"
     # at /plates/:plate_id/wells/ we have 'plate_id' in kwargs
     if "plate_id" in kwargs:
         opts["plate"] = int(kwargs["plate_id"])
     elif "plateacquisition_id" in kwargs:
         opts["plateacquisition"] = int(kwargs["plateacquisition_id"])
     else:
         # filter by query /wells/?plate=:id
         plate = getIntOrDefault(request, "plate", None)
         if plate is not None:
             opts["plate"] = plate
     # When filtering by plate or plateacquisition, can filter by ws index
     if "index" in kwargs:
         opts["wellsample_index"] = int(kwargs["index"])
     # Listing Wells, load Images
     opts["load_images"] = True
     return opts
Beispiel #9
0
 def get_opts(self, request, **kwargs):
     """Add extra parameters to the opts dict."""
     opts = super(WellsView, self).get_opts(request, **kwargs)
     opts['order_by'] = 'obj.column, obj.row'
     # at /plates/:plate_id/wells/ we have 'plate_id' in kwargs
     if 'plate_id' in kwargs:
         opts['plate'] = long(kwargs['plate_id'])
     elif 'plateacquisition_id' in kwargs:
         opts['plateacquisition'] = long(kwargs['plateacquisition_id'])
     else:
         # filter by query /wells/?plate=:id
         plate = getIntOrDefault(request, 'plate', None)
         if plate is not None:
             opts['plate'] = plate
     # When filtering by plate or plateacquisition, can filter by ws index
     if 'index' in kwargs:
         opts['wellsample_index'] = int(kwargs['index'])
     # Listing Wells, load Images
     opts['load_images'] = True
     return opts
Beispiel #10
0
    def get_opts(self, request, **kwargs):
        """
        Add extra parameters to the opts dict.

        Query will order Groups by name
        """
        opts = super(ExperimenterGroupsView, self).get_opts(request, **kwargs)
        # Default 'load_experimenters' = True, but we don't want them
        opts["load_experimenters"] = False
        # order_by group name
        opts["order_by"] = "lower(obj.name)"

        # handle /experimenters/:experimenter_id/experimentergroups/
        if "experimenter_id" in kwargs:
            opts["experimenter"] = int(kwargs["experimenter_id"])
        else:
            # filter by query /experimentergroups/?experimenter=:id
            group = getIntOrDefault(request, "experimenter", None)
            if group is not None:
                opts["experimenter"] = group

        return opts
Beispiel #11
0
    def get_opts(self, request, **kwargs):
        """
        Add extra parameters to the opts dict for GET /experimenters/.

        Query will order by lastName, firstName
        Includes option to filter by group
        """
        opts = super(ExperimentersView, self).get_opts(request, **kwargs)
        # Default 'load_experimentergroups' is True, but we don't need groups
        opts["load_experimentergroups"] = False
        # order_by lastName, firstName
        opts["order_by"] = "lower(obj.lastName), lower(obj.firstName)"

        # at /experimentergroups/:group_id/experimenters/
        # we have 'group_id' in kwargs
        if "group_id" in kwargs:
            opts["experimentergroup"] = int(kwargs["group_id"])
        else:
            # filter by query /experimenters/?experimentergroup=:id
            group = getIntOrDefault(request, "experimentergroup", None)
            if group is not None:
                opts["experimentergroup"] = group

        return opts