kopia lustrzana https://github.com/snarfed/bridgy-fed
Web.get_or_create bug fix: handle opted out users
fixes https://console.cloud.google.com/errors/detail/CJ2U0_Hq6cHnUA;time=P30D?project=bridgy-federatedpull/736/head
rodzic
6091cd4063
commit
fae7769d2b
|
@ -495,6 +495,17 @@ class WebTest(TestCase):
|
||||||
self.assert_entities_equal(user, Web.get_by_id('foo.bar'))
|
self.assert_entities_equal(user, Web.get_by_id('foo.bar'))
|
||||||
self.assertIsNone(Web.get_by_id('..foo.bar.'))
|
self.assertIsNone(Web.get_by_id('..foo.bar.'))
|
||||||
|
|
||||||
|
def test_get_or_create_existing(self, *_):
|
||||||
|
user = Web.get_or_create('user.com')
|
||||||
|
self.assertEqual('user.com', user.key.id())
|
||||||
|
self.assert_entities_equal(user, self.user)
|
||||||
|
|
||||||
|
def test_get_or_create_existing_opted_out(self, *_):
|
||||||
|
self.user.obj.mf2['properties']['summary'] = '#nobridge'
|
||||||
|
self.user.obj.put()
|
||||||
|
self.user.put()
|
||||||
|
self.assertIsNone(Web.get_or_create('user.com'))
|
||||||
|
|
||||||
def test_bad_source_url(self, *mocks):
|
def test_bad_source_url(self, *mocks):
|
||||||
orig_count = Object.query().count()
|
orig_count = Object.query().count()
|
||||||
|
|
||||||
|
|
6
web.py
6
web.py
|
@ -94,7 +94,11 @@ class Web(User, Protocol):
|
||||||
Normalizing currently consists of lower casing and removing leading and
|
Normalizing currently consists of lower casing and removing leading and
|
||||||
trailing dots.
|
trailing dots.
|
||||||
"""
|
"""
|
||||||
domain = cls.key_for(id).id().lower().strip('.')
|
key = cls.key_for(id)
|
||||||
|
if not key:
|
||||||
|
return None # opted out
|
||||||
|
|
||||||
|
domain = key.id().lower().strip('.')
|
||||||
return super().get_or_create(domain, **kwargs)
|
return super().get_or_create(domain, **kwargs)
|
||||||
|
|
||||||
@ndb.ComputedProperty
|
@ndb.ComputedProperty
|
||||||
|
|
Ładowanie…
Reference in New Issue