add gravatar plugin and pelican_generate_context signal

This commit is contained in:
Nicolas Duhamel 2011-04-26 13:16:09 +02:00
commit dfe4d4e132
2 changed files with 25 additions and 0 deletions

View file

@ -8,6 +8,8 @@ import os
import math import math
import random import random
from blinker import signal
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from jinja2.exceptions import TemplateNotFound from jinja2.exceptions import TemplateNotFound
@ -92,6 +94,7 @@ class ArticlesGenerator(Generator):
self.dates = {} self.dates = {}
self.tags = defaultdict(list) self.tags = defaultdict(list)
self.categories = defaultdict(list) self.categories = defaultdict(list)
self.signal = {'pelican_generate_context' : signal('pelican_generate_context')}
super(ArticlesGenerator, self).__init__(*args, **kwargs) super(ArticlesGenerator, self).__init__(*args, **kwargs)
def generate_feeds(self, writer): def generate_feeds(self, writer):
@ -200,6 +203,8 @@ class ArticlesGenerator(Generator):
and self.settings['FALLBACK_ON_FS_DATE']: and self.settings['FALLBACK_ON_FS_DATE']:
metadatas['date'] = datetime.fromtimestamp(os.stat(f).st_ctime) metadatas['date'] = datetime.fromtimestamp(os.stat(f).st_ctime)
self.signal['pelican_generate_context'].send(self, metadatas=metadatas)
article = Article(content, metadatas, settings=self.settings, article = Article(content, metadatas, settings=self.settings,
filename=f) filename=f)
if not is_valid_content(article, f): if not is_valid_content(article, f):

View file

@ -0,0 +1,20 @@
import hashlib
from blinker import signal
def add_gravatar(generator, metadatas):
#first check email
if 'email' not in metadatas.keys()\
and 'AUTHOR_EMAIL' in generator.settings.keys():
metadatas['email'] = generator.settings['AUTHOR_EMAIL']
#then add gravatar url
if 'email' in metadatas.keys():
gravatar_url = "http://www.gravatar.com/avatar/" + \
hashlib.md5(metadatas['email'].lower()).hexdigest()
metadatas["author_gravatar"] = gravatar_url
signal('pelican_generate_context').connect(add_gravatar)