diff --git a/freezeyt.yaml b/freezeyt.yaml
index e1e1d67e..9141c1d4 100644
--- a/freezeyt.yaml
+++ b/freezeyt.yaml
@@ -8,7 +8,6 @@ extra_pages:
- /praha-ntk/
url_finders:
text/html: pyladies_cz:get_html_links
- text/css: pyladies_cz:get_css_links
extra_files:
CNAME: pyladies.cz
googlecc704f0f191eda8f.html:
@@ -17,3 +16,5 @@ extra_files:
copy_from: original/course.html
static:
copy_from: static/
+status_handlers:
+ "308": "save" # Permanent redirect
diff --git a/pyladies_cz.py b/pyladies_cz.py
index 47263f42..c2eee9d0 100755
--- a/pyladies_cz.py
+++ b/pyladies_cz.py
@@ -3,10 +3,6 @@
"""Create or serve the pyladies.cz website
"""
-import sys
-if sys.version_info < (3, 0):
- raise RuntimeError('You need Python 3.')
-
import os
import fnmatch
import datetime
@@ -16,6 +12,7 @@
import argparse
from flask import Flask, render_template, url_for, send_from_directory, abort
+from flask import make_response
import yaml
import markdown
@@ -25,7 +22,7 @@
app = Flask('pyladies_cz')
app.config['TEMPLATES_AUTO_RELOAD'] = True
-app.config['TRAP_HTTP_EXCEPTIONS'] = True
+app.config['PROPAGATE_EXCEPTIONS'] = True
orig_path = os.path.join(app.root_path, 'original/')
v1_path = os.path.join(orig_path, 'v1/')
@@ -38,13 +35,12 @@ def redirect(url):
"""Return a response with a Meta redirect"""
# With static pages, we can't use HTTP redirects.
- # Return a page wit instead.
- #
- # When Frozen-Flask gets support for redirects
- # (https://github.com/Frozen-Flask/Frozen-Flask/issues/81),
- # this should be revisited.
+ # Return a page with instead.
- return render_template('meta_redirect.html', url=url)
+ rendered_template = render_template('meta_redirect.html', url=url)
+ response = make_response(rendered_template, 308) # 308 Permanent redirect
+ response.headers['Location'] = url
+ return response
########
@@ -125,7 +121,11 @@ def v1(path=''):
path += 'index.html'
if path in REDIRECTS:
return redirect(REDIRECTS[path])
- return send_from_directory(v1_path, path)
+ response = send_from_directory(v1_path, path)
+ if path.startswith(('css/bootstrap.css', 'reveal.js')):
+ # Bootstrap and Reveal contain some URLs to documents we do not serve.
+ response.headers['Freezeyt-URL-Finder'] = 'none'
+ return response
@app.route('/course.html')
def course_html():
@@ -360,9 +360,6 @@ def info_redirect(app):
yield url_for('info_redirect', city=city)
def get_html_links(page_content, base_url, headers):
- from urllib.parse import urlparse
- if urlparse(base_url).path.startswith('/v1/reveal.js'):
- return
import freezeyt.url_finders
for link in freezeyt.url_finders.get_html_links(
page_content, base_url, headers,
@@ -370,14 +367,6 @@ def get_html_links(page_content, base_url, headers):
if not link.startswith('../components/bootstrap/fonts/glyphicons-halflings-regular.'):
yield link
-def get_css_links(page_content, base_url, headers):
- from urllib.parse import urlparse
- if urlparse(base_url).path.startswith('/v1/css/bootstrap.css'):
- return ()
- import freezeyt.url_finders
- return freezeyt.url_finders.get_css_links(
- page_content, base_url, headers)
-
def serve(host, port):
app.run(host=host, port=port, debug=True)
diff --git a/requirements.txt b/requirements.txt
index c6a6a223..fb67bd3f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
PyYAML
Flask
-freezeyt==1.2.0
+freezeyt==2.0.0
markdown
markupsafe
werkzeug<3