You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
7.3 KiB
262 lines
7.3 KiB
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*- #
|
|
|
|
# Probably replace those with simpler methods:
|
|
from __future__ import unicode_literals
|
|
from operator import itemgetter, methodcaller
|
|
|
|
AUTHOR = 'Philipp Schönberger'
|
|
EMAIL = 'mail AT phschoen.de'
|
|
SITENAME = 'https://phschoen.de'
|
|
OUTPUT_PATH = 'output/'
|
|
|
|
STATIC_PATHS = [
|
|
'images',
|
|
'extra', # this
|
|
]
|
|
EXTRA_PATH_METADATA = {
|
|
'extra/robots.txt': {'path': 'robots.txt'},
|
|
'extra/favicon.ico': {'path': 'favicon.ico'},
|
|
'extra/loading.gif': {'path': 'theme/images/loading.gif'},
|
|
'extra/zoom.png': {'path': 'theme/images/zoom.png'},
|
|
'extra/jquery.mousewheel.min.js': {'path': 'js/jquery.mousewheel.min.js'},
|
|
'extra/lg-autoplay.js': {'path': 'js/lg-autoplay.js'},
|
|
'extra/lg-fullscreen.js': {'path': 'js/lg-fullscreen.js'},
|
|
'extra/lg-hash.js': {'path': 'js/lg-hash.js'},
|
|
'extra/lg-pager.js': {'path': 'js/lg-pager.js'},
|
|
'extra/lg-share.js': {'path': 'js/lg-share.js'},
|
|
'extra/lg-zoom.js': {'path': 'js/lg-zoom.js'},
|
|
'extra/lightgallery.js': {'path': 'js/lightgallery.js'},
|
|
|
|
'extra/en.jpg': {'path': 'images/en.jpg'},
|
|
'extra/de.jpg': {'path': 'images/de.jpg'},
|
|
'extra/lightgallery_setup.css': {'path': 'css/lightgallery_setup.css'},
|
|
'extra/lightgallery.css': {'path': 'css/lightgallery.css'},
|
|
|
|
'extra/fonts/lg.eot': {'path': 'fonts/lg.eot'},
|
|
'extra/fonts/lg.svg': {'path': 'fonts/lg.svg'},
|
|
'extra/fonts/lg.ttf': {'path': 'fonts/lg.ttf'},
|
|
'extra/fonts/lg.woff': {'path': 'fonts/lg.woff'},
|
|
'extra/googlec921759af9dae688.html': {'path': 'googlec921759af9dae688.html'},
|
|
}
|
|
|
|
# Base URL this page is hosted at:
|
|
SITENAME = 'phschoen.de'
|
|
SITEURL = 'https://phschoen.de'
|
|
|
|
# Timezone is GMT+1:
|
|
TIMEZONE = 'Europe/Paris'
|
|
# Using a simple date format:
|
|
DEFAULT_DATE_FORMAT = ('%d %b %Y')
|
|
DEFAULT_LANG = 'en'
|
|
DATE_FORMATS = {
|
|
'en': '%-d/%b/%Y',
|
|
'de': '%-d/%-m/%Y',
|
|
}
|
|
LOCALE = ('usa', 'de', # On Windows
|
|
'en_US', 'de_DE' # On Unix/Linux
|
|
)
|
|
ARTICLE_URL = 'blog/{slug}'
|
|
ARTICLE_SAVE_AS = 'blog/{slug}/index.html'
|
|
ARTICLE_LANG_URL = '{lang}/blog/{slug}'
|
|
ARTICLE_LANG_SAVE_AS = '{lang}/blog/{slug}.html'
|
|
|
|
PAGE_URL = '{slug}'
|
|
PAGE_SAVE_AS = '{slug}/index.html'
|
|
PAGE_LANG_URL = '{lang}/{slug}'
|
|
PAGE_LANG_SAVE_AS = '{lang}/{slug}/index.html'
|
|
|
|
LOCALE = 'en_US'
|
|
|
|
# We are using the custom minimal theme:
|
|
THEME = 'themes/minimal'
|
|
THEME = 'themes/bootstrap-4-blog-theme'
|
|
THEME_STATIC_DIR = 'theme'
|
|
|
|
DELETE_OUTPUT_DIRECTORY = True
|
|
# MARKUP = ('md',)
|
|
# # Markdown Configuration:
|
|
MARKDOWN = {
|
|
'extension_configs': {
|
|
'markdown.extensions.codehilite': {'css_class': 'highlight'},
|
|
'markdown.extensions.extra': {},
|
|
'markdown.extensions.meta': {},
|
|
},
|
|
'output_format': 'html5',
|
|
}
|
|
# We don't use relative URLs:
|
|
RELATIVE_URLS = False
|
|
|
|
# Edit predefined pathes:
|
|
ARCHIVES_SAVE_AS = 'pages/index.html'
|
|
|
|
# Generates nice URLs for pages:
|
|
PAGE_URL = '{slug}'
|
|
PAGE_SAVE_AS = '{slug}/index.html'
|
|
|
|
# Generate nice URLs for articles:
|
|
ARTICLE_EXCLUDES = (('pages',))
|
|
ARTICLE_URL = 'blog/{slug}'
|
|
ARTICLE_SAVE_AS = 'blog/{slug}/index.html'
|
|
|
|
# Generate nice URLs for tags:
|
|
TAG_URL = 'tag/{name}/'
|
|
TAG_SAVE_AS = 'tag/{name}/index.html'
|
|
TAGS_SAVE_AS = 'tags/index.html'
|
|
|
|
# Generate nice URLs for categories:
|
|
CATEGORY_URL = 'category/{name}/'
|
|
CATEGORY_SAVE_AS = 'category/{name}/index.html'
|
|
|
|
# Setup the RSS/ATOM feeds:
|
|
FEED_DOMAIN = SITEURL
|
|
FEED_MAX_ITEMS = 10
|
|
# We only want RSS/ATOM Feeds for all articles, exclude categories:
|
|
FEED_RSS = 'feeds/rss.xml'
|
|
# TAG_FEED_RSS = 'feeds/{slug}.rss.xml'
|
|
CATEGORY_FEED_RSS = None
|
|
|
|
# Feed generation is usually not desired when developing
|
|
FEED_ATOM = 'feeds/atom.xml'
|
|
FEED_ALL_ATOM = None
|
|
TAG_FEED_ATOM = None
|
|
CATEGORY_FEED_ATOM = None
|
|
TRANSLATION_FEED_ATOM = None
|
|
|
|
|
|
# Separate page directory and articles directory:
|
|
PAGE_PATHS = ['pages']
|
|
ARTICLE_PATHS = ['blog']
|
|
|
|
# Save index as blog/index.html instead of index.html:
|
|
INDEX_SAVE_AS = 'blog/index.html'
|
|
|
|
# Navigation menu:
|
|
SECTIONS = [
|
|
('Blog', '/blog/', None),
|
|
('Projects', '/category/projects', [
|
|
('quadrocopter', '/blog/quadrocopter'),
|
|
('3d Printer', '/blog/3d-printer'),
|
|
]),
|
|
('less plastic', '/category/plasticfree/', None),
|
|
('Gallery', '/gallery', None),
|
|
('about', '/about', None),
|
|
('Impressum', '/impressum', None),
|
|
]
|
|
|
|
# Links to display in the footer:
|
|
LINKS = [('bsd', 'http://www.opensource.org/licenses/BSD-3-Clause'),
|
|
('xhtml', 'http://validator.w3.org/check/referer'),
|
|
('css3', 'http://jigsaw.w3.org/css-validator/check/referer?profile=css'),
|
|
('pelican', 'https://github.com/getpelican'),
|
|
]
|
|
|
|
# Set some default category:
|
|
DEFAULT_CATEGORY = 'uncategorized'
|
|
|
|
# Social widget
|
|
# SOCIAL = (('You can add links in your config file', '#'),
|
|
# ('Another social link', '#'),)
|
|
|
|
# DEFAULT_PAGINATION = 10
|
|
|
|
PLUGIN_PATHS = ['plugins', ]
|
|
PLUGINS = [
|
|
'lightgallery',
|
|
'i18n_subsites',
|
|
'extended-sitemap',
|
|
'pelican-bootstrapify',
|
|
'render_math'
|
|
]
|
|
|
|
SITEMAP = {
|
|
'format': 'xml',
|
|
'priorities': {
|
|
'articles': 0.5,
|
|
'indexes': 0.5,
|
|
'pages': 0.5
|
|
},
|
|
'changefreqs': {
|
|
'articles': 'weekly',
|
|
'indexes': 'daily',
|
|
'pages': 'weekly'
|
|
}
|
|
}
|
|
EXTENDED_SITEMAP_PLUGIN = {
|
|
'priorities': {
|
|
'index': 1.0,
|
|
'articles': 0.8,
|
|
'pages': 0.5,
|
|
'others': 0.4
|
|
},
|
|
'changefrequencies': {
|
|
'index': 'daily',
|
|
'articles': 'weekly',
|
|
'pages': 'weekly',
|
|
'others': 'weekly',
|
|
}
|
|
}
|
|
|
|
GITHUB_SOURCE_PATH = "wooot"
|
|
|
|
I18N_SUBSITES = {'de': {'SITENAME': 'phschoen.de',
|
|
'THEME_STATIC_DIR': 'theme',
|
|
'OUTPUT_PATH': './output/de',
|
|
},
|
|
'en': {'SITENAME': 'phschoen.com',
|
|
'SITEURL': SITEURL,
|
|
'THEME_STATIC_DIR': 'theme',
|
|
'OUTPUT_PATH': './output/',
|
|
},
|
|
}
|
|
|
|
languages_lookup = {'en': {'name': 'English',
|
|
'icon': SITEURL + '/images/en.jpg'
|
|
},
|
|
'de': {'name': 'Deutsch',
|
|
'icon': SITEURL + '/images/de.jpg'
|
|
},
|
|
}
|
|
|
|
|
|
def lookup_lang_ico(lang_code):
|
|
return languages_lookup[lang_code]['icon']
|
|
|
|
|
|
def lookup_lang_name(lang_code):
|
|
return languages_lookup[lang_code]['name']
|
|
|
|
|
|
def getGitHubPage(source_file):
|
|
filename = getBasename(source_file)
|
|
return '{0}/{1}'.format(GITHUB_SOURCE_PATH, filename)
|
|
|
|
|
|
def getBasename(path):
|
|
import ntpath
|
|
return ntpath.basename(path)
|
|
|
|
|
|
def month_name(month_number):
|
|
import calendar
|
|
return calendar.month_name[month_number]
|
|
|
|
|
|
def sortTupleByIndex(items, index=0, reverse=True):
|
|
return sorted(items, key=lambda tup: len(tup[index]), reverse=reverse)
|
|
|
|
|
|
def sortDictByKey(items, key, reverse=True, default=None):
|
|
if default is None:
|
|
return sorted(items, key=itemgetter(key), reverse=reverse)
|
|
return sorted(items, key=methodcaller('get', key, default), reverse=reverse)
|
|
|
|
|
|
JINJA_FILTERS = {'month_name': month_name,
|
|
'sortTupleByIndex': sortTupleByIndex,
|
|
'sortDictByKey': sortDictByKey,
|
|
'basename': getBasename,
|
|
'asGitHubPage': getGitHubPage,
|
|
'lookup_lang_name': lookup_lang_name,
|
|
'lookup_lang_ico': lookup_lang_ico,
|
|
}
|