Example #1
0
    def test_populate_redis_backend_with_size(self):
        TestModel.objects.all().delete()

        for i in range(1, 10):
            test_objc = TestModel.objects.create()

            with open('thumbnails/tests/tests.png', 'rb') as image_file:
                test_objc.avatar = File(image_file)
                test_objc.save()

        # create all thumbnails
        objects = TestModel.objects.all()
        images = []
        for obj in objects:
            obj.avatar.thumbnails.metadata_backend = RedisBackend()
            for size in conf.SIZES:
                obj.avatar.thumbnails.get(size)
            images.append(obj.avatar)

        # reset _thumbnails
        for image in images:
            image.thumbnails._thumbnails = {}

        # Adding format image run correctly
        fetch_thumbnails(images, ['small', 'large', 'source_with_format'])
        for image in images:
            thumbnails = image.thumbnails
            sizes = [size for size in thumbnails._thumbnails.keys()]
            for size in sizes:
                # Make sure all thumbnail sizes have the right value
                self.assertEqual(thumbnails._thumbnails[size].name,
                                 thumbnails.get(size).name)
            self.assertEqual(set(sizes),
                             set(['small', 'large', 'source_with_format']))
Example #2
0
    def test_fetch_redis_backend(self):
        TestModel.objects.all().delete()

        for i in range(1, 10):
            test_objc = TestModel.objects.create()

            with open('thumbnails/tests/tests.png', 'rb') as image_file:
                test_objc.avatar = File(image_file)
                test_objc.save()

        images = []
        objects = TestModel.objects.all()
        # test pre-created thumbnails
        for obj in objects:
            obj.avatar.thumbnails.metadata_backend = RedisBackend()
            images.append(obj.avatar)

        # make sure cache is still empty, so it can be generated freshly
        fetch_thumbnails(images)
        for image in images:
            self.assertEqual(image.thumbnails._thumbnails, {})

        # create all thumbnails
        for image in images:
            for size in conf.SIZES:
                image.thumbnails.get(size)

        # reset _thumbnails
        for image in images:
            image.thumbnails._thumbnails = {}

        fetch_thumbnails(images)
        for image in images:
            thumbnails = image.thumbnails
            sizes = [size for size in thumbnails._thumbnails.keys()]
            for size in sizes:
                # Make sure all thumbnail sizes have the right value
                self.assertEqual(thumbnails._thumbnails[size].name,
                                 thumbnails.get(size).name)
            self.assertEqual(set(sizes), set(conf.SIZES))

        # Fetch for format image run correctly
        fetch_thumbnails(images, ['source_with_format'])
        for image in images:
            thumbnails = image.thumbnails
            sizes = [size for size in thumbnails._thumbnails.keys()]
            self.assertEqual(thumbnails._thumbnails['source_with_format'].name,
                             thumbnails.get('source_with_format').name)
            self.assertEqual(sizes, ['source_with_format'])
            self.assertEqual(
                os.path.splitext(
                    thumbnails._thumbnails['source_with_format'].name)[1],
                '.webp')
    def setUp(self):
        self.source_name = "tests.png"
        self.size = "small"

        self.instance = TestModel.objects.create()
        with open('thumbnails/tests/tests.png', 'rb') as image_file:
            self.instance.avatar = File(image_file)
            self.instance.save()
        self.backend = RedisBackend()
        self.instance.avatar.thumbnails.metadata_backend = self.backend
        self.avatar_folder = \
            os.path.join(self.instance.avatar.storage.temporary_location, conf.BASE_DIR, 'avatars')

        self.instance.avatar.thumbnails.small

        self.basename = os.path.basename(self.instance.avatar.path)
        self.filename, self.ext = os.path.splitext(self.basename)
 def setUp(self):
     self.backend = RedisBackend()
     self.redis = StrictRedis()