fix where the feed generator outputs to, and also output error pages

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
This commit is contained in:
Brian S. Stephan 2025-03-17 08:35:58 -05:00
parent 4644aea4b0
commit d52fc4df9a
Signed by: bss
GPG Key ID: 3DE06D3180895FCB
5 changed files with 36 additions and 9 deletions

View File

@ -8,10 +8,16 @@ import logging
import os
from logging.config import dictConfig
from jinja2 import Environment, PackageLoader, select_autoescape
from termcolor import cprint
from incorporealcms.config import Config
jinja_env = Environment(
loader=PackageLoader('incorporealcms'),
autoescape=select_autoescape(),
)
# dynamically generate version number
try:
# packaged/pip install -e . value

View File

@ -0,0 +1,21 @@
"""Process the error page templates.
SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
SPDX-License-Identifier: GPL-3.0-only
"""
import os
from incorporealcms import jinja_env
from incorporealcms.config import Config
def generate_error_pages(dest_dir: str) -> None:
"""Process the error pages and place them in the output dir.
Args:
dest_dir: the directory to place the error pages in, for a web server to serve
"""
for template_name in ['400.html', '404.html', '500.html']:
template = jinja_env.get_template(template_name)
with open(os.path.join(dest_dir, template_name), 'w') as error_page:
error_page.write(template.render(config=Config))

View File

@ -13,18 +13,13 @@ import os
import re
import markdown
from jinja2 import Environment, PackageLoader, select_autoescape
from markupsafe import Markup
from incorporealcms import jinja_env
from incorporealcms.config import Config
logger = logging.getLogger(__name__)
jinja_env = Environment(
loader=PackageLoader('incorporealcms'),
autoescape=select_autoescape(),
)
def get_meta_str(md, key):
"""Provide the page's (parsed in Markup obj md) metadata for the specified key, or '' if unset."""

View File

@ -12,6 +12,7 @@ import tempfile
from termcolor import cprint
from incorporealcms import __version__, init_instance
from incorporealcms.error_pages import generate_error_pages
from incorporealcms.feed import generate_feed
from incorporealcms.markdown import handle_markdown_file_path
@ -61,8 +62,12 @@ class StaticSiteGenerator(object):
# generate the feeds
cprint("generating feeds", 'green')
generate_feed('atom', self.instance_dir, self.output_dir)
generate_feed('rss', self.instance_dir, self.output_dir)
generate_feed('atom', self.instance_dir, tmp_output_dir)
generate_feed('rss', self.instance_dir, tmp_output_dir)
# generate the error pages
cprint("generating error pages", 'green')
generate_error_pages(tmp_output_dir)
# move temporary dir to the destination
old_output_dir = f'{self.output_dir}-old-{os.path.basename(tmp_output_dir)}'

View File

@ -13,7 +13,7 @@ SPDX-License-Identifier: GPL-3.0-only
{% block body %}
<div class="content">
<h1>NOT FOUND</h1>
<p>Sorry, <b><tt>{{ request.path }}</tt></b> does not seem to exist, at least not anymore.</p>
<p>Sorry, the file you requested does not seem to exist, at least not anymore.</p>
<p>It's possible you followed a dead link on this site, in which case I would appreciate it if you could email me at
{{ config.CONTACT_EMAIL }} and I can take a look. I make an effort to symlink old content to its new location,
so old links and URLs should, generally speaking, work.</p>