Ejemplo n.º 1
0
    def from_native(self, image_url):
        try:
            res = requests.get(
                image_url,
                headers={'User-Agent': settings.MARKETPLACE_USER_AGENT})
        except:
            raise exceptions.ParseError(
                _('Invalid URL %(url)s').format(url=image_url))

        # Check response code from image download.
        if res.status_code != 200:
            raise exceptions.ParseError(
                _('Error downloading image from %(url)s').format(
                    url=image_url))

        # Validate the image.
        try:
            Image.open(StringIO.StringIO(res.content))
        except IOError:
            raise exceptions.ParseError(
                _('Image from %(url)s could not be parsed').format(
                    url=image_url))

        # Encode image to base64.
        img_data = StringIO.StringIO(res.content)
        img_data_uri = ('data:image/jpg;base64,' +
                        img_data.read().encode('base64'))

        # Return image file object and hash.
        return DataURLImageField().from_native(img_data_uri)
Ejemplo n.º 2
0
 def update(self, request, *a, **kw):
     obj = self.get_object()
     try:
         img = DataURLImageField().from_native(request.read())
     except ValidationError:
         return Response(status=400)
     i = Image.open(img)
     with storage.open(obj.image_path(), 'wb') as f:
         i.save(f, 'png')
     return Response(status=204)
Ejemplo n.º 3
0
 def update(self, request, *args, **kwargs):
     obj = self.get_object()
     try:
         img = DataURLImageField().from_native(request.read())
     except ValidationError:
         return Response(status=status.HTTP_400_BAD_REQUEST)
     i = Image.open(img)
     with storage.open(obj.image_path(), 'wb') as f:
         i.save(f, 'png')
     obj.update(has_image=True)
     return Response(status=status.HTTP_204_NO_CONTENT)
Ejemplo n.º 4
0
 def update(self, request, *args, **kwargs):
     obj = self.get_object()
     try:
         img, hash_ = DataURLImageField().from_native(request.read())
     except ValidationError:
         return Response(status=status.HTTP_400_BAD_REQUEST)
     i = Image.open(img)
     with storage.open(obj.image_path(), 'wb') as f:
         i.save(f, 'png')
     # Store the hash of the original image data sent.
     obj.update(image_hash=hash_)
     return Response(status=status.HTTP_204_NO_CONTENT)
Ejemplo n.º 5
0
 def test_from_native(self):
     d = DataURLImageField().from_native('data:image/gif;base64,' +
                                         IMAGE_DATA)
     eq_(d.read(), IMAGE_DATA.decode('base64'))
Ejemplo n.º 6
0
 def test_from_native(self):
     d = DataURLImageField().from_native("data:image/gif;base64," + IMAGE_DATA)
     eq_(d.read(), IMAGE_DATA.decode("base64"))
Ejemplo n.º 7
0
 def test_from_native(self):
     data, hash_ = DataURLImageField().from_native(
         'data:image/gif;base64,' + IMAGE_DATA)
     eq_(hash_, hashlib.md5(IMAGE_DATA.decode('base64')).hexdigest()[:8])
     eq_(data.read(), IMAGE_DATA.decode('base64'))
Ejemplo n.º 8
0
 def test_from_native(self):
     data, hash_ = DataURLImageField().from_native("data:image/gif;base64," + IMAGE_DATA)
     eq_(hash_, hashlib.md5(IMAGE_DATA.decode("base64")).hexdigest()[:8])
     eq_(data.read(), IMAGE_DATA.decode("base64"))