diff --git a/common.py b/common.py index 265f8c7c..fb8e45ce 100644 --- a/common.py +++ b/common.py @@ -518,3 +518,13 @@ class FlashErrors(View): _, body = interpret_http_exception(e) flask_util.flash(util.linkify(body or str(e), pretty=True)) return redirect('/login') + + +def render_template(template, **kwargs): + return flask.render_template( + template, + isinstance=isinstance, + request=request, + set=set, + util=util, + **kwargs) diff --git a/pages.py b/pages.py index 6770c326..6ffb3f1d 100644 --- a/pages.py +++ b/pages.py @@ -6,7 +6,7 @@ import logging import re import time -from flask import render_template, request +from flask import request from google.cloud.ndb import tasklets from google.cloud.ndb.key import Key from google.cloud.ndb.query import OR @@ -33,7 +33,13 @@ from activitypub import ActivityPub import atproto from atproto import ATProto, BlueskyOAuthStart import common -from common import CACHE_CONTROL, DOMAIN_RE, ErrorButDoNotRetryTask, PROTOCOL_DOMAINS +from common import ( + CACHE_CONTROL, + DOMAIN_RE, + ErrorButDoNotRetryTask, + PROTOCOL_DOMAINS, + render_template, +) from flask_app import app from flask import redirect, session import ids @@ -53,12 +59,6 @@ from protocol import Protocol from web import Web import webfinger -# precompute this because we get a ton of requests for non-existing users -# from weird open redirect referrers: -# https://github.com/snarfed/bridgy-fed/issues/422 -with app.test_request_context('/'): - USER_NOT_FOUND_HTML = render_template('user_not_found.html') - logger = logging.getLogger(__name__) BLOG_REDIRECT_DOMAINS = ( @@ -72,15 +72,18 @@ TEMPLATE_VARS = { 'as2': as2, 'ATProto': ATProto, 'ids': ids, - 'isinstance': isinstance, 'logs': logs, 'Nostr': Nostr, 'PROTOCOLS': PROTOCOLS, - 'set': set, - 'util': util, 'Web': Web, } +# precompute this because we get a ton of requests for non-existing users +# from weird open redirect referrers: +# https://github.com/snarfed/bridgy-fed/issues/422 +with app.test_request_context('/'): + USER_NOT_FOUND_HTML = render_template('user_not_found.html', **TEMPLATE_VARS) + def load_user(protocol, id): """Loads and returns the current request's user. diff --git a/templates/base.html b/templates/base.html index f643bb5c..ae705f76 100644 --- a/templates/base.html +++ b/templates/base.html @@ -18,6 +18,11 @@ -- happen before an async script loads. --> + + + + + diff --git a/web.py b/web.py index 06dd1b92..4401e7a5 100644 --- a/web.py +++ b/web.py @@ -9,7 +9,7 @@ from urllib.parse import quote, urlencode, urljoin, urlparse from xml.etree import ElementTree import brevity -from flask import redirect, render_template, request +from flask import redirect, request from google.cloud import ndb from google.cloud.ndb import ComputedProperty from granary import as1, as2, atom, microformats2, rss @@ -31,6 +31,7 @@ from common import ( DOMAINS, PRIMARY_DOMAIN, PROTOCOL_DOMAINS, + render_template, SUPERDOMAIN, ) from flask_app import app