def delete(self, req, image_id, id): """ Removes a membership from the image. """ if req.context.read_only: raise webob.exc.HTTPForbidden() elif req.context.owner is None: raise webob.exc.HTTPUnauthorized(_("No authenticated user")) # Make sure the image exists try: image = db_api.image_get(req.context, image_id) except exception.NotFound: raise webob.exc.HTTPNotFound() except exception.NotAuthorized: # If it's private and doesn't belong to them, don't let on # that it exists msg = _("Access by %(user)s to image %(id)s " "denied") % ({ 'user': req.context.user, 'id': image_id }) logger.info(msg) raise webob.exc.HTTPNotFound() # Can they manipulate the membership? if not req.context.is_image_sharable(image): msg = _("No permission to share that image") raise webob.exc.HTTPForbidden(msg) # Look up an existing membership try: session = db_api.get_session() member_ref = db_api.image_member_find(req.context, image_id, id, session=session) db_api.image_member_delete(req.context, member_ref, session=session) except exception.NotFound: pass # Make an appropriate result return webob.exc.HTTPNoContent()
def delete(self, req, image_id, id): """ Removes a membership from the image. """ if req.context.read_only: raise webob.exc.HTTPForbidden() elif req.context.owner is None: raise webob.exc.HTTPUnauthorized(_("No authenticated user")) # Make sure the image exists try: image = db_api.image_get(req.context, image_id) except exception.NotFound: raise webob.exc.HTTPNotFound() except exception.NotAuthorized: # If it's private and doesn't belong to them, don't let on # that it exists msg = _("Access by %(user)s to image %(id)s " "denied") % ({'user': req.context.user, 'id': image_id}) logger.info(msg) raise webob.exc.HTTPNotFound() # Can they manipulate the membership? if not req.context.is_image_sharable(image): msg = _("No permission to share that image") raise webob.exc.HTTPForbidden(msg) # Look up an existing membership try: session = db_api.get_session() member_ref = db_api.image_member_find(req.context, image_id, id, session=session) db_api.image_member_delete(req.context, member_ref, session=session) except exception.NotFound: pass # Make an appropriate result return webob.exc.HTTPNoContent()
add.append(datum) # We now have a filtered list of memberships to add and # memberships to modify. Let's start by walking through all # the existing image memberships... for memb in image['members']: if memb['id'] in existing: # Just update the membership in place update = existing[memb['id']]['values'] db_api.image_member_update(req.context, memb, update, session=session) else: # Outdated one; needs to be deleted db_api.image_member_delete(req.context, memb, session=session) # Now add the non-existant ones for memb in add: db_api.image_member_create(req.context, memb, session=session) # Make an appropriate result return webob.exc.HTTPNoContent() def update(self, req, image_id, id, body=None): """ Adds a membership to the image, or updates an existing one. If a body is present, it is a dict with the following format:: {"member": { "can_share": [True|False]
# Default can_share datum['can_share'] = bool(datum['can_share']) add.append(datum) # We now have a filtered list of memberships to add and # memberships to modify. Let's start by walking through all # the existing image memberships... for memb in image['members']: if memb['id'] in existing: # Just update the membership in place update = existing[memb['id']]['values'] db_api.image_member_update(req.context, memb, update, session=session) else: # Outdated one; needs to be deleted db_api.image_member_delete(req.context, memb, session=session) # Now add the non-existant ones for memb in add: db_api.image_member_create(req.context, memb, session=session) # Make an appropriate result return webob.exc.HTTPNoContent() def update(self, req, image_id, id, body=None): """ Adds a membership to the image, or updates an existing one. If a body is present, it is a dict with the following format:: {"member": { "can_share": [True|False]