getpelican/pelican — pull request #1509 by foresto (2014-10-18 21:26:06+00:00)
Title: Make StaticGenerator skip content sources. Refs #1019.

This change partially addresses issue #1019, by teaching Pelican to distinguish between static files and content source files. A user can now safely add the same directory to both `STATIC_PATHS` and `PAGE_PATHS` (or `ARTICLE_PATHS`). Pelican will then process the content source files in that directory normally and treat the remaining files as static, without copying the raw content source files to the output directory. (The `OUTPUT_SOURCES` setting still works.)

In other words, images and markdown/reST files can now safely live together.

To keep those files together in the generated site, `STATIC_SAVE_AS` and `PAGE_SAVE_AS` (or `ARTICLE_SAVE_AS`) should point to the same output directory.

There are two new configuration settings:

`STATIC_EXCLUDES=[]` — This works just like `PAGE_EXCLUDES` and `ARTICLE_EXCLUDES`.
`STATIC_EXCLUDE_SOURCES=True` — Set this to `False` to get the old behavior.

Two small but noteworthy internal changes:

`StaticGenerator` now runs after all the other generators. This allows it to see which files are meant to be processed by other generators, and avoid them.

Generators now include files that they fail to process (e.g. those with missing mandatory metadata) along with all the other paths in `context['filenames']`. This allows such files to be excluded from `StaticGenerator`'s file list, so they won't end up accidentally published. Since these files have no `Content` object, their value in `context['filenames']` is `None`. The code that uses that dict has been updated accordingly.