fix crash on RSS/Atom feeds for users without obj or obj.as1

fixes https://console.cloud.google.com/errors/detail/CKSZq8OU-tCRXA;time=P30D?project=bridgy-federated
pull/696/head
Ryan Barrett 2023-10-23 13:10:27 -07:00
rodzic f783dcc762
commit 9a87d7261f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 12 dodań i 4 usunięć

Wyświetl plik

@ -249,6 +249,9 @@ def serve_feed(*, objects, format, title, as_snippets=False, quiet=False):
tasklets.wait_all(gets)
actor = (g.user.obj.as1 if g.user.obj and g.user.obj.as1
else {'displayName': g.user.readable_id, 'url': g.user.web_url()})
# TODO: inject/merge common.pretty_link into microformats2.render_content
# (specifically into hcard_to_html) somehow to convert Mastodon URLs to @-@
# syntax. maybe a fediverse kwarg down through the call chain?
@ -256,12 +259,12 @@ def serve_feed(*, objects, format, title, as_snippets=False, quiet=False):
entries = [microformats2.object_to_html(a) for a in activities]
return render_template('feed.html', **TEMPLATE_VARS, **locals())
elif format == 'atom':
body = atom.activities_to_atom(activities, actor=g.user.obj.as1,
title=title, request_url=request.url)
body = atom.activities_to_atom(activities, actor=actor, title=title,
request_url=request.url)
return body, {'Content-Type': atom.CONTENT_TYPE}
elif format == 'rss':
body = rss.from_activities(activities, actor=g.user.obj.as1,
title=title, feed_url=request.url)
body = rss.from_activities(activities, actor=actor, title=title,
feed_url=request.url)
return body, {'Content-Type': rss.CONTENT_TYPE}

Wyświetl plik

@ -341,6 +341,11 @@ class PagesTest(TestCase):
self.assert_equals(atom.CONTENT_TYPE, got.headers['Content-Type'])
self.assert_equals([], atom.atom_to_activities(got.text))
def test_feed_atom_empty_g_user_without_obj(self):
self.user.obj_key = None
self.user.put()
self.test_feed_atom_empty()
def test_feed_atom(self):
self.add_objects()
got = self.client.get('/web/user.com/feed?format=atom')