stop using g.user in web, part of redirect

for #690
pull/731/head
Ryan Barrett 2023-11-19 21:07:56 -08:00
rodzic fefcbbb77e
commit 990ec47c89
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 29 dodań i 27 usunięć

Wyświetl plik

@ -87,8 +87,7 @@ def redir(to):
if domain: if domain:
if domain in DOMAIN_ALLOWLIST: if domain in DOMAIN_ALLOWLIST:
break break
g.user = Web.get_by_id(domain) if Web.get_by_id(domain):
if g.user:
logger.info(f'Found web user for domain {domain}') logger.info(f'Found web user for domain {domain}')
break break
else: else:

53
web.py
Wyświetl plik

@ -494,8 +494,8 @@ def check_web_site():
return render_template('enter_web_site.html'), 400 return render_template('enter_web_site.html'), 400
try: try:
g.user = Web.get_or_create(domain, direct=True) user = Web.get_or_create(domain, direct=True)
g.user = g.user.verify() user = user.verify()
except BaseException as e: except BaseException as e:
code, body = util.interpret_http_exception(e) code, body = util.interpret_http_exception(e)
if code: if code:
@ -503,8 +503,8 @@ def check_web_site():
return render_template('enter_web_site.html') return render_template('enter_web_site.html')
raise raise
g.user.put() user.put()
return redirect(g.user.user_page_path()) return redirect(user.user_page_path())
@app.post('/webmention') @app.post('/webmention')
@ -524,8 +524,8 @@ def webmention_external():
if not domain: if not domain:
error(f'Bad source URL {source}') error(f'Bad source URL {source}')
g.user = Web.get_by_id(domain) user = Web.get_by_id(domain)
if not g.user: if not user:
error(f'No user found for domain {domain}') error(f'No user found for domain {domain}')
return common.create_task('webmention', **request.form) return common.create_task('webmention', **request.form)
@ -537,14 +537,17 @@ def webmention_interactive():
...eg the update profile button on user pages. ...eg the update profile button on user pages.
""" """
source = flask_util.get_required_param('source').strip()
try: try:
webmention_external() webmention_external()
flash(f'Updating fediverse profile from <a href="{g.user.web_url()}">{g.user.key.id()}</a>...') user = Web(id=util.domain_from_link(source, minimize=False))
flash(f'Updating fediverse profile from <a href="{user.web_url()}">{user.key.id()}</a>...')
return redirect(user.user_page_path(), code=302)
except HTTPException as e: except HTTPException as e:
flash(util.linkify(str(e.description), pretty=True)) flash(util.linkify(str(e.description), pretty=True))
return redirect('/', code=302)
path = g.user.user_page_path() if g.user else '/'
return redirect(path, code=302)
@app.post('/queue/webmention') @app.post('/queue/webmention')
@ -558,9 +561,9 @@ def webmention_task():
domain = util.domain_from_link(source, minimize=False) domain = util.domain_from_link(source, minimize=False)
logger.info(f'webmention from {domain}') logger.info(f'webmention from {domain}')
g.user = Web.get_by_id(domain) user = Web.get_by_id(domain)
logger.info(f'User: {g.user.key}') logger.info(f'User: {user.key}')
if not g.user: if not user:
error(f'No user found for domain {domain}', status=304) error(f'No user found for domain {domain}', status=304)
# fetch source page # fetch source page
@ -585,7 +588,7 @@ def webmention_task():
'id': id, 'id': id,
'objectType': 'activity', 'objectType': 'activity',
'verb': 'delete', 'verb': 'delete',
'actor': g.user.web_url(), 'actor': user.web_url(),
'object': source, 'object': source,
}) })
@ -595,27 +598,27 @@ def webmention_task():
authors = obj.mf2['properties'].setdefault('author', []) authors = obj.mf2['properties'].setdefault('author', [])
author_urls = microformats2.get_string_urls(authors) author_urls = microformats2.get_string_urls(authors)
if not author_urls: if not author_urls:
authors.append(g.user.web_url()) authors.append(user.web_url())
elif not g.user.is_web_url(author_urls[0]): elif not user.is_web_url(author_urls[0]):
logger.info(f'Overriding author {author_urls[0]} with {g.user.web_url()}') logger.info(f'Overriding author {author_urls[0]} with {user.web_url()}')
if isinstance(authors[0], dict): if isinstance(authors[0], dict):
authors[0]['properties']['url'] = [g.user.web_url()] authors[0]['properties']['url'] = [user.web_url()]
else: else:
authors[0] = g.user.web_url() authors[0] = user.web_url()
# if source is home page, update Web user and send an actor Update to # if source is home page, update Web user and send an actor Update to
# followers' instances # followers' instances
if g.user and (g.user.key.id() == obj.key.id() if user and (user.key.id() == obj.key.id()
or g.user.is_web_url(obj.key.id())): or user.is_web_url(obj.key.id())):
logger.info(f'Converted to AS1: {obj.type}: {json_dumps(obj.as1, indent=2)}') logger.info(f'Converted to AS1: {obj.type}: {json_dumps(obj.as1, indent=2)}')
obj.put() obj.put()
g.user.obj = obj user.obj = obj
g.user.put() user.put()
logger.info('Wrapping in Update for home page user profile') logger.info('Wrapping in Update for home page user profile')
actor_as1 = { actor_as1 = {
**obj.as1, **obj.as1,
'id': g.user.web_url(), 'id': user.web_url(),
'updated': util.now().isoformat(), 'updated': util.now().isoformat(),
} }
id = common.host_url(f'{obj.key.id()}#update-{util.now().isoformat()}') id = common.host_url(f'{obj.key.id()}#update-{util.now().isoformat()}')
@ -623,7 +626,7 @@ def webmention_task():
'objectType': 'activity', 'objectType': 'activity',
'verb': 'update', 'verb': 'update',
'id': id, 'id': id,
'actor': g.user.web_url(), 'actor': user.web_url(),
'object': actor_as1, 'object': actor_as1,
}) })