def load_posts(path): g.source_directory = path readers = [] for name in settings.readers: reader = settings.readers[name] if reader: readers.append(import_object(reader)) def detect_reader(filepath): for Reader in readers: reader = Reader(filepath) if reader.support(): return reader.run() return None for filepath in walk_dir(path): post = detect_reader(filepath) if not post: g.pure_files.append(filepath) elif not post.date: g.pure_pages.append(post) elif post.public: g.public_posts.append(post) else: g.secure_posts.append(post) g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True) g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True) logging.info('Load Posts Finished')
def load_posts(path): g.source_directory = path readers = [] for name in settings.reader.get('active'): try: readers.append(import_object(name)) except ImportError: logging.error("Can't enable %s" % name) def detect_reader(filepath): for Reader in readers: reader = Reader(filepath) if reader.support(): return reader.run() return None for filepath in walk_dir(path): if os.path.abspath(g.output_directory) in \ os.path.abspath(filepath): continue post = detect_reader(filepath) if not post: g.pure_files.append(filepath) elif not post.date: g.pure_pages.append(post) elif post.public: g.public_posts.append(post) else: g.secure_posts.append(post) g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True) g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True) logging.info('Load Posts Finished')
def load_posts(path): g.source_directory = path readers = [] for name in settings.reader.get('active'): readers.append(import_object(name)) def detect_reader(filepath): for Reader in readers: reader = Reader(filepath) if reader.support(): return reader.run() return None for filepath in walk_dir(path): post = detect_reader(filepath) if not post: g.pure_files.append(filepath) elif not post.date: g.pure_pages.append(post) elif post.public: g.public_posts.append(post) else: g.secure_posts.append(post) g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True) g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True) logging.info('Load Posts Finished')
def write_posts(): writers = [] for name in settings.writer.get('active'): writers.append(import_object(name)()) load_jinja() for writer in writers: writer.run()
def write_posts(): writers = [] for name in settings.writers: writer = settings.writers[name] if writer: writers.append(import_object(writer)()) load_jinja() for writer in writers: writer.run()
def autolink(self, link, is_email): if is_email: return '<a href="mailto:%(link)s">%(link)s</a>' % {'link': link} for func in settings.readers_variables.get( 'markdown_transform', [ 'liquidluck.readers.markdown.transform_youtube', 'liquidluck.readers.markdown.transform_gist', 'liquidluck.readers.markdown.transform_vimeo', ]): func = import_object(func) value = func(link) if value: return value title = link.replace('http://', '').replace('https://', '') return '<a href="%s">%s</a>' % (link, title)
def autolink(self, link, is_email): if is_email: return '<a href="mailto:%(link)s">%(link)s</a>' % {'link': link} variables = settings.reader.get('vars') or {} for func in variables.get('markdown_transform', [ 'liquidluck.readers.markdown.transform_youtube', 'liquidluck.readers.markdown.transform_gist', 'liquidluck.readers.markdown.transform_vimeo', ]): func = import_object(func) value = func(link) if value: return value title = link.replace('http://', '').replace('https://', '') return '<a href="%s">%s</a>' % (link, title)
def autolink(self, link, is_email): if is_email: return '<a href="mailto:%(link)s">%(link)s</a>' % {"link": link} for func in settings.readers_variables.get( "markdown_transform", [ "liquidluck.readers.markdown.transform_youtube", "liquidluck.readers.markdown.transform_gist", "liquidluck.readers.markdown.transform_vimeo", ], ): func = import_object(func) value = func(link) if value: return value title = link.replace("http://", "").replace("https://", "") return '<a href="%s">%s</a>' % (link, title)
def load_posts(path): g.source_directory = path readers = [] for name in settings.reader.get('active'): try: readers.append(import_object(name)) except ImportError as e: logging.error("Can't enable %s" % name) if g.interrupt: raise e def detect_reader(filepath): for Reader in readers: reader = Reader(filepath) if reader.support(): return reader.run() return None output = os.path.abspath(g.output_directory) source = os.path.abspath(g.source_directory) if output == source: logging.warn('Output and source are the same directory') for filepath in walk_dir(path): if source in output and source != output and \ output in os.path.abspath(filepath): continue post = detect_reader(filepath) if not post: g.pure_files.append(filepath) elif not post.date: g.pure_pages.append(post) elif post.public: g.public_posts.append(post) else: g.secure_posts.append(post) g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True) g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True) logging.info('Load Posts Finished')
def load_jinja(): #: prepare loaders #: loaders = ['_templates', theme] loaders = [] tpl = os.path.abspath('_templates') if os.path.exists(tpl): loaders.append(tpl) theme = os.path.join(os.path.abspath('_themes'), settings.theme) if not os.path.exists(theme): theme = os.path.join(g.liquid_directory, '_themes', settings.theme) #: global variable g.theme_directory = theme theme_template = os.path.join(theme, 'templates') if os.path.exists(theme_template): loaders.append(theme_template) #: load default theme template always default_template = os.path.join( g.liquid_directory, '_themes/default/templates' ) if default_template != theme_template: loaders.append(default_template) #: init jinja jinja = Environment( loader=FileSystemLoader(loaders), autoescape=False, # blog don't need autoescape extensions=settings.template_extensions or [], ) #: initialize globals jinja.globals = {} #: load template variables jinja.globals.update({ 'site': settings.site, 'template': settings.template_variables, }) #: load theme variables config = {} theme_config = os.path.join(theme, 'settings.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) #: user can reset theme variables config.update(settings.theme_variables) jinja.globals.update({'theme': config}) #: default variables jinja.globals.update({ 'system': { 'name': 'Felix Felicis', 'version': liquidluck.__version__, 'homepage': liquidluck.__homepage__, 'time': datetime.datetime.utcnow(), } }) #: function helpers jinja.globals.update({ 'content_url': content_url, 'static_url': static_url(os.path.join(theme, 'static')), }) #: load theme filters config = {} theme_config = os.path.join(theme, 'filters.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) jinja.filters.update(config) #: load filters from settings filters = settings.template_filters or {} for k, v in filters.items(): jinja.filters.update({k: import_object(v)}) #: default filters jinja.filters.update({ 'xmldatetime': lambda o: o.strftime('%Y-%m-%dT%H:%M:%SZ'), 'permalink': permalink, }) #: load resource g.resource['posts'] = g.public_posts g.resource['pages'] = g.pure_pages jinja.globals.update({ 'resource': g.resource, }) g.jinja = jinja return jinja
def post_class(self): cls = self.get('post_class', Post) if isinstance(cls, str): return import_object(cls) return cls
def load_jinja(): #: prepare loaders #: loaders = ['_templates', theme] loaders = [] tpl = os.path.abspath('_templates') if os.path.exists(tpl): loaders.append(tpl) theme = find_theme() #: global variable g.theme_directory = theme theme_template = os.path.join(theme, 'templates') if os.path.exists(theme_template): loaders.append(theme_template) #: load default theme template always default_template = os.path.join( g.liquid_directory, '_themes/default/templates' ) if default_template != theme_template: loaders.append(default_template) #: init jinja jinja = Environment( loader=FileSystemLoader(loaders), autoescape=False, # blog don't need autoescape extensions=settings.writer.get('extensions') or [], ) #: initialize globals jinja.globals = {} #: load template variables jinja.globals.update({ 'site': settings.site, 'template': settings.template.get("vars") or {}, }) #: load theme variables config = {} theme_config = os.path.join(theme, 'settings.py') if os.path.exists(theme_config): logging.warn('settings.py in theme is deprecated since 3.4') logging.warn('the name should be changed to theme.py') execfile(theme_config, {}, config) theme_config = os.path.join(theme, 'theme.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) #: user can reset theme variables config.update(settings.theme.get('vars') or {}) #: keep namespace to the latest variables settings.theme['vars'] = config jinja.globals.update({'theme': config}) #: default variables now = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') jinja.globals.update({ 'system': { 'name': 'Felix Felicis', 'version': liquidluck.__version__, 'homepage': liquidluck.__homepage__, 'time': now, } }) #: function helpers jinja.globals.update({ 'content_url': content_url, 'static_url': static_url(os.path.join(theme, 'static')), }) #: load theme filters config = {} theme_config = os.path.join(theme, 'filters.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) jinja.filters.update(config) #: load filters from settings filters = settings.template.get("filters") or {} for k, v in filters.items(): jinja.filters.update({k: import_object(v)}) #: default filters jinja.filters.update({ 'xmldatetime': xmldatetime, 'feed_updated': feed_updated, 'permalink': permalink, 'tag_url': tag_url, 'year_url': year_url, 'wiki_link': wiki_link, }) #: load resource g.resource['posts'] = g.public_posts g.resource['pages'] = g.pure_pages jinja.globals.update({ 'resource': g.resource, }) g.jinja = jinja return jinja
def load_jinja(): #: prepare loaders #: loaders = ['_templates', theme] loaders = [] tpl = os.path.abspath('_templates') if os.path.exists(tpl): loaders.append(tpl) theme = find_theme() #: global variable g.theme_directory = theme theme_template = os.path.join(theme, 'templates') if os.path.exists(theme_template): loaders.append(theme_template) #: load default theme template always default_template = os.path.join(g.liquid_directory, '_themes/default/templates') if default_template != theme_template: loaders.append(default_template) #: init jinja jinja = Environment( loader=FileSystemLoader(loaders), autoescape=False, # blog don't need autoescape extensions=settings.writer.get('extensions') or [], ) #: initialize globals jinja.globals = {} #: load template variables jinja.globals.update({ 'site': settings.site, 'template': settings.template.get("vars") or {}, }) #: load theme variables config = {} theme_config = os.path.join(theme, 'settings.py') if os.path.exists(theme_config): logging.warn('settings.py in theme is deprecated since 3.4') logging.warn('the name should be changed to theme.py') execfile(theme_config, {}, config) theme_config = os.path.join(theme, 'theme.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) #: user can reset theme variables config.update(settings.theme.get('vars') or {}) #: keep namespace to the latest variables settings.theme['vars'] = config jinja.globals.update({'theme': config}) #: default variables now = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') jinja.globals.update({ 'system': { 'name': 'Felix Felicis', 'version': liquidluck.__version__, 'homepage': liquidluck.__homepage__, 'time': now, } }) #: function helpers jinja.globals.update({ 'content_url': content_url, 'static_url': static_url(os.path.join(theme, 'static')), }) #: load theme filters config = {} theme_config = os.path.join(theme, 'filters.py') if os.path.exists(theme_config): execfile(theme_config, {}, config) jinja.filters.update(config) #: load filters from settings filters = settings.template.get("filters") or {} for k, v in filters.items(): jinja.filters.update({k: import_object(v)}) #: default filters jinja.filters.update({ 'xmldatetime': xmldatetime, 'feed_updated': feed_updated, 'permalink': permalink, 'tag_url': tag_url, 'year_url': year_url, 'wiki_link': wiki_link, }) #: load resource g.resource['posts'] = g.public_posts g.resource['pages'] = g.pure_pages jinja.globals.update({ 'resource': g.resource, }) g.jinja = jinja return jinja