forked from github/pelican
Add Multi-theme support
Adds multi-theme support using the new THEMES setting. You can specify all the themes that you will be using in python dicionary form. You can then inherit from the themes specified in THEMES using the corresponding key in the dictionary.
This commit is contained in:
parent
369b8b8474
commit
b00d9ef6d1
8 changed files with 119 additions and 41 deletions
|
|
@ -28,7 +28,7 @@ class TestGenerator(unittest.TestCase):
|
|||
self.settings = get_settings()
|
||||
self.settings['READERS'] = {'asc': None}
|
||||
self.generator = Generator(self.settings.copy(), self.settings,
|
||||
CUR_DIR, self.settings['THEME'], None)
|
||||
CUR_DIR, self.settings['THEME'], self.settings['THEMES'], None)
|
||||
|
||||
def tearDown(self):
|
||||
locale.setlocale(locale.LC_ALL, self.old_locale)
|
||||
|
|
@ -48,7 +48,8 @@ class TestGenerator(unittest.TestCase):
|
|||
generator = Generator(context=self.settings.copy(),
|
||||
settings=self.settings,
|
||||
path=os.path.join(CUR_DIR, 'nested_content'),
|
||||
theme=self.settings['THEME'], output_path=None)
|
||||
theme=self.settings['THEME'], themes=self.settings['THEMES'],
|
||||
output_path=None)
|
||||
|
||||
filepaths = generator.get_files(paths=['maindir'])
|
||||
found_files = {os.path.basename(f) for f in filepaths}
|
||||
|
|
@ -86,7 +87,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
cls.generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
cls.generator.generate_context()
|
||||
cls.articles = cls.distill_articles(cls.generator.articles)
|
||||
|
||||
|
|
@ -106,7 +107,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['CACHE_PATH'] = self.temp_cache
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'], output_path=None)
|
||||
path=None, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
writer.write_feed.assert_called_with([], settings,
|
||||
|
|
@ -114,7 +115,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=get_settings(FEED_ALL_ATOM=None),
|
||||
path=None, theme=settings['THEME'], output_path=None)
|
||||
path=None, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
writer = MagicMock()
|
||||
generator.generate_feeds(writer)
|
||||
self.assertFalse(writer.write_feed.called)
|
||||
|
|
@ -187,7 +188,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['filenames'] = {}
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
# test for name
|
||||
# categories are grouped by slug; if two categories have the same slug
|
||||
|
|
@ -210,7 +211,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['CACHE_PATH'] = self.temp_cache
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'], output_path=None)
|
||||
path=None, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives.html",
|
||||
|
|
@ -225,7 +226,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['CACHE_PATH'] = self.temp_cache
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'], output_path=None)
|
||||
path=None, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
write.assert_called_with("archives/index.html",
|
||||
|
|
@ -241,7 +242,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['CACHE_PATH'] = self.temp_cache
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=None, theme=settings['THEME'], output_path=None)
|
||||
path=None, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
write = MagicMock()
|
||||
generator.generate_direct_templates(write)
|
||||
self.assertEqual(write.call_count, 0)
|
||||
|
|
@ -268,7 +269,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['CACHE_PATH'] = self.temp_cache
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
write = MagicMock()
|
||||
generator.generate_period_archives(write)
|
||||
|
|
@ -285,7 +286,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['MONTH_ARCHIVE_SAVE_AS'] = 'posts/{date:%Y}/{date:%b}/index.html'
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
write = MagicMock()
|
||||
generator.generate_period_archives(write)
|
||||
|
|
@ -303,7 +304,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['DAY_ARCHIVE_SAVE_AS'] = 'posts/{date:%Y}/{date:%b}/{date:%d}/index.html'
|
||||
generator = ArticlesGenerator(
|
||||
context=settings, settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
write = MagicMock()
|
||||
generator.generate_period_archives(write)
|
||||
|
|
@ -337,13 +338,13 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator, '_cache'))
|
||||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
generator.readers.read_file.assert_called_count == 0
|
||||
|
|
@ -356,13 +357,13 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator.readers, '_cache'))
|
||||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
readers = generator.readers.readers
|
||||
for reader in readers.values():
|
||||
reader.read = MagicMock()
|
||||
|
|
@ -380,7 +381,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator, '_cache_open'))
|
||||
|
|
@ -389,7 +390,7 @@ class TestArticlesGenerator(unittest.TestCase):
|
|||
settings['LOAD_CONTENT_CACHE'] = False
|
||||
generator = ArticlesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
generator.readers.read_file.assert_called_count == orig_call_count
|
||||
|
|
@ -418,7 +419,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CUR_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CUR_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
pages = self.distill_pages(generator.pages)
|
||||
hidden_pages = self.distill_pages(generator.hidden_pages)
|
||||
|
|
@ -449,13 +450,13 @@ class TestPageGenerator(unittest.TestCase):
|
|||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator, '_cache'))
|
||||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
generator.readers.read_file.assert_called_count == 0
|
||||
|
|
@ -468,13 +469,13 @@ class TestPageGenerator(unittest.TestCase):
|
|||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator.readers, '_cache'))
|
||||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
readers = generator.readers.readers
|
||||
for reader in readers.values():
|
||||
reader.read = MagicMock()
|
||||
|
|
@ -492,7 +493,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
self.assertTrue(hasattr(generator, '_cache_open'))
|
||||
|
|
@ -501,7 +502,7 @@ class TestPageGenerator(unittest.TestCase):
|
|||
settings['LOAD_CONTENT_CACHE'] = False
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CONTENT_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CONTENT_DIR, theme=settings['THEME'], themes=settings['THEMES'], output_path=None)
|
||||
generator.readers.read_file = MagicMock()
|
||||
generator.generate_context()
|
||||
generator.readers.read_file.assert_called_count == orig_call_count
|
||||
|
|
@ -522,7 +523,8 @@ class TestPageGenerator(unittest.TestCase):
|
|||
]
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CUR_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CUR_DIR, theme=settings['THEME'], themes=settings['THEMES'],
|
||||
output_path=None)
|
||||
generator.generate_context()
|
||||
pages = self.distill_pages(generator.pages)
|
||||
self.assertEqual(pages_expected_sorted_by_filename, pages)
|
||||
|
|
@ -538,7 +540,8 @@ class TestPageGenerator(unittest.TestCase):
|
|||
settings['PAGE_ORDER_BY'] = 'title'
|
||||
generator = PagesGenerator(
|
||||
context=settings.copy(), settings=settings,
|
||||
path=CUR_DIR, theme=settings['THEME'], output_path=None)
|
||||
path=CUR_DIR, theme=settings['THEME'], themes=settings['THEMES'],
|
||||
output_path=None)
|
||||
generator.generate_context()
|
||||
pages = self.distill_pages(generator.pages)
|
||||
self.assertEqual(pages_expected_sorted_by_title, pages)
|
||||
|
|
@ -570,7 +573,7 @@ class TestTemplatePagesGenerator(unittest.TestCase):
|
|||
|
||||
generator = TemplatePagesGenerator(
|
||||
context={'foo': 'bar'}, settings=settings,
|
||||
path=self.temp_content, theme='', output_path=self.temp_output)
|
||||
path=self.temp_content, theme='', themes=settings['THEMES'], output_path=self.temp_output)
|
||||
|
||||
# create a dummy template file
|
||||
template_dir = os.path.join(self.temp_content, 'template')
|
||||
|
|
@ -607,6 +610,7 @@ class TestStaticGenerator(unittest.TestCase):
|
|||
|
||||
StaticGenerator(context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
themes=settings['THEMES'],
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
|
|
@ -631,6 +635,7 @@ class TestStaticGenerator(unittest.TestCase):
|
|||
for generator_class in (PagesGenerator, StaticGenerator):
|
||||
generator_class(context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
themes=settings['THEMES'],
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
|
|
@ -648,6 +653,7 @@ class TestStaticGenerator(unittest.TestCase):
|
|||
for generator_class in (PagesGenerator, StaticGenerator):
|
||||
generator_class(context=context, settings=settings,
|
||||
path=settings['PATH'], output_path=None,
|
||||
themes=settings['THEMES'],
|
||||
theme=settings['THEME']).generate_context()
|
||||
|
||||
staticnames = [os.path.basename(c.source_path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue