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:
W. Trevor King 2013-03-24 15:45:36 -04:00
commit 8ff34e6c5d
8 changed files with 35 additions and 38 deletions

View file

@ -154,7 +154,7 @@ class Pelican(object):
context = self.settings.copy()
context['filenames'] = {} # share the dict between all the generators
context['localsiteurl'] = self.settings.get('SITEURL') # share
context['localsiteurl'] = self.settings['SITEURL'] # share
generators = [
cls(
context,
@ -309,7 +309,7 @@ def get_instance(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):
module, cls_name = cls.rsplit('.', 1)
module = __import__(module)

View file

@ -51,7 +51,7 @@ class Content(object):
self._context = context
self.translations = []
local_metadata = dict(settings.get('DEFAULT_METADATA', ()))
local_metadata = dict(settings['DEFAULT_METADATA'])
local_metadata.update(metadata)
# set metadata as attributes

View file

@ -47,7 +47,7 @@ class Generator(object):
self._templates_path = []
self._templates_path.append(os.path.expanduser(
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__))
@ -60,7 +60,7 @@ class Generator(object):
simple_loader, # implicit inheritance
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()))
@ -69,7 +69,7 @@ class Generator(object):
self.env.filters.update({'strftime': DateFormatter()})
# 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)
signals.generator_init.send(self)
@ -163,7 +163,7 @@ class TemplatePagesGenerator(Generator):
self.env.loader.loaders.insert(0, _FileLoader(source, self.path))
try:
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)
finally:
del self.env.loader.loaders[0]
@ -283,9 +283,9 @@ class ArticlesGenerator(Generator):
dates=archive, blog=True)
period_save_as = {
'year' : self.settings.get('YEAR_ARCHIVE_SAVE_AS'),
'month': self.settings.get('MONTH_ARCHIVE_SAVE_AS'),
'day' : self.settings.get('DAY_ARCHIVE_SAVE_AS')
'year' : self.settings['YEAR_ARCHIVE_SAVE_AS'],
'month': self.settings['MONTH_ARCHIVE_SAVE_AS'],
'day' : self.settings['DAY_ARCHIVE_SAVE_AS'],
}
period_date_key = {
@ -302,8 +302,8 @@ class ArticlesGenerator(Generator):
def generate_direct_templates(self, write):
"""Generate direct templates pages"""
PAGINATED_TEMPLATES = self.settings.get('PAGINATED_DIRECT_TEMPLATES')
for template in self.settings.get('DIRECT_TEMPLATES'):
PAGINATED_TEMPLATES = self.settings['PAGINATED_DIRECT_TEMPLATES']
for template in self.settings['DIRECT_TEMPLATES']:
paginated = {}
if template in PAGINATED_TEMPLATES:
paginated = {'articles': self.articles, 'dates': self.dates}
@ -358,7 +358,7 @@ class ArticlesGenerator(Generator):
def generate_pages(self, writer):
"""Generate the pages on the disk"""
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
# in writer, articles pass first
@ -546,7 +546,7 @@ class PagesGenerator(Generator):
self.hidden_translations, self.hidden_pages):
writer.write_file(page.save_as, self.get_template(page.template),
self.context, page=page,
relative_urls=self.settings.get('RELATIVE_URLS'))
relative_urls=self.settings['RELATIVE_URLS'])
class StaticGenerator(Generator):
@ -613,14 +613,8 @@ class PdfGenerator(Generator):
super(PdfGenerator, self).__init__(*args, **kwargs)
try:
from rst2pdf.createpdf import RstToPdf
if 'PDF_STYLE_PATH' in self.settings.keys():
pdf_style_path = os.path.join(self.settings['PDF_STYLE_PATH'])
else:
pdf_style_path = ''
if 'PDF_STYLE' in self.settings.keys():
pdf_style = self.settings.get('PDF_STYLE', 'twelvepoint')
pdf_style_path = os.path.join(self.settings['PDF_STYLE_PATH'])
pdf_style = self.settings['PDF_STYLE']
self.pdfcreator = RstToPdf(breakside=0,
stylesheets=[pdf_style],
style_path=[pdf_style_path])

View file

