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 """
return self.media_type.split(".")[-1]
def serialize(self, request):
def serialize(self, request, show_comments=True):
""" Unserialize MediaEntry to object """
author = self.get_uploader
url = request.urlgen(
@ -456,6 +456,17 @@ class MediaEntry(Base, MediaEntryMixin):
"objectType": self.objectType,
"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
class FileKeynames(Base):
@ -603,15 +614,15 @@ class MediaComment(Base, MediaCommentMixin):
lazy="dynamic",
cascade="all, delete-orphan"))
def serialize(self, request):
""" 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 = {
"objectType": "comment",
"content": self.content,
"inReplyTo": media.unserialize(request),
"author": self.get_author.unserialize(request)
"inReplyTo": media.serialize(request, show_comments=False),
"author": author.serialize(request)
}
return context

View File

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