예제 #1
0
 def test_get_relative_path_from_img_id_with_create_dirs(self):
     self.assertEqual(
         get_relative_path_from_img_id(
             'default:__t_abcde1234_ab12_myname.jpeg', create_dirs=True),
         'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.jpeg'
     )
     self.assertTrue(os.path.isdir(media_path('upload-img/common/34')))
예제 #2
0
 def test_upload_image_without_profile(self):
     f = get_img_file(create_test_image(1000, 1000))
     r = self.client.post(self.upload_url, {'images[]': [f]})
     self.assertEqual(r.status_code, 200)
     d = self.get_json(r)
     self.assertEqual(len(d['uploaded']), 1)
     self.assertEqual(len(d['errors']), 0)
     item = d['uploaded'][0]
     self.assertIn('url', item)
     self.assertIn('rel_url', item)
     self.assertIn('img_id', item)
     self.assertIn('variants', item)
     self.assertIsInstance(item['url'], basestring)
     self.assertIsInstance(item['rel_url'], basestring)
     self.assertIsInstance(item['img_id'], basestring)
     self.assertIsInstance(item['variants'], dict)
     self.assertEqual(len(item['variants']), 0)
     self.assertTrue(
         item['img_id'].startswith('default:' +
                                   dju_settings.DJU_IMG_UPLOAD_TMP_PREFIX))
     self.assertTrue(item['img_id'].endswith('.jpeg'))
     self.assertEqual(get_relative_path_from_img_id(item['img_id']),
                      item['rel_url'])
     self.assertEqual(settings.MEDIA_URL + item['rel_url'], item['url'])
     self.assertUploadedFilesExist(d)
     f.seek(0)
     r = self.client.post(self.upload_url, {
         'images[]': [f],
         'label': 'lab'
     })
     self.assertEqual(r.status_code, 200)
     d = self.get_json(r)
     item = d['uploaded'][0]
     self.assertTrue(item['img_id'].endswith('_lab.jpeg'))
     self.assertUploadedFilesExist(d)
예제 #3
0
 def test_upload_image_without_profile(self):
     f = get_img_file(create_test_image(1000, 1000))
     r = self.client.post(self.upload_url, {'images[]': [f]})
     self.assertEqual(r.status_code, 200)
     d = self.get_json(r)
     self.assertEqual(len(d['uploaded']), 1)
     self.assertEqual(len(d['errors']), 0)
     item = d['uploaded'][0]
     self.assertIn('url', item)
     self.assertIn('rel_url', item)
     self.assertIn('img_id', item)
     self.assertIn('variants', item)
     self.assertIsInstance(item['url'], basestring)
     self.assertIsInstance(item['rel_url'], basestring)
     self.assertIsInstance(item['img_id'], basestring)
     self.assertIsInstance(item['variants'], dict)
     self.assertEqual(len(item['variants']), 0)
     self.assertTrue(item['img_id'].startswith('default:' + dju_settings.DJU_IMG_UPLOAD_TMP_PREFIX))
     self.assertTrue(item['img_id'].endswith('.jpeg'))
     self.assertEqual(get_relative_path_from_img_id(item['img_id']), item['rel_url'])
     self.assertEqual(settings.MEDIA_URL + item['rel_url'], item['url'])
     self.assertUploadedFilesExist(d)
     f.seek(0)
     r = self.client.post(self.upload_url, {'images[]': [f], 'label': 'lab'})
     self.assertEqual(r.status_code, 200)
     d = self.get_json(r)
     item = d['uploaded'][0]
     self.assertTrue(item['img_id'].endswith('_lab.jpeg'))
     self.assertUploadedFilesExist(d)
예제 #4
0
 def test_save_file(self):
     f = get_img_file(create_test_image(1000, 1000))
     img_id = generate_img_id('simple1', ext=image_get_format(f), label='test-save-file')
     relative_path = get_relative_path_from_img_id(img_id)
     full_path = media_path(relative_path)
     save_file(f, full_path)
     file_exists = os.path.exists(full_path)
     self.assertTrue(file_exists)
     if file_exists:
         f.seek(0)
         h1 = hashlib.md5(f.read()).hexdigest()
         h2 = hashlib.md5(open(full_path, 'rb').read()).hexdigest()
         self.assertEqual(h1, h2)
