Ejemplo n.º 1
0
    def test_images(self):
        self.um.create_user('image_creator')
        image_user = self.um.get_user('image_creator')

        # create a bucket for our bundle
        Bucket.create('image_bucket', image_user)
        bucket = Bucket('image_bucket')

        # upload an image manifest/parts
        bundle_path = os.path.join(os.path.dirname(__file__), 'bundle')
        for path in glob.glob(bundle_path + '/*'):
            bucket[os.path.basename(path)] = open(path, 'rb').read()

        # register an image
        Image.create('i-testing', 'image_bucket/1mb.manifest.xml', image_user)

        # verify image
        my_img = Image('i-testing')
        result_image_file = os.path.join(my_img.path, 'image')
        self.assertEqual(os.stat(result_image_file).st_size, 1048576)

        sha = hashlib.sha1(open(result_image_file).read()).hexdigest()
        self.assertEqual(sha, '3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3')

        # verify image permissions
        new_user = self.um.get_user('new_user')
        self.assert_(my_img.is_authorized(new_user) == False)
Ejemplo n.º 2
0
    def delete(self):
        """ delete a registered image """
        image_id = self.get_argument("image_id", u"")
        image = Image(image_id)

        if image.owner_id != self.user.id:
            raise web.HTTPError(403)

        image.delete()

        self.set_status(204)
Ejemplo n.º 3
0
    def post(self):
        """ update image attributes: public/private """

        image_id = self.get_argument('image_id', u'')
        operation = self.get_argument('operation', u'')

        image = Image(image_id)

        if image.owner_id != self.user.id:
            raise web.HTTPError(403)

        image.set_public(operation=='add')

        self.finish()
Ejemplo n.º 4
0
    def get(self):
        """ returns a json listing of all images
            that a user has permissions to see """

        images = [i for i in Image.all() if i.is_authorized(self.user)]

        self.finish(json.dumps([i.metadata for i in images]))