return context
+ def unserialize(self, data):
+ """ Takes API objects and unserializes on existing MediaEntry """
+ if "displayName" in data:
+ self.title = data["displayName"]
+
+ if "content" in data:
+ self.description = data["content"]
+
+ if "license" in data:
+ self.license = data["license"]
+
+ return True
+
class FileKeynames(Base):
"""
keywords for various places.
return context
+ def unserialize(self, data):
+ """ 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:
+ return False
+
+ # Validate inReplyTo has ID
+ if "id" not in data["inReplyTo"]:
+ return False
+
+ self.media_entry = data["inReplyTo"]["id"]
+ self.content = data["content"]
+ return True
+
+
+
class Collection(Base, CollectionMixin):
"""An 'album' or 'set' of media by a user.
"nickname": user.username,
"updated": user.created.isoformat(),
"published": user.created.isoformat(),
- "profile": user_profile
- }
+ "profile": user_profile,
+ }
return json_response(data)
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)
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)
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),
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),