diff options
Diffstat (limited to 'mediagoblin/db/models.py')
-rw-r--r-- | mediagoblin/db/models.py | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index 440aa682..fba58ca8 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -803,31 +803,25 @@ class MediaComment(Base, MediaCommentMixin): def unserialize(self, data, request): """ Takes API objects and unserializes on existing comment """ - # Do initial checks to verify the object is correct - required_attributes = ["content", "inReplyTo"] - for attr in required_attributes: - if attr not in data: + # Handle changing the reply ID + if "inReplyTo" in data: + # Validate that the ID is correct + try: + media_id = int(extract_url_arguments( + url=data["inReplyTo"]["id"], + urlmap=request.app.url_map + )["id"]) + except ValueError: return False - # Validate inReplyTo has ID - if "id" not in data["inReplyTo"]: - return False + media = MediaEntry.query.filter_by(id=media_id).first() + if media is None: + return False - # Validate that the ID is correct - try: - media_id = int(extract_url_arguments( - url=data["inReplyTo"]["id"], - urlmap=request.app.url_map - )["id"]) - except ValueError: - return False - - media = MediaEntry.query.filter_by(id=media_id).first() - if media is None: - return False - - self.media_entry = media.id - self.content = data["content"] + self.media_entry = media.id + + if "content" in data: + self.content = data["content"] if "location" in data: Location.create(data["location"], self) |