Skip to content

Commit d3f1b58

Browse files
Merge pull request pelican-plugins#71 from patrickfournier/init-settings
Initialize settings to avoid crashes when user does not defines them.
2 parents 5b6aa38 + 9e54483 commit d3f1b58

File tree

2 files changed

+26
-23
lines changed

2 files changed

+26
-23
lines changed

pelican/plugins/image_process/image_process.py

+24-23
Original file line numberDiff line numberDiff line change
@@ -262,20 +262,33 @@ def apply_filter(i, f):
262262
}
263263

264264

265-
def harvest_images(path, context):
266-
logger.debug("%s harvesting %r", LOG_PREFIX, path)
265+
def set_default_settings(settings):
266+
# Set default value for 'IMAGE_PROCESS'.
267+
if "IMAGE_PROCESS" not in settings:
268+
logger.warning("{} No processing instructions defined.".format(LOG_PREFIX))
269+
settings["IMAGE_PROCESS"] = {}
270+
267271
# Set default value for 'IMAGE_PROCESS_DIR'.
268-
if "IMAGE_PROCESS_DIR" not in context:
269-
context["IMAGE_PROCESS_DIR"] = "derivatives"
272+
if "IMAGE_PROCESS_DIR" not in settings:
273+
settings["IMAGE_PROCESS_DIR"] = "derivatives"
270274

271275
# Set default value for 'IMAGE_PROCESS_ENCODING'
272-
if "IMAGE_PROCESS_ENCODING" not in context:
273-
context["IMAGE_PROCESS_ENCODING"] = "utf-8"
276+
if "IMAGE_PROCESS_ENCODING" not in settings:
277+
settings["IMAGE_PROCESS_ENCODING"] = "utf-8"
274278

275279
# Set default value for 'IMAGE_PROCESS_COPY_EXIF_TAGS'
276-
if "IMAGE_PROCESS_COPY_EXIF_TAGS" not in context:
277-
context["IMAGE_PROCESS_COPY_EXIF_TAGS"] = False
280+
if "IMAGE_PROCESS_COPY_EXIF_TAGS" not in settings:
281+
settings["IMAGE_PROCESS_COPY_EXIF_TAGS"] = False
278282

283+
# Set default value for 'IMAGE_PROCESS_FORCE'.
284+
if "IMAGE_PROCESS_FORCE" not in settings:
285+
settings["IMAGE_PROCESS_FORCE"] = False
286+
287+
288+
def harvest_images(path, context):
289+
set_default_settings(context)
290+
291+
logger.debug("%s harvesting %r", LOG_PREFIX, path)
279292
with open(path, "r+", encoding=context["IMAGE_PROCESS_ENCODING"]) as f:
280293
res = harvest_images_in_fragment(f, context)
281294
f.seek(0)
@@ -284,17 +297,7 @@ def harvest_images(path, context):
284297

285298

286299
def harvest_feed_images(path, context, feed):
287-
# Set default value for 'IMAGE_PROCESS_DIR'.
288-
if "IMAGE_PROCESS_DIR" not in context:
289-
context["IMAGE_PROCESS_DIR"] = "derivatives"
290-
291-
# Set default value for 'IMAGE_PROCESS_ENCODING'
292-
if "IMAGE_PROCESS_ENCODING" not in context:
293-
context["IMAGE_PROCESS_ENCODING"] = "utf-8"
294-
295-
# Set default value for 'IMAGE_PROCESS_COPY_EXIF_TAGS'
296-
if "IMAGE_PROCESS_COPY_EXIF_TAGS" not in context:
297-
context["IMAGE_PROCESS_COPY_EXIF_TAGS"] = False
300+
set_default_settings(context)
298301

299302
with open(path, "r+", encoding=context["IMAGE_PROCESS_ENCODING"]) as f:
300303
soup = BeautifulSoup(f, "xml")
@@ -688,10 +691,6 @@ def process_picture(soup, img, group, settings, derivative):
688691

689692

690693
def process_image(image, settings):
691-
# Set default value for 'IMAGE_PROCESS_FORCE'.
692-
if "IMAGE_PROCESS_FORCE" not in settings:
693-
settings["IMAGE_PROCESS_FORCE"] = False
694-
695694
# remove URL encoding to get to physical filenames
696695
image = list(image)
697696
image[0] = unquote(image[0])
@@ -729,6 +728,8 @@ def process_image(image, settings):
729728

730729

731730
def dump_config(pelican):
731+
set_default_settings(pelican.settings)
732+
732733
logger.debug(
733734
"{} config:\n{}".format(
734735
LOG_PREFIX, pprint.pformat(pelican.settings["IMAGE_PROCESS"])

pelican/plugins/image_process/test_image_process.py

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
harvest_images_in_fragment,
1515
is_img_identifiable,
1616
process_image,
17+
set_default_settings,
1718
)
1819

1920
# Prepare test image constants.
@@ -65,6 +66,7 @@ def get_settings(**kwargs):
6566
}
6667
settings = DEFAULT_CONFIG.copy()
6768
settings.update(kwargs)
69+
set_default_settings(settings)
6870
return settings
6971

7072

0 commit comments

Comments
 (0)