Put deprecation code in a separate place

This commit is contained in:
Alexis Metaireau 2012-03-11 01:59:04 +01:00
commit d6be2fb44c
2 changed files with 39 additions and 30 deletions

View file

@ -6,7 +6,7 @@ import time
from pelican.generators import (ArticlesGenerator, PagesGenerator, from pelican.generators import (ArticlesGenerator, PagesGenerator,
StaticGenerator, PdfGenerator) StaticGenerator, PdfGenerator)
from pelican.settings import read_settings from pelican.settings import read_settings, _DEFAULT_CONFIG
from pelican.utils import clean_output_dir, files_changed from pelican.utils import clean_output_dir, files_changed
from pelican.writers import Writer from pelican.writers import Writer
from pelican import log from pelican import log
@ -20,6 +20,9 @@ class Pelican(object):
"""Read the settings, and performs some checks on the environment """Read the settings, and performs some checks on the environment
before doing anything else. before doing anything else.
""" """
if settings is None:
settings = _DEFAULT_CONFIG
self.path = path or settings['PATH'] self.path = path or settings['PATH']
if not self.path: if not self.path:
raise Exception('you need to specify a path containing the content' raise Exception('you need to specify a path containing the content'
@ -28,44 +31,11 @@ class Pelican(object):
if self.path.endswith('/'): if self.path.endswith('/'):
self.path = self.path[:-1] self.path = self.path[:-1]
if settings.get('CLEAN_URLS', False):
log.warning('Found deprecated `CLEAN_URLS` in settings. Modifing'
' the following settings for the same behaviour.')
settings['ARTICLE_URL'] = '{slug}/'
settings['ARTICLE_LANG_URL'] = '{slug}-{lang}/'
settings['PAGE_URL'] = 'pages/{slug}/'
settings['PAGE_LANG_URL'] = 'pages/{slug}-{lang}/'
for setting in ('ARTICLE_URL', 'ARTICLE_LANG_URL', 'PAGE_URL',
'PAGE_LANG_URL'):
log.warning("%s = '%s'" % (setting, settings[setting]))
if settings.get('ARTICLE_PERMALINK_STRUCTURE', False):
log.warning('Found deprecated `ARTICLE_PERMALINK_STRUCTURE` in'
' settings. Modifing the following settings for'
' the same behaviour.')
structure = settings['ARTICLE_PERMALINK_STRUCTURE']
# Convert %(variable) into {variable}.
structure = re.sub('%\((\w+)\)s', '{\g<1>}', structure)
# Convert %x into {date:%x} for strftime
structure = re.sub('(%[A-z])', '{date:\g<1>}', structure)
# Strip a / prefix
structure = re.sub('^/', '', structure)
for setting in ('ARTICLE_URL', 'ARTICLE_LANG_URL', 'PAGE_URL',
'PAGE_LANG_URL', 'ARTICLE_SAVE_AS',
'ARTICLE_LANG_SAVE_AS', 'PAGE_SAVE_AS',
'PAGE_LANG_SAVE_AS'):
settings[setting] = os.path.join(structure, settings[setting])
log.warning("%s = '%s'" % (setting, settings[setting]))
# define the default settings # define the default settings
self.settings = settings self.settings = settings
self._handle_deprecation()
self.theme = theme or settings['THEME'] self.theme = theme or settings['THEME']
output_path = output_path or settings['OUTPUT_PATH'] output_path = output_path or settings['OUTPUT_PATH']
self.output_path = os.path.realpath(output_path) self.output_path = os.path.realpath(output_path)
@ -82,6 +52,45 @@ class Pelican(object):
else: else:
raise Exception("Impossible to find the theme %s" % theme) raise Exception("Impossible to find the theme %s" % theme)
def _handle_deprecation(self):
if self.settings.get('CLEAN_URLS', False):
log.warning('Found deprecated `CLEAN_URLS` in settings. Modifing'
' the following settings for the same behaviour.')
self.settings['ARTICLE_URL'] = '{slug}/'
self.settings['ARTICLE_LANG_URL'] = '{slug}-{lang}/'
self.settings['PAGE_URL'] = 'pages/{slug}/'
self.settings['PAGE_LANG_URL'] = 'pages/{slug}-{lang}/'
for setting in ('ARTICLE_URL', 'ARTICLE_LANG_URL', 'PAGE_URL',
'PAGE_LANG_URL'):
log.warning("%s = '%s'" % (setting, self.settings[setting]))
if self.settings.get('ARTICLE_PERMALINK_STRUCTURE', False):
log.warning('Found deprecated `ARTICLE_PERMALINK_STRUCTURE` in'
' settings. Modifing the following settings for'
' the same behaviour.')
structure = self.settings['ARTICLE_PERMALINK_STRUCTURE']
# Convert %(variable) into {variable}.
structure = re.sub('%\((\w+)\)s', '{\g<1>}', structure)
# Convert %x into {date:%x} for strftime
structure = re.sub('(%[A-z])', '{date:\g<1>}', structure)
# Strip a / prefix
structure = re.sub('^/', '', structure)
for setting in ('ARTICLE_URL', 'ARTICLE_LANG_URL', 'PAGE_URL',
'PAGE_LANG_URL', 'ARTICLE_SAVE_AS',
'ARTICLE_LANG_SAVE_AS', 'PAGE_SAVE_AS',
'PAGE_LANG_SAVE_AS'):
self.settings[setting] = os.path.join(structure,
self.settings[setting])
log.warning("%s = '%s'" % (setting, self.settings[setting]))
def run(self): def run(self):
"""Run the generators and return""" """Run the generators and return"""

View file

@ -61,7 +61,7 @@ _DEFAULT_CONFIG = {'PATH': None,
} }
def read_settings(filename): def read_settings(filename=None):
"""Load a Python file into a dictionary. """Load a Python file into a dictionary.
""" """
context = _DEFAULT_CONFIG.copy() context = _DEFAULT_CONFIG.copy()