123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- """
- Author images plugin for Pelican
- ===========================
- This plugin assigns the ``author.avatar`` and ``author.image`` variables to the
- avatar and image of the author in question. Authors are identified by email
- address, and avatars are images are stored in directories configured by
- AUTHOR_AVATARS and AUTHOR_IMAGES.
- """
- from pelican import signals
- from hashlib import sha256
- from os.path import exists
- EXTENSIONS = ['jpg', 'png', 'svg']
- def add_author_image(author, generator):
- hashsum = sha256(author.name).hexdigest()
- static = generator.settings['THEME'] + '/static/'
- if 'AUTHOR_AVATARS' in generator.settings.keys():
- avatar = generator.settings['AUTHOR_AVATARS'] + '/' + hashsum
- for ext in EXTENSIONS:
- if exists('%s%s.%s' % (static, avatar, ext)):
- author.avatar = '%s/%s.%s' % \
- (generator.settings['THEME_STATIC_DIR'], avatar, ext)
- break
- if 'AUTHOR_IMAGES' in generator.settings.keys():
- image = generator.settings['AUTHOR_IMAGES'] + '/' + hashsum
- for ext in EXTENSIONS:
- if exists('%s%s.%s' % (static, image, ext)):
- author.image = '%s/%s.%s' % \
- (generator.settings['THEME_STATIC_DIR'], image, ext)
- break
- def add_author_images(generator):
- for article in generator.articles:
- for author in article.authors:
- add_author_image(author, generator)
- for author, _ in generator.authors:
- add_author_image(author, generator)
- def register():
- signals.article_generator_finalized.connect(add_author_images)
|