from flask import Blueprint, render_template, make_response, request, jsonify import datetime import os from tools import getHandshakeScript # Create blueprint now_bp = Blueprint('now', __name__) def list_page_files(): now_pages = os.listdir("templates/now") now_pages = [ page for page in now_pages if page != "template.html" and page != "old.html" ] now_pages.sort(reverse=True) return now_pages def list_dates(): now_pages = list_page_files() now_dates = [page.split(".")[0] for page in now_pages] return now_dates def get_latest_date(formatted=False): if formatted: date = list_dates()[0] date = datetime.datetime.strptime(date, "%y_%m_%d") date = date.strftime("%A, %B %d, %Y") return date return list_dates()[0] def render_latest(handshake_scripts=None): now_page = list_dates()[0] return render(now_page, handshake_scripts=handshake_scripts) def render(date, handshake_scripts=None): # If the date is not available, render the latest page if date is None: return render_latest(handshake_scripts=handshake_scripts) # Remove .html date = date.removesuffix(".html") if date not in list_dates(): return render_template("404.html"), 404 date_formatted = datetime.datetime.strptime(date, "%y_%m_%d") date_formatted = date_formatted.strftime("%A, %B %d, %Y") return render_template(f"now/{date}.html", DATE=date_formatted, handshake_scripts=handshake_scripts) @now_bp.route("/") def index(): return render_latest(handshake_scripts=getHandshakeScript(request.host)) @now_bp.route("/") def path(path): return render(path, handshake_scripts=getHandshakeScript(request.host)) @now_bp.route("/old") @now_bp.route("/old/") def old(): now_dates = list_dates()[1:] html = '" return render_template( "now/old.html", handshake_scripts=getHandshakeScript(request.host), now_pages=html ) @now_bp.route("/now.rss") @now_bp.route("/now.xml") @now_bp.route("/rss.xml") def rss(): host = "https://" + request.host if ":" in request.host: host = "http://" + request.host # Generate RSS feed now_pages = list_page_files() rss = f'Nathan.Woodburn/{host}See what I\'ve been up toen-us{datetime.datetime.now(tz=datetime.timezone.utc).strftime("%a, %d %b %Y %H:%M:%S %z")}' for page in now_pages: link = page.strip(".html") date = datetime.datetime.strptime(link, "%y_%m_%d") date = date.strftime("%A, %B %d, %Y") rss += f'What\'s Happening {date}{host}/now/{link}Latest updates for {date}{host}/now/{link}' rss += "" return make_response(rss, 200, {"Content-Type": "application/rss+xml"}) @now_bp.route("/now.json") def json(): now_pages = list_page_files() host = "https://" + request.host if ":" in request.host: host = "http://" + request.host now_pages = [{"url": host+"/now/"+page.strip(".html"), "date": datetime.datetime.strptime(page.strip(".html"), "%y_%m_%d").strftime( "%A, %B %d, %Y"), "title": "What's Happening "+datetime.datetime.strptime(page.strip(".html"), "%y_%m_%d").strftime("%A, %B %d, %Y")} for page in now_pages] return jsonify(now_pages)