Source code for girder_large_image.rest.item_meta

#############################################################################
#  Copyright Kitware Inc.
#
#  Licensed under the Apache License, Version 2.0 ( the "License" );
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#############################################################################

from girder.api import access
from girder.api.describe import Description, describeRoute
from girder.api.rest import loadmodel
from girder.api.v1.item import Item
from girder.constants import AccessType, TokenScope


[docs] class InternalMetadataItemResource(Item): def __init__(self, apiRoot): super().__init__() apiRoot.item.route( 'GET', (':itemId', 'internal_metadata', ':key'), self.getMetadataKey, ) apiRoot.item.route( 'PUT', (':itemId', 'internal_metadata', ':key'), self.updateMetadataKey, ) apiRoot.item.route( 'DELETE', (':itemId', 'internal_metadata', ':key'), self.deleteMetadataKey, )
[docs] @describeRoute( Description('Get the value for a single internal metadata key on this item.') .param('itemId', 'The ID of the item.', paramType='path') .param( 'key', 'The metadata key to retrieve.', paramType='path', default='meta', ) .errorResponse('ID was invalid.') .errorResponse('Read access was denied for the item.', 403), ) @access.public() @loadmodel(model='item', map={'itemId': 'item'}, level=AccessType.READ) def getMetadataKey(self, item, key, params): if key not in item: return None return item[key]
[docs] @describeRoute( Description( 'Overwrite the value for a single internal metadata key on this item.', ) .param('itemId', 'The ID of the item.', paramType='path') .param( 'key', 'The metadata key which should have a new value. \ The default key, "meta" is equivalent to the external metadata. \ Editing the "meta" key is equivalent to using PUT /item/{id}/metadata.', paramType='path', default='meta', ) .param( 'value', 'The new value that should be written for the chosen metadata key', paramType='body', ) .errorResponse('ID was invalid.') .errorResponse('Write access was denied for the item.', 403), ) @access.user(scope=TokenScope.DATA_WRITE) @loadmodel(model='item', map={'itemId': 'item'}, level=AccessType.WRITE) def updateMetadataKey(self, item, key, params): item[key] = self.getBodyJson() self._model.save(item)
[docs] @describeRoute( Description('Delete a single internal metadata key on this item.') .param('itemId', 'The ID of the item.', paramType='path') .param( 'key', 'The metadata key to delete.', paramType='path', default='meta', ) .errorResponse('ID was invalid.') .errorResponse('Write access was denied for the item.', 403), ) @access.user(scope=TokenScope.DATA_WRITE) @loadmodel(model='item', map={'itemId': 'item'}, level=AccessType.READ) def deleteMetadataKey(self, item, key, params): if key in item: del item[key] self._model.save(item)