kopia lustrzana https://github.com/snarfed/bridgy-fed
Object.as1 conversion from bsky, injecting actor/author
prefer user id to profile object id, default to AT URI repo DIDpull/642/head
rodzic
5b16386fbc
commit
dcbf16db6e
11
models.py
11
models.py
|
@ -494,14 +494,19 @@ class Object(StringIdModel):
|
||||||
else None)
|
else None)
|
||||||
if field:
|
if field:
|
||||||
repo, _, _ = arroba.util.parse_at_uri(self.key.id())
|
repo, _, _ = arroba.util.parse_at_uri(self.key.id())
|
||||||
|
obj.setdefault(field, repo)
|
||||||
# load matching user. prefer bridged non-ATProto user
|
# load matching user. prefer bridged non-ATProto user
|
||||||
# to ATProto user
|
# to ATProto user
|
||||||
user = User.get_by_atproto_did(repo)
|
user = User.get_by_atproto_did(repo)
|
||||||
if user:
|
if user:
|
||||||
logger.debug(f'Filling in {field} from {user}')
|
logger.debug(f'Filling in {field} from {user}')
|
||||||
user_as1 = (user.obj.as1 if user.obj and user.obj.as1
|
if user.obj and user.obj.as1:
|
||||||
else user.key.id())
|
obj[field] = {
|
||||||
obj.setdefault(field, user_as1)
|
**user.obj.as1,
|
||||||
|
'id': user.key.id(),
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
obj[field] = user.key.id()
|
||||||
|
|
||||||
elif self.mf2:
|
elif self.mf2:
|
||||||
obj = microformats2.json_to_object(self.mf2,
|
obj = microformats2.json_to_object(self.mf2,
|
||||||
|
|
|
@ -431,6 +431,7 @@ class ObjectTest(TestCase):
|
||||||
'objectType': 'activity',
|
'objectType': 'activity',
|
||||||
'verb': 'like',
|
'verb': 'like',
|
||||||
'id': 'at://did:plc:foo/co.ll/123',
|
'id': 'at://did:plc:foo/co.ll/123',
|
||||||
|
'actor': 'did:plc:foo',
|
||||||
'object': 'http://example.com/original/post',
|
'object': 'http://example.com/original/post',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,33 +440,29 @@ class ObjectTest(TestCase):
|
||||||
self.assert_equals(like_as1, obj.as1)
|
self.assert_equals(like_as1, obj.as1)
|
||||||
|
|
||||||
# ATProto user without Object
|
# ATProto user without Object
|
||||||
user = self.make_user(id='did:plc:foo', cls=ATProto)
|
user = ATProto(id='did:plc:foo')
|
||||||
obj = Object(id='at://did:plc:foo/co.ll/123', bsky=like_bsky)
|
user.put()
|
||||||
self.assertEqual({
|
self.assertEqual(like_as1, obj.as1)
|
||||||
**like_as1,
|
|
||||||
'actor': 'did:plc:foo',
|
|
||||||
}, obj.as1)
|
|
||||||
|
|
||||||
# ATProto user with Object
|
# ATProto user with Object
|
||||||
user.obj = self.store_object(id='fake:profile', our_as1={'foo': 'bar'})
|
user.obj = self.store_object(id='at://did:plc:foo/profile/self',
|
||||||
|
our_as1={'foo': 'bar'})
|
||||||
user.put()
|
user.put()
|
||||||
obj = Object(id='at://did:plc:foo/co.ll/123', bsky=like_bsky)
|
|
||||||
self.assertEqual({
|
self.assertEqual({
|
||||||
**like_as1,
|
**like_as1,
|
||||||
'actor': {
|
'actor': {
|
||||||
'id': 'fake:profile',
|
'id': 'did:plc:foo',
|
||||||
'foo': 'bar',
|
'foo': 'bar',
|
||||||
},
|
},
|
||||||
}, obj.as1)
|
}, obj.as1)
|
||||||
|
|
||||||
# Fake user, should prefer to ATProto user
|
# Fake user, should prefer to ATProto user
|
||||||
user.obj = self.store_object(id='fake:profile', our_as1={'baz': 'biff'})
|
user = self.make_user(id='fake:user', cls=Fake, atproto_did='did:plc:foo',
|
||||||
user.put()
|
obj_as1={'baz': 'biff'})
|
||||||
obj = Object(id='at://did:plc:foo/co.ll/123', bsky=like_bsky)
|
|
||||||
self.assertEqual({
|
self.assertEqual({
|
||||||
**like_as1,
|
**like_as1,
|
||||||
'actor': {
|
'actor': {
|
||||||
'id': 'fake:profile',
|
'id': 'fake:user',
|
||||||
'baz': 'biff',
|
'baz': 'biff',
|
||||||
},
|
},
|
||||||
}, obj.as1)
|
}, obj.as1)
|
||||||
|
|
Ładowanie…
Reference in New Issue