def show(self, req, id): """ Returns an iterator that can be used to retrieve an image's data along with the image metadata. :param req: The WSGI/Webob Request object :param id: The opaque image identifier :raises HTTPNotFound if image is not available to user """ self._enforce(req, 'get_image') self._enforce(req, 'download_image') image_meta = self.get_active_image_meta_or_404(req, id) if image_meta.get('size') == 0: image_iterator = iter([]) else: image_iterator, size = self._get_from_store(req.context, image_meta['location']) image_iterator = utils.cooperative_iter(image_iterator) image_meta['size'] = size or image_meta['size'] del image_meta['location'] return { 'image_iterator': image_iterator, 'image_meta': image_meta, }
def show(self, req, id): """ Returns an iterator that can be used to retrieve an image's data along with the image metadata. :param req: The WSGI/Webob Request object :param id: The opaque image identifier :raises HTTPNotFound if image is not available to user """ self._enforce(req, "get_image") self._enforce(req, "download_image") image_meta = self.get_active_image_meta_or_404(req, id) self._enforce_read_protected_props(image_meta, req) if image_meta.get("size") == 0: image_iterator = iter([]) else: image_iterator, size = self._get_from_store(req.context, image_meta["location"]) image_iterator = utils.cooperative_iter(image_iterator) image_meta["size"] = size or image_meta["size"] image_meta = redact_loc(image_meta) return {"image_iterator": image_iterator, "image_meta": image_meta}
def show(self, req, id): """ Returns an iterator that can be used to retrieve an image's data along with the image metadata. :param req: The WSGI/Webob Request object :param id: The opaque image identifier :raises HTTPNotFound if image is not available to user """ self._enforce(req, 'get_image') self._enforce(req, 'download_image') image_meta = self.get_active_image_meta_or_404(req, id) self._enforce_read_protected_props(image_meta, req) if image_meta.get('size') == 0: image_iterator = iter([]) else: image_iterator, size = self._get_from_store(req.context, image_meta['location']) image_iterator = utils.cooperative_iter(image_iterator) image_meta['size'] = size or image_meta['size'] image_meta = redact_loc(image_meta) return { 'image_iterator': image_iterator, 'image_meta': image_meta, }
def show(self, req, id): """ Returns an iterator that can be used to retrieve an image's data along with the image metadata. :param req: The WSGI/Webob Request object :param id: The opaque image identifier :raises HTTPNotFound if image is not available to user """ self._enforce(req, "get_image") try: image_meta = self.get_active_image_meta_or_404(req, id) except HTTPNotFound: # provision for backward-compatibility breaking issue # catch the 404 exception and raise it after enforcing # the policy with excutils.save_and_reraise_exception(): self._enforce(req, "download_image") else: target = utils.create_mashup_dict(image_meta) self._enforce(req, "download_image", target=target) self._enforce_read_protected_props(image_meta, req) if image_meta.get("size") == 0: image_iterator = iter([]) else: image_iterator, size = self._get_from_store(req.context, image_meta["location"]) image_iterator = utils.cooperative_iter(image_iterator) image_meta["size"] = size or image_meta["size"] image_meta = redact_loc(image_meta) return {"image_iterator": image_iterator, "image_meta": image_meta}