Browse Source

Add a setting to use symbolic links for original files (closes #36).

pull/43/head
Simon Conseil 13 years ago
parent
commit
440ef5f218
  1. 12
      sigal/gallery.py
  2. 1
      sigal/settings.py
  3. 3
      sigal/templates/sigal.conf.py
  4. 16
      tests/test_gallery.py

12
sigal/gallery.py

@ -293,7 +293,8 @@ def process_image(filepath, outpath, settings):
options = {}
if settings['keep_orig']:
shutil.copy(filepath, join(outpath, settings['orig_dir'], filename))
copy(filepath, join(outpath, settings['orig_dir'], filename),
symlink=settings['orig_link'])
image.generate_image(filepath, outname, settings, options=options)
@ -312,7 +313,8 @@ def process_video(filepath, outpath, settings):
outname = join(outpath, base + '.webm')
if settings['keep_orig']:
shutil.copy(filepath, join(outpath, settings['orig_dir'], filename))
copy(filepath, join(outpath, settings['orig_dir'], filename),
symlink=settings['orig_link'])
# TODO: Add specific video size settings
video.generate_video(filepath, outname, settings['img_size'],
@ -325,6 +327,12 @@ def process_video(filepath, outpath, settings):
fit=settings['thumb_fit'], options=settings['jpg_options'])
def copy(src, dst, symlink=False):
"""Copy or symlink the file."""
func = os.symlink if symlink else shutil.copy2
func(src, dst)
def get_metadata(path):
""" Get album metadata from DESCRIPTION_FILE:

1
sigal/settings.py

@ -39,6 +39,7 @@ _DEFAULT_CONFIG = {
'thumb_fit': True,
'keep_orig': False,
'orig_dir': 'original',
'orig_link': False,
'jpg_options': {'quality': 85, 'optimize': True, 'progressive': True},
'webm_options': {'crf': '10', 'bitrate': '1.6M',
'qmin': '4', 'qmax': '63'},

3
sigal/templates/sigal.conf.py

@ -58,6 +58,9 @@ thumb_size = (280, 210)
# Subdirectory for original images
# orig_dir = 'original'
# Use symbolic links instead of copying the original images
# orig_link = False
# Jpeg options
# jpg_options = {'quality': 85,
# 'optimize': True,

16
tests/test_gallery.py

@ -3,7 +3,7 @@
import os
import pytest
from sigal.gallery import Gallery, PathsDb, get_metadata
from sigal.gallery import Gallery, PathsDb, get_metadata, copy
from sigal.settings import read_settings
CURRENT_DIR = os.path.dirname(__file__)
@ -126,3 +126,17 @@ def test_gallery(tmpdir):
html = f.read()
assert '<title>Sigal test gallery</title>' in html
def test_copy(tmpdir):
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2',
REF['dir2']['medias'][0])
dst = str(tmpdir.join(REF['dir2']['medias'][0]))
copy(src, dst)
assert os.path.isfile(dst)
src = os.path.join(SAMPLE_DIR, 'pictures', 'dir2',
REF['dir2']['medias'][1])
dst = str(tmpdir.join(REF['dir2']['medias'][1]))
copy(src, dst, symlink=True)
assert os.path.islink(dst)

Loading…
Cancel
Save