teach plugins with dependencies to behave
This commit is contained in:
@@ -20,9 +20,14 @@ import os
|
||||
import logging
|
||||
|
||||
from pelican import signals
|
||||
from webassets import Environment
|
||||
from webassets.ext.jinja2 import AssetsExtension
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
import webassets
|
||||
from webassets import Environment
|
||||
from webassets.ext.jinja2 import AssetsExtension
|
||||
except ImportError:
|
||||
webassets = None
|
||||
|
||||
def add_jinja2_ext(pelican):
|
||||
"""Add Webassets to Jinja2 extensions in Pelican settings."""
|
||||
@@ -41,13 +46,15 @@ def create_assets_env(generator):
|
||||
for item in generator.settings['ASSET_CONFIG']:
|
||||
generator.env.assets_environment.config[item[0]] = item[1]
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
if logging.getLevelName(logger.getEffectiveLevel()) == "DEBUG":
|
||||
generator.env.assets_environment.debug = True
|
||||
|
||||
|
||||
def register():
|
||||
"""Plugin registration."""
|
||||
|
||||
signals.initialized.connect(add_jinja2_ext)
|
||||
signals.generator_init.connect(create_assets_env)
|
||||
if webassets:
|
||||
signals.initialized.connect(add_jinja2_ext)
|
||||
signals.generator_init.connect(create_assets_env)
|
||||
else:
|
||||
logger.warning('`assets` failed to load dependency `webassets`.'
|
||||
'`assets` plugin not loaded.')
|
||||
|
||||
@@ -13,10 +13,6 @@ import subprocess
|
||||
from pelican import Pelican
|
||||
from pelican.settings import read_settings
|
||||
|
||||
import pytest
|
||||
|
||||
assets = pytest.importorskip("assets")
|
||||
|
||||
CUR_DIR = os.path.dirname(__file__)
|
||||
THEME_DIR = os.path.join(CUR_DIR, 'test_data')
|
||||
CSS_REF = open(os.path.join(THEME_DIR, 'static', 'css',
|
||||
@@ -62,10 +58,10 @@ class TestWebAssets(unittest.TestCase):
|
||||
"""Base class for testing webassets."""
|
||||
|
||||
def setUp(self, override=None):
|
||||
|
||||
import assets
|
||||
self.temp_path = mkdtemp(prefix='pelicantests.')
|
||||
settings = {
|
||||
'PATH': os.path.join(os.path.dirname(CUR_DIR), 'tests', 'content'),
|
||||
'PATH': os.path.join(os.path.dirname(CUR_DIR), 'test_data', 'content'),
|
||||
'OUTPUT_PATH': self.temp_path,
|
||||
'PLUGINS': [assets],
|
||||
'THEME': THEME_DIR,
|
||||
|
||||
Reference in New Issue
Block a user