예제 #5
0
 def test_save_file(self):
     f = get_img_file(create_test_image(1000, 1000))
     img_id = generate_img_id('simple1',
                              ext=image_get_format(f),
                              label='test-save-file')
     relative_path = get_relative_path_from_img_id(img_id)
     full_path = media_path(relative_path)
     save_file(f, full_path)
     file_exists = os.path.exists(full_path)
     self.assertTrue(file_exists)
     if file_exists:
         f.seek(0)
         h1 = hashlib.md5(f.read()).hexdigest()
         h2 = hashlib.md5(open(full_path, 'rb').read()).hexdigest()
         self.assertEqual(h1, h2)
예제 #6
0
 except ValueError, e:
     result['errors'].append(unicode(e))
     return send_json(result)
 for i in xrange(min(len(files), dju_settings.DJU_IMG_UPLOAD_MAX_FILES)):
     f = files[i]
     if not is_image(f, types=conf['TYPES']):
         result['errors'].append(
             unicode(ERROR_MESSAGES['wrong_file_format']) %
             {'name': f.name, 'formats': ', '.join(map(lambda t: t.upper(), conf['TYPES']))}
         )
         continue
     adjust_image(f, max_size=conf['MAX_SIZE'], new_format=conf['FORMAT'],
                  jpeg_quality=conf['JPEG_QUALITY'], fill=conf['FILL'], stretch=conf['STRETCH'])
     img_id = generate_img_id(profile, ext=image_get_format(f),
                              label=request.POST.get('label'), tmp=True)
     relative_path = get_relative_path_from_img_id(img_id)
     full_path = media_path(relative_path)
     save_file(f, full_path)
     data = {
         'url': settings.MEDIA_URL + relative_path,
         'rel_url': relative_path,
         'img_id': img_id,
         'variants': {},
     }
     for v_conf in conf['VARIANTS']:
         label = v_conf['LABEL']
         if not label:
             label = get_variant_label(v_conf)
         v_f = adjust_image(f, max_size=v_conf['MAX_SIZE'], new_format=v_conf['FORMAT'],
                            jpeg_quality=v_conf['JPEG_QUALITY'], fill=v_conf['FILL'],
                            stretch=v_conf['STRETCH'], return_new_image=True)
예제 #7
0
    def test_get_relative_path_from_img_id(self):
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg', ext='png'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12', ext='png'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg', variant_label='test'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12', variant_label='test'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg', variant_label='test', ext='png'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12', variant_label='test', ext='png'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg'),
            'upload-img/common/34/__t_abcde1234_ab12__m_93c87b2a66.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg', ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12__m_93c87b2a66.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg', variant_label='test'),
            'upload-img/common/34/__t_abcde1234_ab12__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg', variant_label='test', ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg', ext='png'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg', variant_label='test'),
            'upload-img/common/34/abcde1234_ab12_myname__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg', variant_label='test', ext='png'),
            'upload-img/common/34/abcde1234_ab12_myname__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12_myname.jpeg'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12_myname.jpeg', ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12_myname.jpeg', variant_label='test'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12_myname.jpeg', variant_label='test', ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg', variant_label='20x30'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_51c425ba08_20x30.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12', variant_label='20x30'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_51c425ba08_20x30.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg', variant_label='w20'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_a4b31265b5_w20.gif'
        )
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg', variant_label='w20', ext='png'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_a4b31265b5_w20.png'
        )
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.png', variant_label='lab0'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_4f495406be_lab0.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.png', variant_label='lab0', ext='gif'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_4f495406be_lab0.gif'
        )
예제 #8
0
 def test_get_relative_path_from_img_id_with_create_dirs(self):
     self.assertEqual(
         get_relative_path_from_img_id('default:__t_abcde1234_ab12_myname.jpeg', create_dirs=True),
         'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.jpeg'
     )
     self.assertTrue(os.path.isdir(media_path('upload-img/common/34')))
