mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Replace settings.get(key) with settings[key] for default settings
If a setting exists in DEFAULT_CONFIG, assume it will be there (instead of checking and/or providing a local default). The earlier code was split between the two idioms, which was confusing.
This commit is contained in:
parent
c8e7d95b34
commit
8ff34e6c5d
8 changed files with 35 additions and 38 deletions
|
|
@ -154,7 +154,7 @@ class Pelican(object):
|
||||||
|
|
||||||
context = self.settings.copy()
|
context = self.settings.copy()
|
||||||
context['filenames'] = {} # share the dict between all the generators
|
context['filenames'] = {} # share the dict between all the generators
|
||||||
context['localsiteurl'] = self.settings.get('SITEURL') # share
|
context['localsiteurl'] = self.settings['SITEURL'] # share
|
||||||
generators = [
|
generators = [
|
||||||
cls(
|
cls(
|
||||||
context,
|
context,
|
||||||
|
|
@ -309,7 +309,7 @@ def get_instance(args):
|
||||||
|
|
||||||
settings = read_settings(config_file, override=get_config(args))
|
settings = read_settings(config_file, override=get_config(args))
|
||||||
|
|
||||||
cls = settings.get('PELICAN_CLASS')
|
cls = settings['PELICAN_CLASS']
|
||||||
if isinstance(cls, six.string_types):
|
if isinstance(cls, six.string_types):
|
||||||
module, cls_name = cls.rsplit('.', 1)
|
module, cls_name = cls.rsplit('.', 1)
|
||||||
module = __import__(module)
|
module = __import__(module)
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ class Content(object):
|
||||||
self._context = context
|
self._context = context
|
||||||
self.translations = []
|
self.translations = []
|
||||||
|
|
||||||
local_metadata = dict(settings.get('DEFAULT_METADATA', ()))
|
local_metadata = dict(settings['DEFAULT_METADATA'])
|
||||||
local_metadata.update(metadata)
|
local_metadata.update(metadata)
|
||||||
|
|
||||||
# set metadata as attributes
|
# set metadata as attributes
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class Generator(object):
|
||||||
self._templates_path = []
|
self._templates_path = []
|
||||||
self._templates_path.append(os.path.expanduser(
|
self._templates_path.append(os.path.expanduser(
|
||||||
os.path.join(self.theme, 'templates')))
|
os.path.join(self.theme, 'templates')))
|
||||||
self._templates_path += self.settings.get('EXTRA_TEMPLATES_PATHS', [])
|
self._templates_path += self.settings['EXTRA_TEMPLATES_PATHS']
|
||||||
|
|
||||||
theme_path = os.path.dirname(os.path.abspath(__file__))
|
theme_path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ class Generator(object):
|
||||||
simple_loader, # implicit inheritance
|
simple_loader, # implicit inheritance
|
||||||
PrefixLoader({'!simple': simple_loader}) # explicit one
|
PrefixLoader({'!simple': simple_loader}) # explicit one
|
||||||
]),
|
]),
|
||||||
extensions=self.settings.get('JINJA_EXTENSIONS', []),
|
extensions=self.settings['JINJA_EXTENSIONS'],
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.debug('template list: {0}'.format(self.env.list_templates()))
|
logger.debug('template list: {0}'.format(self.env.list_templates()))
|
||||||
|
|
@ -69,7 +69,7 @@ class Generator(object):
|
||||||
self.env.filters.update({'strftime': DateFormatter()})
|
self.env.filters.update({'strftime': DateFormatter()})
|
||||||
|
|
||||||
# get custom Jinja filters from user settings
|
# get custom Jinja filters from user settings
|
||||||
custom_filters = self.settings.get('JINJA_FILTERS', {})
|
custom_filters = self.settings['JINJA_FILTERS']
|
||||||
self.env.filters.update(custom_filters)
|
self.env.filters.update(custom_filters)
|
||||||
|
|
||||||
signals.generator_init.send(self)
|
signals.generator_init.send(self)
|
||||||
|
|
@ -163,7 +163,7 @@ class TemplatePagesGenerator(Generator):
|
||||||
self.env.loader.loaders.insert(0, _FileLoader(source, self.path))
|
self.env.loader.loaders.insert(0, _FileLoader(source, self.path))
|
||||||
try:
|
try:
|
||||||
template = self.env.get_template(source)
|
template = self.env.get_template(source)
|
||||||
rurls = self.settings.get('RELATIVE_URLS')
|
rurls = self.settings['RELATIVE_URLS']
|
||||||
writer.write_file(dest, template, self.context, rurls)
|
writer.write_file(dest, template, self.context, rurls)
|
||||||
finally:
|
finally:
|
||||||
del self.env.loader.loaders[0]
|
del self.env.loader.loaders[0]
|
||||||
|
|
@ -283,9 +283,9 @@ class ArticlesGenerator(Generator):
|
||||||
dates=archive, blog=True)
|
dates=archive, blog=True)
|
||||||
|
|
||||||
period_save_as = {
|
period_save_as = {
|
||||||
'year' : self.settings.get('YEAR_ARCHIVE_SAVE_AS'),
|
'year' : self.settings['YEAR_ARCHIVE_SAVE_AS'],
|
||||||
'month': self.settings.get('MONTH_ARCHIVE_SAVE_AS'),
|
'month': self.settings['MONTH_ARCHIVE_SAVE_AS'],
|
||||||
'day' : self.settings.get('DAY_ARCHIVE_SAVE_AS')
|
'day' : self.settings['DAY_ARCHIVE_SAVE_AS'],
|
||||||
}
|
}
|
||||||
|
|
||||||
period_date_key = {
|
period_date_key = {
|
||||||
|
|
@ -302,8 +302,8 @@ class ArticlesGenerator(Generator):
|
||||||
|
|
||||||
def generate_direct_templates(self, write):
|
def generate_direct_templates(self, write):
|
||||||
"""Generate direct templates pages"""
|
"""Generate direct templates pages"""
|
||||||
PAGINATED_TEMPLATES = self.settings.get('PAGINATED_DIRECT_TEMPLATES')
|
PAGINATED_TEMPLATES = self.settings['PAGINATED_DIRECT_TEMPLATES']
|
||||||
for template in self.settings.get('DIRECT_TEMPLATES'):
|
for template in self.settings['DIRECT_TEMPLATES']:
|
||||||
paginated = {}
|
paginated = {}
|
||||||
if template in PAGINATED_TEMPLATES:
|
if template in PAGINATED_TEMPLATES:
|
||||||
paginated = {'articles': self.articles, 'dates': self.dates}
|
paginated = {'articles': self.articles, 'dates': self.dates}
|
||||||
|
|
@ -358,7 +358,7 @@ class ArticlesGenerator(Generator):
|
||||||
def generate_pages(self, writer):
|
def generate_pages(self, writer):
|
||||||
"""Generate the pages on the disk"""
|
"""Generate the pages on the disk"""
|
||||||
write = partial(writer.write_file,
|
write = partial(writer.write_file,
|
||||||
relative_urls=self.settings.get('RELATIVE_URLS'))
|
relative_urls=self.settings['RELATIVE_URLS'])
|
||||||
|
|
||||||
# to minimize the number of relative path stuff modification
|
# to minimize the number of relative path stuff modification
|
||||||
# in writer, articles pass first
|
# in writer, articles pass first
|
||||||
|
|
@ -546,7 +546,7 @@ class PagesGenerator(Generator):
|
||||||
self.hidden_translations, self.hidden_pages):
|
self.hidden_translations, self.hidden_pages):
|
||||||
writer.write_file(page.save_as, self.get_template(page.template),
|
writer.write_file(page.save_as, self.get_template(page.template),
|
||||||
self.context, page=page,
|
self.context, page=page,
|
||||||
relative_urls=self.settings.get('RELATIVE_URLS'))
|
relative_urls=self.settings['RELATIVE_URLS'])
|
||||||
|
|
||||||
|
|
||||||
class StaticGenerator(Generator):
|
class StaticGenerator(Generator):
|
||||||
|
|
@ -613,14 +613,8 @@ class PdfGenerator(Generator):
|
||||||
super(PdfGenerator, self).__init__(*args, **kwargs)
|
super(PdfGenerator, self).__init__(*args, **kwargs)
|
||||||
try:
|
try:
|
||||||
from rst2pdf.createpdf import RstToPdf
|
from rst2pdf.createpdf import RstToPdf
|
||||||
if 'PDF_STYLE_PATH' in self.settings.keys():
|
pdf_style_path = os.path.join(self.settings['PDF_STYLE_PATH'])
|
||||||
pdf_style_path = os.path.join(self.settings['PDF_STYLE_PATH'])
|
pdf_style = self.settings['PDF_STYLE']
|
||||||
else:
|
|
||||||
pdf_style_path = ''
|
|
||||||
|
|
||||||
if 'PDF_STYLE' in self.settings.keys():
|
|
||||||
pdf_style = self.settings.get('PDF_STYLE', 'twelvepoint')
|
|
||||||
|
|
||||||
self.pdfcreator = RstToPdf(breakside=0,
|
self.pdfcreator = RstToPdf(breakside=0,
|
||||||
stylesheets=[pdf_style],
|
stylesheets=[pdf_style],
|
||||||
style_path=[pdf_style_path])
|
style_path=[pdf_style_path])
|
||||||
|
|
|
||||||
|
|
@ -157,12 +157,10 @@ class RstReader(Reader):
|
||||||
class MarkdownReader(Reader):
|
class MarkdownReader(Reader):
|
||||||
enabled = bool(Markdown)
|
enabled = bool(Markdown)
|
||||||
file_extensions = ['md', 'markdown', 'mkd', 'mdown']
|
file_extensions = ['md', 'markdown', 'mkd', 'mdown']
|
||||||
default_extensions = ['codehilite(css_class=highlight)', 'extra']
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(MarkdownReader, self).__init__(*args, **kwargs)
|
super(MarkdownReader, self).__init__(*args, **kwargs)
|
||||||
self.extensions = self.settings.get('MD_EXTENSIONS',
|
self.extensions = self.settings['MD_EXTENSIONS']
|
||||||
self.default_extensions)
|
|
||||||
self.extensions.append('meta')
|
self.extensions.append('meta')
|
||||||
self._md = Markdown(extensions=self.extensions)
|
self._md = Markdown(extensions=self.extensions)
|
||||||
|
|
||||||
|
|
@ -309,7 +307,7 @@ class AsciiDocReader(Reader):
|
||||||
content = StringIO()
|
content = StringIO()
|
||||||
ad = AsciiDocAPI()
|
ad = AsciiDocAPI()
|
||||||
|
|
||||||
options = self.settings.get('ASCIIDOC_OPTIONS', [])
|
options = self.settings['ASCIIDOC_OPTIONS']
|
||||||
if isinstance(options, (str, unicode)):
|
if isinstance(options, (str, unicode)):
|
||||||
options = [m.strip() for m in options.split(',')]
|
options = [m.strip() for m in options.split(',')]
|
||||||
options = self.default_options + options
|
options = self.default_options + options
|
||||||
|
|
@ -362,7 +360,7 @@ def read_file(path, fmt=None, settings=None):
|
||||||
metadata.update(reader_metadata)
|
metadata.update(reader_metadata)
|
||||||
|
|
||||||
# eventually filter the content with typogrify if asked so
|
# eventually filter the content with typogrify if asked so
|
||||||
if content and settings and settings.get('TYPOGRIFY'):
|
if content and settings and settings['TYPOGRIFY']:
|
||||||
from typogrify.filters import typogrify
|
from typogrify.filters import typogrify
|
||||||
content = typogrify(content)
|
content = typogrify(content)
|
||||||
metadata['title'] = typogrify(metadata['title'])
|
metadata['title'] = typogrify(metadata['title'])
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,8 @@ DEFAULT_CONFIG = {
|
||||||
'PAGE_LANG_SAVE_AS': os.path.join('pages', '{slug}-{lang}.html'),
|
'PAGE_LANG_SAVE_AS': os.path.join('pages', '{slug}-{lang}.html'),
|
||||||
'STATIC_URL': '{path}',
|
'STATIC_URL': '{path}',
|
||||||
'STATIC_SAVE_AS': '{path}',
|
'STATIC_SAVE_AS': '{path}',
|
||||||
|
'PDF_STYLE_PATH': '',
|
||||||
|
'PDF_STYLE': 'twelvepoint',
|
||||||
'CATEGORY_URL': 'category/{slug}.html',
|
'CATEGORY_URL': 'category/{slug}.html',
|
||||||
'CATEGORY_SAVE_AS': os.path.join('category', '{slug}.html'),
|
'CATEGORY_SAVE_AS': os.path.join('category', '{slug}.html'),
|
||||||
'TAG_URL': 'tag/{slug}.html',
|
'TAG_URL': 'tag/{slug}.html',
|
||||||
|
|
@ -83,7 +85,10 @@ DEFAULT_CONFIG = {
|
||||||
'PELICAN_CLASS': 'pelican.Pelican',
|
'PELICAN_CLASS': 'pelican.Pelican',
|
||||||
'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
|
||||||
'DATE_FORMATS': {},
|
'DATE_FORMATS': {},
|
||||||
|
'ASCIIDOC_OPTIONS': [],
|
||||||
|
'MD_EXTENSIONS': ['codehilite(css_class=highlight)', 'extra'],
|
||||||
'JINJA_EXTENSIONS': [],
|
'JINJA_EXTENSIONS': [],
|
||||||
|
'JINJA_FILTERS': {},
|
||||||
'LOCALE': [], # defaults to user locale
|
'LOCALE': [], # defaults to user locale
|
||||||
'DEFAULT_PAGINATION': False,
|
'DEFAULT_PAGINATION': False,
|
||||||
'DEFAULT_ORPHANS': 0,
|
'DEFAULT_ORPHANS': 0,
|
||||||
|
|
|
||||||
|
|
@ -53,16 +53,16 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
|
|
||||||
def test_generate_feeds(self):
|
def test_generate_feeds(self):
|
||||||
settings = get_settings()
|
settings = get_settings()
|
||||||
generator = ArticlesGenerator(settings,
|
generator = ArticlesGenerator(settings, settings, None,
|
||||||
{'FEED_ALL_ATOM': settings['FEED_ALL_ATOM']}, None,
|
|
||||||
settings['THEME'], None, settings['MARKUP'])
|
settings['THEME'], None, settings['MARKUP'])
|
||||||
writer = MagicMock()
|
writer = MagicMock()
|
||||||
generator.generate_feeds(writer)
|
generator.generate_feeds(writer)
|
||||||
writer.write_feed.assert_called_with([], settings,
|
writer.write_feed.assert_called_with([], settings,
|
||||||
'feeds/all.atom.xml')
|
'feeds/all.atom.xml')
|
||||||
|
|
||||||
generator = ArticlesGenerator(settings, {'FEED_ALL_ATOM': None}, None,
|
generator = ArticlesGenerator(
|
||||||
settings['THEME'], None, None)
|
settings, get_settings(FEED_ALL_ATOM=None), None,
|
||||||
|
settings['THEME'], None, None)
|
||||||
writer = MagicMock()
|
writer = MagicMock()
|
||||||
generator.generate_feeds(writer)
|
generator.generate_feeds(writer)
|
||||||
self.assertFalse(writer.write_feed.called)
|
self.assertFalse(writer.write_feed.called)
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ class RstReaderTest(ReaderTest):
|
||||||
|
|
||||||
def test_article_metadata_key_lowercase(self):
|
def test_article_metadata_key_lowercase(self):
|
||||||
# Keys of metadata should be lowercase.
|
# Keys of metadata should be lowercase.
|
||||||
reader = readers.RstReader({})
|
reader = readers.RstReader(settings=get_settings())
|
||||||
content, metadata = reader.read(
|
content, metadata = reader.read(
|
||||||
_path('article_with_uppercase_metadata.rst'))
|
_path('article_with_uppercase_metadata.rst'))
|
||||||
|
|
||||||
|
|
@ -121,7 +121,7 @@ class MdReaderTest(ReaderTest):
|
||||||
|
|
||||||
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
||||||
def test_article_with_metadata(self):
|
def test_article_with_metadata(self):
|
||||||
reader = readers.MarkdownReader({})
|
reader = readers.MarkdownReader(settings=get_settings())
|
||||||
content, metadata = reader.read(
|
content, metadata = reader.read(
|
||||||
_path('article_with_md_extension.md'))
|
_path('article_with_md_extension.md'))
|
||||||
expected = {
|
expected = {
|
||||||
|
|
@ -150,7 +150,7 @@ class MdReaderTest(ReaderTest):
|
||||||
|
|
||||||
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
||||||
def test_article_with_footnote(self):
|
def test_article_with_footnote(self):
|
||||||
reader = readers.MarkdownReader({})
|
reader = readers.MarkdownReader(settings=get_settings())
|
||||||
content, metadata = reader.read(
|
content, metadata = reader.read(
|
||||||
_path('article_with_markdown_and_footnote.md'))
|
_path('article_with_markdown_and_footnote.md'))
|
||||||
expected_content = (
|
expected_content = (
|
||||||
|
|
@ -186,7 +186,7 @@ class MdReaderTest(ReaderTest):
|
||||||
|
|
||||||
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
|
||||||
def test_article_with_file_extensions(self):
|
def test_article_with_file_extensions(self):
|
||||||
reader = readers.MarkdownReader({})
|
reader = readers.MarkdownReader(settings=get_settings())
|
||||||
# test to ensure the md file extension is being processed by the
|
# test to ensure the md file extension is being processed by the
|
||||||
# correct reader
|
# correct reader
|
||||||
content, metadata = reader.read(
|
content, metadata = reader.read(
|
||||||
|
|
|
||||||
|
|
@ -155,10 +155,10 @@ class Writer(object):
|
||||||
for key in paginated.keys():
|
for key in paginated.keys():
|
||||||
object_list = paginated[key]
|
object_list = paginated[key]
|
||||||
|
|
||||||
if self.settings.get('DEFAULT_PAGINATION'):
|
if self.settings['DEFAULT_PAGINATION']:
|
||||||
paginators[key] = Paginator(object_list,
|
paginators[key] = Paginator(object_list,
|
||||||
self.settings.get('DEFAULT_PAGINATION'),
|
self.settings['DEFAULT_PAGINATION'],
|
||||||
self.settings.get('DEFAULT_ORPHANS'))
|
self.settings['DEFAULT_ORPHANS'])
|
||||||
else:
|
else:
|
||||||
paginators[key] = Paginator(object_list, len(object_list))
|
paginators[key] = Paginator(object_list, len(object_list))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue