From 8d3577dcb870524157e8dac653b6ac95b81af5fd Mon Sep 17 00:00:00 2001 From: Johnny Irvin Date: Sat, 17 Sep 2022 21:31:48 -0400 Subject: [PATCH 1/2] Remove limitation Let's blindly trust the directory as images ;) --- website/repositories/image_repositories.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/website/repositories/image_repositories.py b/website/repositories/image_repositories.py index 5c3511f..7486d7f 100644 --- a/website/repositories/image_repositories.py +++ b/website/repositories/image_repositories.py @@ -55,9 +55,6 @@ def _load_images(self, directory: str) -> dict[str, Image]: directory = os.path.join('website', directory) for _, _, files in os.walk(directory): for file in files: - if not file.endswith('.jpg') and not file.endswith('.png'): - continue - with open(os.path.join(directory, file), 'rb') as f: content = f.read() created = os.path.getctime(os.path.join(directory, file)) From 2c3071d0ff0128e3fb05f63433ba7af2c0029e46 Mon Sep 17 00:00:00 2001 From: Johnny Irvin Date: Sat, 17 Sep 2022 21:33:01 -0400 Subject: [PATCH 2/2] All site urls for sitemap. Closes #58 - Icon repository - Not found bug fix for article --- website/__init__.py | 36 ++++++++++++++++++++--------------- website/templates/sitemap.xml | 31 ++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/website/__init__.py b/website/__init__.py index 231d344..59942c4 100644 --- a/website/__init__.py +++ b/website/__init__.py @@ -26,8 +26,7 @@ import markdown from flask_talisman import Talisman -from website.repositories import (Repository, blog_repositories, - image_repositories) +from website.repositories import blog_repositories, image_repositories app = flask.Flask(__name__) @@ -52,6 +51,7 @@ blog_repo = blog_repositories.PostRepository('blog') image_repo = image_repositories.ImageRepository('images') +icon_repo = image_repositories.ImageRepository('static/icons') @app.route('/') def index() -> str: @@ -152,13 +152,12 @@ def article(year: int, month: int, day: int, description: str) -> str: """ try: post = blog_repo.get(f"{year}/{month}/{day}/{description}") - except Repository.NotFound: + except Exception: flask.abort(404) return flask.render_template( 'article.pug', title=post.title, - # Day Month Year date=post.date.strftime('%d %B %Y'), content=markdown.markdown( post.content, @@ -204,18 +203,25 @@ def sitemap() -> str: Returns: str: The rendered template. """ - sorted_items = sorted( + sorted_articles = sorted( blog_repo.get_all(), key=lambda post: post.date, reverse=True, ) + sorted_images = sorted( + image_repo.get_all(), + key=lambda image: image.created, + reverse=True, + ) response = flask.make_response( flask.render_template( 'sitemap.xml', - items=sorted_items, + articles=sorted_articles, + images=sorted_images, ) ) response.mimetype = 'application/xml' + return response @@ -228,17 +234,17 @@ def favicon() -> flask.Response: Returns: flask.Response: The image response. """ - directory = os.path.join( - app.root_path, - 'static', - 'icons', - ) - images = os.listdir(directory) + images = icon_repo.get_all() image = random.choice(images) - return flask.send_from_directory( - directory, - image, + mimetype = 'image/jpeg' if image.extension == 'jpg' else 'image/png' + mimetype = 'favicon' if image.extension == 'ico' else mimetype + img_io = io.BytesIO(image.content) + img_io.seek(0) + + return flask.send_file( + img_io, + mimetype=mimetype, ) with open('website/static/faq.md', 'r') as file: diff --git a/website/templates/sitemap.xml b/website/templates/sitemap.xml index 14cb467..df42c9d 100644 --- a/website/templates/sitemap.xml +++ b/website/templates/sitemap.xml @@ -1,7 +1,30 @@ - {% for item in items %} - - {{ 'articles/' + item.get_identifier() }} - + + index + + + faq + + {% for item in articles %} + + {{ 'articles/' + item.get_identifier() }} + {% endfor %} + {% for item in images %} + + {{ 'images/' + item.get_identifier() }} + + + {{ 'images/' + item.get_identifier() + '/thumbnail'}} + + {% endfor %} + + favicon + + + rss + + + sitemap + \ No newline at end of file