예제 #9
0
 if not is_image(f, types=conf["TYPES"]):
     result["errors"].append(
         unicode(ERROR_MESSAGES["wrong_file_format"])
         % {"name": f.name, "formats": ", ".join(map(lambda t: t.upper(), conf["TYPES"]))}
     )
     continue
 adjust_image(
     f,
     max_size=conf["MAX_SIZE"],
     new_format=conf["FORMAT"],
     jpeg_quality=conf["JPEG_QUALITY"],
     fill=conf["FILL"],
     stretch=conf["STRETCH"],
 )
 img_id = generate_img_id(profile, ext=image_get_format(f), label=request.POST.get("label"), tmp=True)
 relative_path = get_relative_path_from_img_id(img_id)
 full_path = media_path(relative_path)
 save_file(f, full_path)
 data = {"url": settings.MEDIA_URL + relative_path, "rel_url": relative_path, "img_id": img_id, "variants": {}}
 for v_conf in conf["VARIANTS"]:
     label = v_conf["LABEL"]
     if not label:
         label = get_variant_label(v_conf)
     v_f = adjust_image(
         f,
         max_size=v_conf["MAX_SIZE"],
         new_format=v_conf["FORMAT"],
         jpeg_quality=v_conf["JPEG_QUALITY"],
         fill=v_conf["FILL"],
         stretch=v_conf["STRETCH"],
         return_new_image=True,
예제 #10
0
    def test_get_relative_path_from_img_id(self):
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg',
                                          ext='png'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.png')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12', ext='png'),
            'upload-img/common/34/abcde1234_ab12__m_93c87b2a66.png')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg',
                                          variant_label='test'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12',
                                          variant_label='test'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12.jpeg',
                                          variant_label='test',
                                          ext='png'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.png')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12',
                                          variant_label='test',
                                          ext='png'),
            'upload-img/common/34/abcde1234_ab12__v_b8a30d0227_test.png')

        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg'),
            'upload-img/common/34/__t_abcde1234_ab12__m_93c87b2a66.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg',
                                          ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12__m_93c87b2a66.png')
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg',
                                          variant_label='test'),
            'upload-img/common/34/__t_abcde1234_ab12__v_b8a30d0227_test.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('default:__t_abcde1234_ab12.jpeg',
                                          variant_label='test',
                                          ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12__v_b8a30d0227_test.png')

        self.assertEqual(
            get_relative_path_from_img_id(
                'default:abcde1234_ab12_myname.jpeg'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg',
                                          ext='png'),
            'upload-img/common/34/abcde1234_ab12_myname__m_93c87b2a66.png')
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg',
                                          variant_label='test'),
            'upload-img/common/34/abcde1234_ab12_myname__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id('default:abcde1234_ab12_myname.jpeg',
                                          variant_label='test',
                                          ext='png'),
            'upload-img/common/34/abcde1234_ab12_myname__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id(
                'default:__t_abcde1234_ab12_myname.jpeg'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id(
                'default:__t_abcde1234_ab12_myname.jpeg', ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__m_93c87b2a66.png')
        self.assertEqual(
            get_relative_path_from_img_id(
                'default:__t_abcde1234_ab12_myname.jpeg',
                variant_label='test'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__v_b8a30d0227_test.jpeg'
        )
        self.assertEqual(
            get_relative_path_from_img_id(
                'default:__t_abcde1234_ab12_myname.jpeg',
                variant_label='test',
                ext='png'),
            'upload-img/common/34/__t_abcde1234_ab12_myname__v_b8a30d0227_test.png'
        )

        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg',
                                          variant_label='20x30'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_51c425ba08_20x30.png')
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12',
                                          variant_label='20x30'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_51c425ba08_20x30.png')
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg',
                                          variant_label='w20'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_a4b31265b5_w20.gif')
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.jpeg',
                                          variant_label='w20',
                                          ext='png'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_a4b31265b5_w20.png')
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.png',
                                          variant_label='lab0'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_4f495406be_lab0.jpeg')
        self.assertEqual(
            get_relative_path_from_img_id('simple0:__t_abcde1234_ab12.png',
                                          variant_label='lab0',
                                          ext='gif'),
            'upload-img/s0/34/__t_abcde1234_ab12__v_4f495406be_lab0.gif')