@ -157,12 +157,10 @@ class RstReader(Reader):
class MarkdownReader(Reader):
enabled = bool(Markdown)
file_extensions = ['md', 'markdown', 'mkd', 'mdown']
default_extensions = ['codehilite(css_class=highlight)', 'extra']
def __init__(self, *args, **kwargs):
super(MarkdownReader, self).__init__(*args, **kwargs)
self.extensions = self.settings.get('MD_EXTENSIONS',
self.default_extensions)
self.extensions = self.settings['MD_EXTENSIONS']
self.extensions.append('meta')
self._md = Markdown(extensions=self.extensions)
@ -309,7 +307,7 @@ class AsciiDocReader(Reader):
content = StringIO()
ad = AsciiDocAPI()
options = self.settings.get('ASCIIDOC_OPTIONS', [])
options = self.settings['ASCIIDOC_OPTIONS']
if isinstance(options, (str, unicode)):
options = [m.strip() for m in options.split(',')]
options = self.default_options + options
@ -362,7 +360,7 @@ def read_file(path, fmt=None, settings=None):
metadata.update(reader_metadata)
# 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
content = typogrify(content)
metadata['title'] = typogrify(metadata['title'])

View file

@ -64,6 +64,8 @@ DEFAULT_CONFIG = {
'PAGE_LANG_SAVE_AS': os.path.join('pages', '{slug}-{lang}.html'),
'STATIC_URL': '{path}',
'STATIC_SAVE_AS': '{path}',
'PDF_STYLE_PATH': '',
'PDF_STYLE': 'twelvepoint',
'CATEGORY_URL': 'category/{slug}.html',
'CATEGORY_SAVE_AS': os.path.join('category', '{slug}.html'),
'TAG_URL': 'tag/{slug}.html',
@ -83,7 +85,10 @@ DEFAULT_CONFIG = {
'PELICAN_CLASS': 'pelican.Pelican',
'DEFAULT_DATE_FORMAT': '%a %d %B %Y',
'DATE_FORMATS': {},
'ASCIIDOC_OPTIONS': [],
'MD_EXTENSIONS': ['codehilite(css_class=highlight)', 'extra'],
'JINJA_EXTENSIONS': [],
'JINJA_FILTERS': {},
'LOCALE': [], # defaults to user locale
'DEFAULT_PAGINATION': False,
'DEFAULT_ORPHANS': 0,

View file

@ -53,16 +53,16 @@ class TestArticlesGenerator(unittest.TestCase):
def test_generate_feeds(self):
settings = get_settings()
generator = ArticlesGenerator(settings,
{'FEED_ALL_ATOM': settings['FEED_ALL_ATOM']}, None,
generator = ArticlesGenerator(settings, settings, None,
settings['THEME'], None, settings['MARKUP'])
writer = MagicMock()
generator.generate_feeds(writer)
writer.write_feed.assert_called_with([], settings,
'feeds/all.atom.xml')
generator = ArticlesGenerator(settings, {'FEED_ALL_ATOM': None}, None,
settings['THEME'], None, None)
generator = ArticlesGenerator(
settings, get_settings(FEED_ALL_ATOM=None), None,
settings['THEME'], None, None)
writer = MagicMock()
generator.generate_feeds(writer)
self.assertFalse(writer.write_feed.called)

View file

@ -85,7 +85,7 @@ class RstReaderTest(ReaderTest):
def test_article_metadata_key_lowercase(self):
# Keys of metadata should be lowercase.
reader = readers.RstReader({})
reader = readers.RstReader(settings=get_settings())
content, metadata = reader.read(
_path('article_with_uppercase_metadata.rst'))
@ -121,7 +121,7 @@ class MdReaderTest(ReaderTest):
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
def test_article_with_metadata(self):
reader = readers.MarkdownReader({})
reader = readers.MarkdownReader(settings=get_settings())
content, metadata = reader.read(
_path('article_with_md_extension.md'))
expected = {
@ -150,7 +150,7 @@ class MdReaderTest(ReaderTest):
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
def test_article_with_footnote(self):
reader = readers.MarkdownReader({})
reader = readers.MarkdownReader(settings=get_settings())
content, metadata = reader.read(
_path('article_with_markdown_and_footnote.md'))
expected_content = (
@ -186,7 +186,7 @@ class MdReaderTest(ReaderTest):
@unittest.skipUnless(readers.Markdown, "markdown isn't installed")
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
# correct reader
content, metadata = reader.read(

View file

@ -155,10 +155,10 @@ class Writer(object):
for key in paginated.keys():
object_list = paginated[key]
if self.settings.get('DEFAULT_PAGINATION'):
if self.settings['DEFAULT_PAGINATION']:
paginators[key] = Paginator(object_list,
self.settings.get('DEFAULT_PAGINATION'),
self.settings.get('DEFAULT_ORPHANS'))
self.settings['DEFAULT_PAGINATION'],
self.settings['DEFAULT_ORPHANS'])
else:
paginators[key] = Paginator(object_list, len(object_list))