forked from github/pelican
fix theme path construction
This commit is contained in:
parent
d88cc86df2
commit
5642f11367
4 changed files with 19 additions and 19 deletions
|
|
@ -720,7 +720,7 @@ Setting name (followed by default value, if any) What does it do?
|
||||||
the paths defined in this settings, they will be
|
the paths defined in this settings, they will be
|
||||||
progressively overwritten.
|
progressively overwritten.
|
||||||
``CSS_FILE = 'main.css'`` Specify the CSS file you want to load.
|
``CSS_FILE = 'main.css'`` Specify the CSS file you want to load.
|
||||||
``THEMES = ['simple', ('!simple', 'simple')]`` Extra themes that can be inherited from, either
|
``THEMES = ['simple', ['!simple', 'simple']]`` Extra themes that can be inherited from, either
|
||||||
implicitly (just a path to the theme) or explicitly
|
implicitly (just a path to the theme) or explicitly
|
||||||
using a prefix marker (tuple of prefix and path to
|
using a prefix marker (tuple of prefix and path to
|
||||||
theme). They can also inherit from each other,
|
theme). They can also inherit from each other,
|
||||||
|
|
|
||||||
|
|
@ -377,7 +377,7 @@ extra explicitly inherited theme
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
THEMES = ['simple', ('!simple', 'simple'), ('!foo', 'foo')]
|
THEMES = ['simple', ['!simple', 'simple'], ['!foo', 'foo']]
|
||||||
|
|
||||||
You can extend parent (inherited) or sibling (your own theme) templates
|
You can extend parent (inherited) or sibling (your own theme) templates
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,27 +54,18 @@ class Generator(object):
|
||||||
os.path.join(self.theme, 'templates')))
|
os.path.join(self.theme, 'templates')))
|
||||||
self._templates_path += self.settings['EXTRA_TEMPLATES_PATHS']
|
self._templates_path += self.settings['EXTRA_TEMPLATES_PATHS']
|
||||||
|
|
||||||
pelican_theme_path = os.path.dirname(os.path.abspath(__file__))
|
|
||||||
simple_theme_path = os.path.join(pelican_theme_path,
|
|
||||||
"themes", "simple", "templates")
|
|
||||||
|
|
||||||
explicit_themes = {}
|
explicit_themes = {}
|
||||||
themes = [FileSystemLoader(self._templates_path)]
|
themes = [FileSystemLoader(self._templates_path)]
|
||||||
for theme in self.themes:
|
for theme in self.themes:
|
||||||
if isinstance(theme, tuple): # explicit inheritance
|
if isinstance(theme, list): # explicit inheritance
|
||||||
prefix, theme_path = theme
|
prefix, theme_path = theme
|
||||||
if prefix == '!simple':
|
|
||||||
theme_path = simple_theme_path
|
|
||||||
templates_path = os.path.join(theme_path, "templates")
|
templates_path = os.path.join(theme_path, "templates")
|
||||||
logger.debug('Template path for prefix %s: %s', prefix,
|
logger.debug('Template path for prefix %s: %s', prefix,
|
||||||
templates_path)
|
templates_path)
|
||||||
explicit_themes[prefix] = FileSystemLoader(templates_path)
|
explicit_themes[prefix] = FileSystemLoader(templates_path)
|
||||||
else: # implicit inheritance
|
else: # implicit inheritance
|
||||||
if theme == 'simple':
|
templates_path = os.path.join(theme, "templates")
|
||||||
templates_path = simple_theme_path
|
logger.debug('Implicit template path: %s', templates_path)
|
||||||
else:
|
|
||||||
templates_path = os.path.join(theme, "templates")
|
|
||||||
logger.debug('Implicit template path: %s', templates_path)
|
|
||||||
themes.append(FileSystemLoader(templates_path))
|
themes.append(FileSystemLoader(templates_path))
|
||||||
|
|
||||||
themes.append(PrefixLoader(explicit_themes))
|
themes.append(PrefixLoader(explicit_themes))
|
||||||
|
|
@ -738,7 +729,7 @@ class StaticGenerator(Generator):
|
||||||
os.curdir)
|
os.curdir)
|
||||||
|
|
||||||
for theme in self.themes:
|
for theme in self.themes:
|
||||||
theme = theme[1] if isinstance(theme, tuple) else theme
|
theme = theme[1] if isinstance(theme, list) else theme
|
||||||
self._copy_paths(self.settings['THEME_STATIC_PATHS'], theme,
|
self._copy_paths(self.settings['THEME_STATIC_PATHS'], theme,
|
||||||
self.settings['THEME_STATIC_DIR'], self.output_path,
|
self.settings['THEME_STATIC_DIR'], self.output_path,
|
||||||
os.curdir)
|
os.curdir)
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,11 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEFAULT_THEME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
DEFAULT_THEME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
'themes', 'notmyidea')
|
'themes', 'notmyidea')
|
||||||
|
|
||||||
|
|
||||||
|
SIMPLE_THEME = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
|
'themes', 'simple')
|
||||||
|
|
||||||
DEFAULT_CONFIG = {
|
DEFAULT_CONFIG = {
|
||||||
'PATH': os.curdir,
|
'PATH': os.curdir,
|
||||||
'ARTICLE_PATHS': [''],
|
'ARTICLE_PATHS': [''],
|
||||||
|
|
@ -34,7 +39,7 @@ DEFAULT_CONFIG = {
|
||||||
'PAGE_PATHS': ['pages'],
|
'PAGE_PATHS': ['pages'],
|
||||||
'PAGE_EXCLUDES': [],
|
'PAGE_EXCLUDES': [],
|
||||||
'THEME': DEFAULT_THEME,
|
'THEME': DEFAULT_THEME,
|
||||||
'THEMES': [DEFAULT_THEME, ('!simple', DEFAULT_THEME)],
|
'THEMES': [SIMPLE_THEME, ['!simple', SIMPLE_THEME]],
|
||||||
'OUTPUT_PATH': 'output',
|
'OUTPUT_PATH': 'output',
|
||||||
'READERS': {},
|
'READERS': {},
|
||||||
'STATIC_PATHS': ['images'],
|
'STATIC_PATHS': ['images'],
|
||||||
|
|
@ -168,7 +173,7 @@ def read_settings(path=None, override=None):
|
||||||
|
|
||||||
if 'THEMES' in local_settings and local_settings['THEMES']:
|
if 'THEMES' in local_settings and local_settings['THEMES']:
|
||||||
for i, p in enumerate(local_settings['THEMES']):
|
for i, p in enumerate(local_settings['THEMES']):
|
||||||
explicit = isinstance(p, tuple)
|
explicit = isinstance(p, list)
|
||||||
p = p[1] if explicit else p
|
p = p[1] if explicit else p
|
||||||
if not isabs(p):
|
if not isabs(p):
|
||||||
absp = os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(path), p)))
|
absp = os.path.abspath(os.path.normpath(os.path.join(os.path.dirname(path), p)))
|
||||||
|
|
@ -237,13 +242,17 @@ def configure_settings(settings):
|
||||||
% settings['THEME'])
|
% settings['THEME'])
|
||||||
|
|
||||||
for i, theme in enumerate(settings['THEMES']):
|
for i, theme in enumerate(settings['THEMES']):
|
||||||
theme = theme[1] if isinstance(theme, tuple) else theme
|
explicit = isinstance(theme, list)
|
||||||
|
theme = theme[1] if explicit else theme
|
||||||
if not os.path.isdir(theme):
|
if not os.path.isdir(theme):
|
||||||
theme_path = os.path.join(
|
theme_path = os.path.join(
|
||||||
os.path.dirname(os.path.abspath(__file__)),
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
'themes', theme)
|
'themes', theme)
|
||||||
if os.path.exists(theme_path):
|
if os.path.exists(theme_path):
|
||||||
settings['THEMES'][i] = theme_path
|
if explicit:
|
||||||
|
settings['THEMES'][i][1] = theme_path
|
||||||
|
else:
|
||||||
|
settings['THEMES'][i] = theme_path
|
||||||
else:
|
else:
|
||||||
raise Exception("Could not find the theme %s"
|
raise Exception("Could not find the theme %s"
|
||||||
% theme)
|
% theme)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue