mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge pull request #934 from wking/generator-init-kwargs
Use keyword arguments to initialize Generators
This commit is contained in:
commit
4f444ee6a8
3 changed files with 47 additions and 31 deletions
|
|
@ -157,12 +157,12 @@ class Pelican(object):
|
||||||
context['localsiteurl'] = self.settings['SITEURL'] # share
|
context['localsiteurl'] = self.settings['SITEURL'] # share
|
||||||
generators = [
|
generators = [
|
||||||
cls(
|
cls(
|
||||||
context,
|
context=context,
|
||||||
self.settings,
|
settings=self.settings,
|
||||||
self.path,
|
path=self.path,
|
||||||
self.theme,
|
theme=self.theme,
|
||||||
self.output_path,
|
output_path=self.output_path,
|
||||||
self.markup,
|
markup=self.markup,
|
||||||
) for cls in self.get_generator_classes()
|
) for cls in self.get_generator_classes()
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,14 @@ logger = logging.getLogger(__name__)
|
||||||
class Generator(object):
|
class Generator(object):
|
||||||
"""Baseclass generator"""
|
"""Baseclass generator"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, context, settings, path, theme, output_path, markup,
|
||||||
for idx, item in enumerate(('context', 'settings', 'path', 'theme',
|
**kwargs):
|
||||||
'output_path', 'markup')):
|
self.context = context
|
||||||
setattr(self, item, args[idx])
|
self.settings = settings
|
||||||
|
self.path = path
|
||||||
|
self.theme = theme
|
||||||
|
self.output_path = output_path
|
||||||
|
self.markup = markup
|
||||||
|
|
||||||
for arg, value in kwargs.items():
|
for arg, value in kwargs.items():
|
||||||
setattr(self, arg, value)
|
setattr(self, arg, value)
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
settings = get_settings(filenames={})
|
settings = get_settings(filenames={})
|
||||||
settings['DEFAULT_CATEGORY'] = 'Default'
|
settings['DEFAULT_CATEGORY'] = 'Default'
|
||||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||||
self.generator = ArticlesGenerator(settings.copy(), settings,
|
self.generator = ArticlesGenerator(
|
||||||
CONTENT_DIR, settings['THEME'], None, settings['MARKUP'])
|
context=settings.copy(), settings=settings,
|
||||||
|
path=CONTENT_DIR, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=settings['MARKUP'])
|
||||||
self.generator.generate_context()
|
self.generator.generate_context()
|
||||||
return self.generator
|
return self.generator
|
||||||
|
|
||||||
|
|
@ -52,16 +54,19 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
|
|
||||||
def test_generate_feeds(self):
|
def test_generate_feeds(self):
|
||||||
settings = get_settings()
|
settings = get_settings()
|
||||||
generator = ArticlesGenerator(settings, settings, None,
|
generator = ArticlesGenerator(
|
||||||
settings['THEME'], None, settings['MARKUP'])
|
context=settings, settings=settings,
|
||||||
|
path=None, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=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(
|
generator = ArticlesGenerator(
|
||||||
settings, get_settings(FEED_ALL_ATOM=None), None,
|
context=settings, settings=get_settings(FEED_ALL_ATOM=None),
|
||||||
settings['THEME'], None, None)
|
path=None, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=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)
|
||||||
|
|
@ -122,8 +127,9 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
settings['USE_FOLDER_AS_CATEGORY'] = False
|
settings['USE_FOLDER_AS_CATEGORY'] = False
|
||||||
settings['filenames'] = {}
|
settings['filenames'] = {}
|
||||||
generator = ArticlesGenerator(
|
generator = ArticlesGenerator(
|
||||||
settings.copy(), settings, CONTENT_DIR, DEFAULT_CONFIG['THEME'],
|
context=settings.copy(), settings=settings,
|
||||||
None, DEFAULT_CONFIG['MARKUP'])
|
path=CONTENT_DIR, theme=DEFAULT_CONFIG['THEME'],
|
||||||
|
output_path=None, markup=DEFAULT_CONFIG['MARKUP'])
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
# test for name
|
# test for name
|
||||||
# categories are grouped by slug; if two categories have the same slug
|
# categories are grouped by slug; if two categories have the same slug
|
||||||
|
|
@ -143,9 +149,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
def test_direct_templates_save_as_default(self):
|
def test_direct_templates_save_as_default(self):
|
||||||
|
|
||||||
settings = get_settings(filenames={})
|
settings = get_settings(filenames={})
|
||||||
generator = ArticlesGenerator(settings, settings, None,
|
generator = ArticlesGenerator(
|
||||||
settings['THEME'], None,
|
context=settings, settings=settings,
|
||||||
settings['MARKUP'])
|
path=None, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=settings['MARKUP'])
|
||||||
write = MagicMock()
|
write = MagicMock()
|
||||||
generator.generate_direct_templates(write)
|
generator.generate_direct_templates(write)
|
||||||
write.assert_called_with("archives.html",
|
write.assert_called_with("archives.html",
|
||||||
|
|
@ -157,9 +164,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
settings = get_settings()
|
settings = get_settings()
|
||||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||||
generator = ArticlesGenerator(settings, settings, None,
|
generator = ArticlesGenerator(
|
||||||
settings['THEME'], None,
|
context=settings, settings=settings,
|
||||||
settings['MARKUP'])
|
path=None, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=settings['MARKUP'])
|
||||||
write = MagicMock()
|
write = MagicMock()
|
||||||
generator.generate_direct_templates(write)
|
generator.generate_direct_templates(write)
|
||||||
write.assert_called_with("archives/index.html",
|
write.assert_called_with("archives/index.html",
|
||||||
|
|
@ -171,9 +179,10 @@ class TestArticlesGenerator(unittest.TestCase):
|
||||||
settings = get_settings()
|
settings = get_settings()
|
||||||
settings['DIRECT_TEMPLATES'] = ['archives']
|
settings['DIRECT_TEMPLATES'] = ['archives']
|
||||||
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
settings['ARCHIVES_SAVE_AS'] = 'archives/index.html'
|
||||||
generator = ArticlesGenerator(settings, settings, None,
|
generator = ArticlesGenerator(
|
||||||
settings['THEME'], None,
|
context=settings, settings=settings,
|
||||||
settings['MARKUP'])
|
path=None, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=settings['MARKUP'])
|
||||||
write = MagicMock()
|
write = MagicMock()
|
||||||
generator.generate_direct_templates(write)
|
generator.generate_direct_templates(write)
|
||||||
write.assert_called_count == 0
|
write.assert_called_count == 0
|
||||||
|
|
@ -215,8 +224,9 @@ class TestPageGenerator(unittest.TestCase):
|
||||||
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
settings['DEFAULT_DATE'] = (1970, 1, 1)
|
||||||
|
|
||||||
generator = PagesGenerator(
|
generator = PagesGenerator(
|
||||||
settings.copy(), settings, CUR_DIR, settings['THEME'], None,
|
context=settings.copy(), settings=settings,
|
||||||
settings['MARKUP'])
|
path=CUR_DIR, theme=settings['THEME'],
|
||||||
|
output_path=None, markup=settings['MARKUP'])
|
||||||
generator.generate_context()
|
generator.generate_context()
|
||||||
pages = self.distill_pages(generator.pages)
|
pages = self.distill_pages(generator.pages)
|
||||||
hidden_pages = self.distill_pages(generator.hidden_pages)
|
hidden_pages = self.distill_pages(generator.hidden_pages)
|
||||||
|
|
@ -258,8 +268,10 @@ class TestTemplatePagesGenerator(unittest.TestCase):
|
||||||
'template/source.html': 'generated/file.html'
|
'template/source.html': 'generated/file.html'
|
||||||
}
|
}
|
||||||
|
|
||||||
generator = TemplatePagesGenerator({'foo': 'bar'}, settings,
|
generator = TemplatePagesGenerator(
|
||||||
self.temp_content, '', self.temp_output, None)
|
context={'foo': 'bar'}, settings=settings,
|
||||||
|
path=self.temp_content, theme='',
|
||||||
|
output_path=self.temp_output, markup=None)
|
||||||
|
|
||||||
# create a dummy template file
|
# create a dummy template file
|
||||||
template_dir = os.path.join(self.temp_content, 'template')
|
template_dir = os.path.join(self.temp_content, 'template')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue