def test_get_filename(self):
     self.assertEqual(filename.get_filename('name', (100, 200), 'JPEG'),
                      'name/100x200.jpg')
     self.assertEqual(filename.get_filename('name', (100, None), 'PNG'),
                      'name/100x.png')
     self.assertEqual(filename.get_filename('name', (None, 200), 'WEBP'),
                      'name/x200.webp')
Exemple #2
0
 def _real_path(self, image_id, image_size, image_format):
     fileid = self.hash(image_id)
     index = [fileid[pos:pos + 1] for pos in range(0, 4, 1)]
     if (not image_size and image_format) or (image_size and not image_format):
         raise ValueError('Size and format need to both be None or both have values.')
     if not (image_size and image_format):
         return os.path.join(self.root, os.path.join(*index), image_id)
     filename = get_filename(image_id, image_size, image_format)
     return os.path.join(self.root, os.path.join(*index), filename)
Exemple #3
0
    def handle_image(self, req):
        request_format = req.get_image_format()
        request_id = req.get_image_id()
        request_size = req.get_image_size()
        request_filename = get_filename(request_id, request_size, request_format)

        if not self.filehandler.exists(request_id):
            raise FileNotFoundError('File "%s" does not exist on filesystem' % request_filename)
        elif self.filehandler.exists(request_id, request_size, request_format):
                image_data = self.filehandler.read(request_id, request_size, request_format)
        else:
            image_data = self.filehandler.read_best(request_id, request_size)
            image = Canvas.from_bytes(image_data)
            image.smart_resize(request_size)
            image_data = image.to_bytes(format=request_format)
        return SuccessResponse(image_data, request_format)