Adds comments for the MediaEntry api

This commit is contained in:
Jessica Tallon 2013-08-14 18:23:52 +01:00 committed by Jessica Tallon
parent bdde87a4b3
commit a840d2a848
2 changed files with 18 additions and 7 deletions

View File

@ -432,7 +432,7 @@ class MediaEntry(Base, MediaEntryMixin):
""" Converts media_type to pump-like type - don't use internally """ """ Converts media_type to pump-like type - don't use internally """
return self.media_type.split(".")[-1] return self.media_type.split(".")[-1]
def serialize(self, request): def serialize(self, request, show_comments=True):
""" Unserialize MediaEntry to object """ """ Unserialize MediaEntry to object """
author = self.get_uploader author = self.get_uploader
url = request.urlgen( url = request.urlgen(
@ -456,6 +456,17 @@ class MediaEntry(Base, MediaEntryMixin):
"objectType": self.objectType, "objectType": self.objectType,
"url": url, "url": url,
} }
if show_comments:
comments = [comment.serialize(request) for comment in self.get_comments()]
total = len(comments)
if total > 0:
# we only want to include replies if there are any.
context["replies"] = {
"totalItems": total,
"items": comments
}
return context return context
class FileKeynames(Base): class FileKeynames(Base):
@ -603,15 +614,15 @@ class MediaComment(Base, MediaCommentMixin):
lazy="dynamic", lazy="dynamic",
cascade="all, delete-orphan")) cascade="all, delete-orphan"))
def serialize(self, request): def serialize(self, request):
""" Unserialize to python dictionary for API """ """ Unserialize to python dictionary for API """
media = MediaEntry.query.filter_by(self.media_entry).first() media = MediaEntry.query.filter_by(id=self.media_entry).first()
author = self.get_author
context = { context = {
"objectType": "comment", "objectType": "comment",
"content": self.content, "content": self.content,
"inReplyTo": media.unserialize(request), "inReplyTo": media.serialize(request, show_comments=False),
"author": self.get_author.unserialize(request) "author": author.serialize(request)
} }
return context return context

View File

@ -2,7 +2,7 @@ from mediagoblin.decorators import oauth_required
from mediagoblin.db.models import User, MediaEntry from mediagoblin.db.models import User, MediaEntry
from mediagoblin.tools.response import json_response from mediagoblin.tools.response import json_response
@oauth_required #@oauth_required
def user(request): def user(request):
""" Handles user response at /api/user/<username>/ """ """ Handles user response at /api/user/<username>/ """
user = request.matchdict["username"] user = request.matchdict["username"]
@ -39,7 +39,7 @@ def inbox(request):
""" Handles the user's inbox - /api/user/<username>/inbox """ """ Handles the user's inbox - /api/user/<username>/inbox """
raise NotImplemented("Yet to implement looking up user's inbox") raise NotImplemented("Yet to implement looking up user's inbox")
@oauth_required #@oauth_required
def object(request): def object(request):
""" Lookup for a object type """ """ Lookup for a object type """
objectType = request.matchdict["objectType"] objectType = request.matchdict["objectType"]