Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_copy(tmpdir):
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst)
assert os.path.isfile(dst)
filename = 'm57_the_ring_nebula-587px.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
def test_copy(tmpdir):
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst)
assert os.path.isfile(dst)
filename = 'm57_the_ring_nebula-587px.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst, symlink=True, rellink=True)
assert os.path.islink(dst)
assert os.path.join(os.path.dirname(CURRENT_DIR)), os.readlink(dst) == src
# get absolute path of the current dir plus the relative dir
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
utils.copy(src, dst, symlink=True)
assert os.path.islink(dst)
assert os.readlink(dst) == src
filename = 'KeckObservatory20071020.jpg'
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2', filename)
dst = str(tmpdir.join(filename))
utils.copy(src, dst, symlink=True, rellink=True)
assert os.path.islink(dst)
assert os.path.join(os.path.dirname(CURRENT_DIR)), os.readlink(dst) == src
# get absolute path of the current dir plus the relative dir
src = str(tmpdir.join('foo.txt'))
dst = str(tmpdir.join('bar.txt'))
p = Path(src)
p.touch()
p.chmod(0o444)
utils.copy(src, dst)
utils.copy(src, dst)
def process_video(filepath, outpath, settings):
"""Process a video: resize, create thumbnail."""
logger = logging.getLogger(__name__)
filename = os.path.split(filepath)[1]
basename, ext = splitext(filename)
try:
if settings['use_orig'] and is_valid_html5_video(ext):
outname = os.path.join(outpath, filename)
utils.copy(filepath, outname, symlink=settings['orig_link'])
else:
valid_formats = ['mp4', 'webm']
video_format = settings['video_format']
if video_format not in valid_formats:
logger.error('Invalid video_format. Please choose one of: %s',
valid_formats)
raise ValueError
outname = os.path.join(outpath, basename + '.' + video_format)
generate_video(filepath, outname, settings,
options=settings.get(video_format + '_options'))
except Exception:
if logger.getEffectiveLevel() == logging.DEBUG:
raise
else:
def generate_image(source, outname, settings, options=None):
"""Image processor, rotate and resize the image.
:param source: path to an image
:param outname: output filename
:param settings: settings dict
:param options: dict with PIL options (quality, optimize, progressive)
"""
logger = logging.getLogger(__name__)
if settings['use_orig'] or source.endswith('.gif'):
utils.copy(source, outname, symlink=settings['orig_link'])
return
img = _read_image(source)
original_format = img.format
if settings['copy_exif_data'] and settings['autorotate_images']:
logger.warning("The 'autorotate_images' and 'copy_exif_data' settings "
"are not compatible because Sigal can't save the "
"modified Orientation tag.")
# Preserve EXIF data
if settings['copy_exif_data'] and _has_exif_tags(img):
if options is not None:
options = deepcopy(options)
else:
options = {}
if title:
settings['title'] = title
locale.setlocale(locale.LC_ALL, settings['locale'])
init_plugins(settings)
gal = Gallery(settings, ncpu=ncpu, quiet=quiet)
gal.build(force=force)
# copy extra files
for src, dst in settings['files_to_copy']:
src = os.path.join(settings['source'], src)
dst = os.path.join(settings['destination'], dst)
logger.debug('Copy %s to %s', src, dst)
copy(src, dst, symlink=settings['orig_link'], rellink=settings['rel_link'])
stats = gal.stats
def format_stats(_type):
opt = ["{} {}".format(stats[_type + '_' + subtype], subtype)
for subtype in ('skipped', 'failed')
if stats[_type + '_' + subtype] > 0]
opt = ' ({})'.format(', '.join(opt)) if opt else ''
return '{} {}s{}'.format(stats[_type], _type, opt)
if not quiet:
print('Done, processed {} and {} in {:.2f} seconds.'
.format(format_stats('image'), format_stats('video'),
time.time() - start_time))
def big(self):
"""Path to the original image, if ``keep_orig`` is set (relative to the
album directory). Copy the file if needed.
"""
if self.settings['keep_orig']:
s = self.settings
if s['use_orig']:
# The image *is* the original, just use it
return self.filename
orig_path = join(s['destination'], self.path, s['orig_dir'])
check_or_create_dir(orig_path)
big_path = join(orig_path, self.src_filename)
if not isfile(big_path):
copy(self.src_path, big_path, symlink=s['orig_link'],
rellink=self.settings['rel_link'])
return join(s['orig_dir'], self.src_filename)