From 04145e92f84d4537f94af8453a95f41af84ec8a5 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sat, 7 Mar 2020 15:39:12 -0600 Subject: [PATCH] add page modified time to the template --- incorporealcms/pages.py | 6 +++++- incorporealcms/templates/base.html | 3 +++ tests/test_pages.py | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/incorporealcms/pages.py b/incorporealcms/pages.py index c7a5616..7c45e4d 100644 --- a/incorporealcms/pages.py +++ b/incorporealcms/pages.py @@ -1,8 +1,11 @@ """General page functionality.""" +import datetime import logging +import os import markdown from flask import Blueprint, Markup, abort, current_app as app, render_template +from tzlocal import get_localzone logger = logging.getLogger(__name__) @@ -19,6 +22,7 @@ def display_page(path): try: with app.open_instance_resource(resolved_path, 'r') as entry_file: logger.debug("file '%s' found", resolved_path) + mtime = datetime.datetime.fromtimestamp(os.path.getmtime(entry_file.name), get_localzone()) entry = entry_file.read() except FileNotFoundError: logger.warning("requested path '%s' (resolved path '%s') not found!", path, resolved_path) @@ -27,7 +31,7 @@ def display_page(path): content = Markup(md.convert(entry)) logger.debug("file metadata: %s", md.Meta) title = " ".join(md.Meta.get('title')) if md.Meta.get('title') else "" - return render_template('base.html', title=title, content=content) + return render_template('base.html', title=title, content=content, mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z')) def page_file_resolver(path): diff --git a/incorporealcms/templates/base.html b/incorporealcms/templates/base.html index a1ea790..37c968e 100644 --- a/incorporealcms/templates/base.html +++ b/incorporealcms/templates/base.html @@ -3,3 +3,6 @@
{{ content }}
+ diff --git a/tests/test_pages.py b/tests/test_pages.py index e9009c1..56e1e51 100644 --- a/tests/test_pages.py +++ b/tests/test_pages.py @@ -1,4 +1,6 @@ """Test page views and helper methods.""" +import re + from incorporealcms.pages import page_file_resolver @@ -36,3 +38,9 @@ def test_page_without_title_metadata(client): assert response.status_code == 200 assert b'incorporeal.org' in response.data assert b'

this page doesn\'t have a title!

' in response.data + + +def test_page_has_modified_timestamp(client): + response = client.get('/') + assert response.status_code == 200 + assert re.search(r'Last modified: ....-..-.. ..:..:.. ...', response.data.decode()) is not None