mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Remove the dependency to pkgutil for the plugins
This commit is contained in:
parent
7184484488
commit
c5a63c953a
9 changed files with 84 additions and 89 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import pkgutil
|
|
||||||
|
|
||||||
from blinker import signal
|
from blinker import signal
|
||||||
|
|
||||||
|
|
@ -46,15 +45,18 @@ class Pelican(object):
|
||||||
else:
|
else:
|
||||||
raise Exception("Impossible to find the theme %s" % theme)
|
raise Exception("Impossible to find the theme %s" % theme)
|
||||||
|
|
||||||
plugins_path = plugins_path or settings['PLUGINS_PATH']
|
self.init_plugins()
|
||||||
if plugins_path:
|
|
||||||
plugins_path = os.path.abspath(os.path.expanduser(plugins_path))
|
|
||||||
self.load_plugins(plugins_path)
|
|
||||||
else:
|
|
||||||
self.plugins = None
|
|
||||||
|
|
||||||
signal('pelican_initialized').send(self)
|
signal('pelican_initialized').send(self)
|
||||||
|
|
||||||
|
def init_plugins(self):
|
||||||
|
self.plugins = self.settings['PLUGINS']
|
||||||
|
for plugin in self.plugins:
|
||||||
|
# if it's a string, then import it
|
||||||
|
if isinstance(plugin, str):
|
||||||
|
plugin = __import__(plugin, globals(), locals(), 'module')
|
||||||
|
|
||||||
|
plugin.register()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""Run the generators and return"""
|
"""Run the generators and return"""
|
||||||
|
|
||||||
|
|
@ -97,13 +99,6 @@ class Pelican(object):
|
||||||
def get_writer(self):
|
def get_writer(self):
|
||||||
return Writer(self.output_path, settings=self.settings)
|
return Writer(self.output_path, settings=self.settings)
|
||||||
|
|
||||||
def load_plugins(self, path):
|
|
||||||
loaded = []
|
|
||||||
for module_loader, name, ispkg in pkgutil.walk_packages(path=[path,]):
|
|
||||||
loaded.append(module_loader.find_module(name).load_module(name))
|
|
||||||
self.plugins = loaded
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
@ -136,8 +131,6 @@ def main():
|
||||||
parser.add_argument('-r', '--autoreload', dest='autoreload', action='store_true',
|
parser.add_argument('-r', '--autoreload', dest='autoreload', action='store_true',
|
||||||
help="Relaunch pelican each time a modification occurs on the content"
|
help="Relaunch pelican each time a modification occurs on the content"
|
||||||
"files")
|
"files")
|
||||||
parser.add_argument('-p', '--plugins', default=None, dest='plugins_path',
|
|
||||||
help='the path of plugins to use')
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
log.init(args.verbosity)
|
log.init(args.verbosity)
|
||||||
|
|
@ -155,7 +148,7 @@ def main():
|
||||||
|
|
||||||
try:
|
try:
|
||||||
pelican = cls(settings, args.path, args.theme, args.output, markup,
|
pelican = cls(settings, args.path, args.theme, args.output, markup,
|
||||||
args.delete_outputdir, args.plugins_path)
|
args.delete_outputdir)
|
||||||
if args.autoreload:
|
if args.autoreload:
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from blinker import signal
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
from jinja2.exceptions import TemplateNotFound
|
from jinja2.exceptions import TemplateNotFound
|
||||||
|
|
||||||
from pelican.utils import copytree, get_relative_path, process_translations, open
|
from pelican.utils import copy, get_relative_path, process_translations, open
|
||||||
from pelican.contents import Article, Page, is_valid_content
|
from pelican.contents import Article, Page, is_valid_content
|
||||||
from pelican.readers import read_file
|
from pelican.readers import read_file
|
||||||
from pelican.log import *
|
from pelican.log import *
|
||||||
|
|
@ -214,7 +214,7 @@ class ArticlesGenerator(Generator):
|
||||||
and self.settings['FALLBACK_ON_FS_DATE']:
|
and self.settings['FALLBACK_ON_FS_DATE']:
|
||||||
metadata['date'] = datetime.fromtimestamp(os.stat(f).st_ctime)
|
metadata['date'] = datetime.fromtimestamp(os.stat(f).st_ctime)
|
||||||
|
|
||||||
self.signal['pelican_article_generate_context'].send(self, metadatas=metadatas)
|
self.signal['pelican_article_generate_context'].send(self, metadata=metadata)
|
||||||
article = Article(content, metadata, settings=self.settings,
|
article = Article(content, metadata, settings=self.settings,
|
||||||
filename=f)
|
filename=f)
|
||||||
if not is_valid_content(article, f):
|
if not is_valid_content(article, f):
|
||||||
|
|
|
||||||
0
pelican/plugins/__init__.py
Normal file
0
pelican/plugins/__init__.py
Normal file
|
|
@ -14,10 +14,10 @@ Add LICENSE to your settings file to define default license.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def add_license(generator, metadatas):
|
def add_license(generator, metadata):
|
||||||
if 'license' not in metadatas.keys()\
|
if 'license' not in metadata.keys()\
|
||||||
and 'LICENSE' in generator.settings.keys():
|
and 'LICENSE' in generator.settings.keys():
|
||||||
metadatas['license'] = generator.settings['LICENSE']
|
metadata['license'] = generator.settings['LICENSE']
|
||||||
|
|
||||||
|
|
||||||
signal('pelican_article_generate_context').connect(add_license)
|
signal('pelican_article_generate_context').connect(add_license)
|
||||||
|
|
@ -13,7 +13,7 @@ Settings:
|
||||||
|
|
||||||
Add AUTHOR_EMAIL to your settings file to define default author email
|
Add AUTHOR_EMAIL to your settings file to define default author email
|
||||||
|
|
||||||
Article metadatas:
|
Article metadata:
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
:email: article's author email
|
:email: article's author email
|
||||||
|
|
@ -22,18 +22,19 @@ If one of them are defined the author_gravatar variable is added to
|
||||||
article's context.
|
article's context.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def add_gravatar(generator, metadatas):
|
def add_gravatar(generator, metadata):
|
||||||
|
|
||||||
#first check email
|
#first check email
|
||||||
if 'email' not in metadatas.keys()\
|
if 'email' not in metadata.keys()\
|
||||||
and 'AUTHOR_EMAIL' in generator.settings.keys():
|
and 'AUTHOR_EMAIL' in generator.settings.keys():
|
||||||
metadatas['email'] = generator.settings['AUTHOR_EMAIL']
|
metadata['email'] = generator.settings['AUTHOR_EMAIL']
|
||||||
|
|
||||||
#then add gravatar url
|
#then add gravatar url
|
||||||
if 'email' in metadatas.keys():
|
if 'email' in metadata.keys():
|
||||||
gravatar_url = "http://www.gravatar.com/avatar/" + \
|
gravatar_url = "http://www.gravatar.com/avatar/" + \
|
||||||
hashlib.md5(metadatas['email'].lower()).hexdigest()
|
hashlib.md5(metadata['email'].lower()).hexdigest()
|
||||||
metadatas["author_gravatar"] = gravatar_url
|
metadata["author_gravatar"] = gravatar_url
|
||||||
|
|
||||||
|
|
||||||
signal('pelican_article_generate_context').connect(add_gravatar)
|
def register():
|
||||||
|
signal('pelican_article_generate_context').connect(add_gravatar)
|
||||||
|
|
@ -4,4 +4,5 @@ from blinker import signal
|
||||||
def test(sender):
|
def test(sender):
|
||||||
print "%s initialized !!" % sender
|
print "%s initialized !!" % sender
|
||||||
|
|
||||||
signal('pelican_initialized').connect(test)
|
def register():
|
||||||
|
signal('pelican_initialized').connect(test)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue