Compare commits

..

3 Commits

9 changed files with 95 additions and 48 deletions

View File

@ -76,6 +76,8 @@ def handle_markdown_file_path(resolved_path):
page_title = f'{page_name} - {app.config["TITLE_SUFFIX"]}' if page_name else app.config['TITLE_SUFFIX'] page_title = f'{page_name} - {app.config["TITLE_SUFFIX"]}' if page_name else app.config['TITLE_SUFFIX']
logger.debug("title (potentially derived): %s", page_title) logger.debug("title (potentially derived): %s", page_title)
extra_footer = get_meta_str(md, 'footer') if md.Meta.get('footer') else None
template = get_meta_str(md, 'template') if md.Meta.get('template') else 'base.html' template = get_meta_str(md, 'template') if md.Meta.get('template') else 'base.html'
# check if this has a HTTP redirect # check if this has a HTTP redirect
@ -86,7 +88,8 @@ def handle_markdown_file_path(resolved_path):
return render(template, title=page_title, description=get_meta_str(md, 'description'), return render(template, title=page_title, description=get_meta_str(md, 'description'),
image=get_meta_str(md, 'image'), base_url=request.base_url, content=content, image=get_meta_str(md, 'image'), base_url=request.base_url, content=content,
navs=parent_navs, mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z')) navs=parent_navs, mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z'),
extra_footer=extra_footer)
def request_path_to_instance_resource_path(path): def request_path_to_instance_resource_path(path):

View File

@ -72,6 +72,10 @@ footer {
margin-top: 30px; margin-top: 30px;
} }
.extra-footer {
margin-bottom: 5px;
}
table { table {
border-collapse: collapse; border-collapse: collapse;
} }

View File

@ -23,6 +23,16 @@ p a:hover, ul a:hover, ol a:hover {
border-bottom: 1px solid #B31D15; border-bottom: 1px solid #B31D15;
} }
footer a, ul a, ol a {
color: #999;
border-bottom: 1px solid #999;
}
footer a:hover, ul a:hover, ol a:hover {
color: #811610;
border-bottom: 1px solid #811610;
}
div.site-wrap { div.site-wrap {
background: black; background: black;
} }

View File

@ -23,6 +23,16 @@ p a:hover, ul a:hover, ol a:hover {
border-bottom: 1px solid #811610; border-bottom: 1px solid #811610;
} }
footer a, ul a, ol a {
color: #999;
border-bottom: 1px solid #999;
}
footer a:hover, ul a:hover, ol a:hover {
color: #811610;
border-bottom: 1px solid #811610;
}
div.site-wrap { div.site-wrap {
background: white; background: white;
} }

View File

@ -31,7 +31,8 @@
{{ content }} {{ content }}
</div> </div>
<footer> <footer>
<i>Last modified: {{ mtime }}</i> {% if extra_footer %}<div class="extra-footer"><i>{{ extra_footer|safe }}</i></div>{% endif %}
<div class="footer"><i>Last modified: {{ mtime }}</i></div>
</footer> </footer>
{% endblock %} {% endblock %}
</div> </div>

View File

