django-imagekit/tests/utils.py

107 lines
2.6 KiB
Python
Raw Permalink Normal View History

2013-01-09 04:36:22 +00:00
from bs4 import BeautifulSoup
2012-02-18 06:56:17 +00:00
import os
2016-07-17 01:43:04 +00:00
import shutil
2013-01-24 03:39:14 +00:00
from django.core.files import File
2013-01-09 04:36:22 +00:00
from django.template import Context, Template
2013-03-15 04:49:44 +00:00
from imagekit.cachefiles.backends import Simple, CacheFileState
2016-07-17 01:43:04 +00:00
from imagekit.conf import settings
2012-07-18 21:21:47 +00:00
from imagekit.lib import Image, StringIO
2016-07-17 01:43:04 +00:00
from imagekit.utils import get_cache
2013-03-15 02:23:47 +00:00
from nose.tools import assert_true, assert_false
2012-07-18 21:21:47 +00:00
import pickle
2013-03-15 04:49:44 +00:00
from tempfile import NamedTemporaryFile
from .models import Photo
2012-02-18 06:56:17 +00:00
def get_image_file():
2012-02-18 06:56:17 +00:00
"""
See also:
http://en.wikipedia.org/wiki/Lenna
http://sipi.usc.edu/database/database.php?volume=misc&image=12
https://lintian.debian.org/tags/license-problem-non-free-img-lenna.html
https://github.com/libav/libav/commit/8895bf7b78650c0c21c88cec0484e138ec511a4b
2012-02-18 06:56:17 +00:00
"""
path = os.path.join(settings.MEDIA_ROOT, 'reference.png')
return open(path, 'r+b')
2013-03-15 04:49:44 +00:00
def get_unique_image_file():
file = NamedTemporaryFile()
file.write(get_image_file().read())
return file
2012-11-06 02:56:05 +00:00
def create_image():
return Image.open(get_image_file())
2012-02-18 06:56:17 +00:00
def create_instance(model_class, image_name):
instance = model_class()
2013-01-24 03:39:14 +00:00
img = File(get_image_file())
instance.original_image.save(image_name, img)
2012-02-18 06:56:17 +00:00
instance.save()
img.close()
return instance
def create_photo(name):
return create_instance(Photo, name)
2012-07-18 21:21:47 +00:00
def pickleback(obj):
pickled = StringIO()
pickle.dump(obj, pickled)
pickled.seek(0)
return pickle.load(pickled)
2013-01-09 04:36:22 +00:00
def render_tag(ttag):
img = get_image_file()
template = Template('{%% load imagekit %%}%s' % ttag)
context = Context({'img': img})
return template.render(context)
def get_html_attrs(ttag):
return BeautifulSoup(render_tag(ttag), features="html.parser").img.attrs
2013-03-15 02:23:47 +00:00
def assert_file_is_falsy(file):
assert_false(bool(file), 'File is not falsy')
def assert_file_is_truthy(file):
assert_true(bool(file), 'File is not truthy')
2013-03-15 04:49:44 +00:00
class DummyAsyncCacheFileBackend(Simple):
"""
2013-07-17 01:02:48 +00:00
A cache file backend meant to simulate async generation.
2013-03-15 04:49:44 +00:00
"""
is_async = True
def generate(self, file, force=False):
2013-07-17 01:02:48 +00:00
pass
2016-07-17 01:43:04 +00:00
def clear_imagekit_cache():
cache = get_cache()
cache.clear()
# Clear IMAGEKIT_CACHEFILE_DIR
cache_dir = os.path.join(settings.MEDIA_ROOT, settings.IMAGEKIT_CACHEFILE_DIR)
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)
def clear_imagekit_test_files():
clear_imagekit_cache()
for fname in os.listdir(settings.MEDIA_ROOT):
if fname != 'reference.png':
path = os.path.join(settings.MEDIA_ROOT, fname)
if os.path.isdir(path):
shutil.rmtree(path)
else:
os.remove(path)