forked from mirrors/bookwyrm
Handle incomign update user activities
This commit is contained in:
parent
a86c874e29
commit
c0f51fa6aa
2 changed files with 45 additions and 1 deletions
|
@ -67,7 +67,7 @@ def shared_inbox(request):
|
||||||
'Like': handle_unfavorite,
|
'Like': handle_unfavorite,
|
||||||
},
|
},
|
||||||
'Update': {
|
'Update': {
|
||||||
'Person': None,# TODO: handle_update_user
|
'Person': handle_update_user,
|
||||||
'Document': handle_update_book,
|
'Document': handle_update_book,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -293,6 +293,20 @@ def handle_tag(activity):
|
||||||
status_builder.create_tag(user, book, activity['object']['name'])
|
status_builder.create_tag(user, book, activity['object']['name'])
|
||||||
|
|
||||||
|
|
||||||
|
@app.task
|
||||||
|
def handle_update_user(activity):
|
||||||
|
''' receive an updated user Person activity object '''
|
||||||
|
try:
|
||||||
|
user = models.User.objects.get(remote_id=activity['object']['id'])
|
||||||
|
except models.User.DoesNotExist:
|
||||||
|
# who is this person? who cares
|
||||||
|
return
|
||||||
|
activitypub.Person(
|
||||||
|
**activity['object']
|
||||||
|
).to_model(models.User, instance=user)
|
||||||
|
# model save() happens in the to_model function
|
||||||
|
|
||||||
|
|
||||||
@app.task
|
@app.task
|
||||||
def handle_update_book(activity):
|
def handle_update_book(activity):
|
||||||
''' a remote instance changed a book (Document) '''
|
''' a remote instance changed a book (Document) '''
|
||||||
|
|
30
bookwyrm/tests/incoming/test_update_user.py
Normal file
30
bookwyrm/tests/incoming/test_update_user.py
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import json
|
||||||
|
import pathlib
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from bookwyrm import models, incoming
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateUser(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.user = models.User.objects.create_user(
|
||||||
|
'mouse', 'mouse@mouse.com', 'mouseword',
|
||||||
|
remote_id='https://example.com/user/mouse',
|
||||||
|
local=False,
|
||||||
|
localname='mouse'
|
||||||
|
)
|
||||||
|
|
||||||
|
datafile = pathlib.Path(__file__).parent.joinpath(
|
||||||
|
'../data/ap_user.json'
|
||||||
|
)
|
||||||
|
self.user_data = json.loads(datafile.read_bytes())
|
||||||
|
|
||||||
|
def test_handle_update_user(self):
|
||||||
|
self.assertIsNone(self.user.name)
|
||||||
|
self.assertEqual(self.user.localname, 'mouse')
|
||||||
|
|
||||||
|
incoming.handle_update_user({'object': self.user_data})
|
||||||
|
self.user = models.User.objects.get(id=self.user.id)
|
||||||
|
|
||||||
|
self.assertEqual(self.user.name, 'MOUSE?? MOUSE!!')
|
||||||
|
self.assertEqual(self.user.localname, 'mouse')
|
Loading…
Reference in a new issue