@ -4,32 +4,34 @@
# #
# pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in # pip-compile --output-file=requirements/requirements-dev.txt requirements/requirements-dev.in
# #
attrs==21.4.0 attrs==22.1.0
# via pytest # via pytest
bandit==1.7.4 bandit==1.7.4
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
certifi==2022.5.18.1 build==0.8.0
# via pip-tools
certifi==2022.9.14
# via requests # via requests
charset-normalizer==2.0.12 charset-normalizer==2.1.1
# via requests # via requests
click==8.1.3 click==8.1.3
# via # via
# flask # flask
# pip-tools # pip-tools
# safety # safety
coverage[toml]==6.4 coverage[toml]==6.4.4
# via pytest-cov # via pytest-cov
distlib==0.3.4 distlib==0.3.6
# via virtualenv # via virtualenv
dlint==0.12.0 dlint==0.13.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
dparse==0.5.1 dparse==0.6.0
# via safety # via safety
filelock==3.7.0 filelock==3.8.0
# via # via
# tox # tox
# virtualenv # virtualenv
flake8==4.0.1 flake8==5.0.4
# via # via
# -r requirements/requirements-dev.in # -r requirements/requirements-dev.in
# dlint # dlint
@ -48,19 +50,19 @@ flake8-executable==2.1.1
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
flake8-fixme==1.1.1 flake8-fixme==1.1.1
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
flake8-isort==4.1.1 flake8-isort==4.2.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
flake8-logging-format==0.6.0 flake8-logging-format==0.7.5
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
flake8-mutable==1.2.0 flake8-mutable==1.2.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
flask==2.1.2 flask==2.2.2
# via -r requirements/requirements.in # via -r requirements/requirements.in
gitdb==4.0.9 gitdb==4.0.9
# via gitpython # via gitpython
gitpython==3.1.27 gitpython==3.1.27
# via bandit # via bandit
idna==3.3 idna==3.4
# via requests # via requests
iniconfig==1.1.1 iniconfig==1.1.1
# via pytest # via pytest
@ -70,23 +72,26 @@ itsdangerous==2.1.2
# via flask # via flask
jinja2==3.1.2 jinja2==3.1.2
# via flask # via flask
markdown==3.3.7 markdown==3.4.1
# via -r requirements/requirements.in # via -r requirements/requirements.in
markupsafe==2.1.1 markupsafe==2.1.1
# via jinja2 # via
mccabe==0.6.1 # jinja2
# werkzeug
mccabe==0.7.0
# via flake8 # via flake8
packaging==21.3 packaging==21.3
# via # via
# build
# dparse # dparse
# pytest # pytest
# safety # safety
# tox # tox
pbr==5.9.0 pbr==5.10.0
# via stevedore # via stevedore
pep517==0.12.0 pep517==0.13.0
# via pip-tools # via build
pip-tools==6.6.2 pip-tools==6.8.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
platformdirs==2.5.2 platformdirs==2.5.2
# via virtualenv # via virtualenv
@ -98,66 +103,64 @@ py==1.11.0
# via # via
# pytest # pytest
# tox # tox
pycodestyle==2.8.0 pycodestyle==2.9.1
# via flake8 # via flake8
pydocstyle==6.1.1 pydocstyle==6.1.1
# via flake8-docstrings # via flake8-docstrings
pydot==1.4.2 pydot==1.4.2
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
pyflakes==2.4.0 pyflakes==2.5.0
# via flake8 # via flake8
pyparsing==3.0.9 pyparsing==3.0.9
# via # via
# packaging # packaging
# pydot # pydot
pytest==7.1.2 pytest==7.1.3
# via # via
# -r requirements/requirements-dev.in # -r requirements/requirements-dev.in
# pytest-cov # pytest-cov
pytest-cov==3.0.0 pytest-cov==3.0.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
pyyaml==6.0 pyyaml==6.0
# via # via bandit
# bandit requests==2.28.1
# dparse
requests==2.27.1
# via safety # via safety
safety==1.10.3 ruamel-yaml==0.17.21
# via safety
ruamel-yaml-clib==0.2.6
# via ruamel-yaml
safety==2.1.1
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
six==1.16.0 six==1.16.0
# via # via tox
# tox
# virtualenv
smmap==5.0.0 smmap==5.0.0
# via gitdb # via gitdb
snowballstemmer==2.2.0 snowballstemmer==2.2.0
# via pydocstyle # via pydocstyle
stevedore==3.5.0 stevedore==4.0.0
# via bandit # via bandit
testfixtures==6.18.5
# via flake8-isort
toml==0.10.2 toml==0.10.2
# via # via dparse
# dparse
# tox
tomli==2.0.1 tomli==2.0.1
# via # via
# build
# coverage # coverage
# pep517 # pep517
# pytest # pytest
tox==3.25.0 # tox
tox==3.26.0
# via # via
# -r requirements/requirements-dev.in # -r requirements/requirements-dev.in
# tox-wheel # tox-wheel
tox-wheel==0.7.0 tox-wheel==0.7.0
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
urllib3==1.26.9 urllib3==1.26.12
# via requests # via requests
versioneer==0.22 versioneer==0.26
# via -r requirements/requirements-dev.in # via -r requirements/requirements-dev.in
virtualenv==20.14.1 virtualenv==20.16.5
# via tox # via tox
werkzeug==2.1.2 werkzeug==2.2.2
# via flask # via flask
wheel==0.37.1 wheel==0.37.1
# via # via

View File

@ -6,15 +6,17 @@
# #
click==8.1.3 click==8.1.3
# via flask # via flask
flask==2.1.2 flask==2.2.2
# via -r requirements/requirements.in # via -r requirements/requirements.in
itsdangerous==2.1.2 itsdangerous==2.1.2
# via flask # via flask
jinja2==3.1.2 jinja2==3.1.2
# via flask # via flask
markdown==3.3.7 markdown==3.4.1
# via -r requirements/requirements.in # via -r requirements/requirements.in
markupsafe==2.1.1 markupsafe==2.1.1
# via jinja2 # via
werkzeug==2.1.2 # jinja2
# werkzeug
werkzeug==2.2.2
# via flask # via flask

View File

@ -210,3 +210,11 @@ def test_pages_can_supply_alternate_templates(client):
response = client.get('/custom-template') response = client.get('/custom-template')
assert b'class="site-wrap site-wrap-normal-width"' not in response.data assert b'class="site-wrap site-wrap-normal-width"' not in response.data
assert b'class="site-wrap site-wrap-double-width"' in response.data assert b'class="site-wrap site-wrap-double-width"' in response.data
def test_extra_footer_per_page(client):
"""Test that we don't include the extra-footer if there isn't one (or do if there is)."""
response = client.get('/')
assert b'<div class="extra-footer">' not in response.data
response = client.get('/index-but-with-footer')
assert b'<div class="extra-footer"><i>ooo <a href="a">a</a></i>' in response.data

View File

@ -0,0 +1,6 @@
Title: Index
Footer: ooo <a href="a">a</a>
# test index
this is some test content