diff options
Diffstat (limited to 'mediagoblin/federation/views.py')
-rw-r--r-- | mediagoblin/federation/views.py | 51 |
1 files changed, 16 insertions, 35 deletions
diff --git a/mediagoblin/federation/views.py b/mediagoblin/federation/views.py index c383b3ef..8db04f3a 100644 --- a/mediagoblin/federation/views.py +++ b/mediagoblin/federation/views.py @@ -55,8 +55,8 @@ def user(request): "nickname": user.username, "updated": user.created.isoformat(), "published": user.created.isoformat(), - "profile": user_profile - } + "profile": user_profile, + } return json_response(data) @@ -120,12 +120,8 @@ def feed(request): if obj.get("objectType", None) == "comment": # post a comment - media = int(data["object"]["inReplyTo"]["id"]) - comment = MediaComment( - media_entry=media, - author=request.user.id, - content=data["object"]["content"] - ) + comment = MediaComment(author=request.user.id) + comment.unserialize(data["object"]) comment.save() data = {"verb": "post", "object": comment.serialize(request)} return json_response(data) @@ -139,17 +135,9 @@ def feed(request): return json_response(error, status=404) media = media.first() - obj = data["object"] - - if "displayName" in obj: - media.title = obj["displayName"] - - if "content" in obj: - media.description = obj["content"] - - if "license" in obj: - media.license = obj["license"] - + if not media.unserialize(data["object"]): + error = {"error": "Invalid 'image' with id '{0}'".format(obj_id)} + return json_response(error, status=400) media.save() media.media_manager.api_add_to_feed(request, media) @@ -195,13 +183,14 @@ def feed(request): if comment is None: error = {"error": "No such 'comment' with id '{0}'.".format(obj_id)} return json_response(error, status=400) - comment = comment[0] - # TODO: refactor this out to update/setting method on MediaComment - if obj.get("content", None) is not None: - comment.content = obj["content"] + comment = comment[0] + if not comment.unserialize(data["object"]): + error = {"error": "Invalid 'comment' with id '{0}'".format(obj_id)} + return json_response(error, status=400) comment.save() + activity = { "verb": "update", "object": comment.serialize(request), @@ -215,19 +204,11 @@ def feed(request): return json_response(error, status=400) image = image[0] - - # TODO: refactor this out to update/setting method on MediaEntry - if obj.get("displayName", None) is not None: - image.title = obj["displayName"] - - if obj.get("content", None) is not None: - image.description = obj["content"] - - if obj.get("license", None) is not None: - # I think we might need some validation here - image.license = obj["license"] - + if not image.unserialize(obj): + error = {"error": "Invalid 'image' with id '{0}'".format(obj_id)} + return json_response(error, status=400) image.save() + activity = { "verb": "update", "object": image.serialize(request), |