import jinja2
import os
from posty.util import slugify_posty1
from .base import Renderer
[docs]
class Posty1RedirectRenderer(Renderer):
"""
Renderer which creates pages to redirect old Posty1 URLs to new Posty2 URLs
Old Posty1 post URLs are in the form of:
/:year/:month/:old_slug.html
Posty2 URLs are in the form of:
/:year/:month/:slug/index.html
"""
[docs]
def render_site(self) -> None:
template_path = os.path.join(self.site.site_path, "templates/redirect.html")
template = jinja2.Template(open(template_path).read())
for post in self.site.posts:
old_dir = os.path.join(
self.output_path, str(post.date.year), str(post.date.month)
)
if not os.path.exists(old_dir):
os.makedirs(old_dir)
old_slug = slugify_posty1(post.title)
redirect_filename = os.path.join(old_dir, "{}.html".format(old_slug))
with open(redirect_filename, "w") as redirect:
redirect.write(template.render(url=post.url()))