diff --git a/server.py b/server.py index 5fa8d53..d1a3dd0 100644 --- a/server.py +++ b/server.py @@ -219,6 +219,34 @@ def unsubscribe(): app.logger.error(f"Error in unsubscribe endpoint: {e}") return "Internal server error", 500 +@app.route("/newsletters", methods=["GET"]) +def newsletters(): + """ + List all newsletters (newest first) with caching for better performance. + """ + try: + newsletters = get_newsletters_cached() + return render_template("newsletters.html", newsletters=newsletters) + except Exception as e: + app.logger.error(f"Error in newsletters endpoint: {e}") + return "Internal server error", 500 + +@app.route("/newsletter/", methods=["GET"]) +def newsletter_detail(newsletter_id): + """ + Show a single newsletter by its ID with caching. + """ + try: + newsletter = get_newsletter_by_id_cached(newsletter_id) + + if not newsletter: + return "Newsletter not found.", 404 + + return render_template("newsletter_detail.html", newsletter=newsletter) + except Exception as e: + app.logger.error(f"Error in newsletter_detail endpoint: {e}") + return "Internal server error", 500 + @app.route("/admin/clear-cache", methods=["POST"]) def clear_cache(): """Admin endpoint to clear newsletter cache""" diff --git a/templates/index.html b/templates/index.html index e444c7d..ac5110b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -14,6 +14,10 @@