User.get_or_create: return None if opted out

pull/737/head
Ryan Barrett 2023-11-27 06:50:09 -08:00
rodzic 84eae588a8
commit dd62f472da
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6BE31FDF4776E9D4
2 zmienionych plików z 10 dodań i 0 usunięć

Wyświetl plik

@ -199,10 +199,15 @@ class User(StringIdModel, metaclass=ProtocolUserMeta):
Args:
propagate (bool): whether to create copies of this user in push-based
protocols, eg ATProto and Nostr.
Returns:
User: existing or new user, or None if the user is opted out
"""
assert cls != User
user = cls.get_by_id(id)
if user:
if user.status == 'opt-out':
return None
# override direct from False => True if set
# TODO: propagate more props into user?
direct = kwargs.get('direct')

Wyświetl plik

@ -99,6 +99,11 @@ class UserTest(TestCase):
self.assertEqual('y.z', Fake.get_or_create('a.b').key.id())
def test_get_or_create_opted_out(self):
user = self.make_user('fake:user', cls=Fake,
obj_as1 = {'summary': '#nobridge'})
self.assertIsNone(Fake.get_or_create('fake:user'))
def test_public_pem(self):
pem = self.user.public_pem()
self.assertTrue(pem.decode().startswith('-----BEGIN PUBLIC KEY-----\n'), pem)