aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJessica Tallon <xray7224@googlemail.com>2013-08-14 18:23:52 +0100
committerJessica Tallon <jessica@megworld.co.uk>2014-07-22 23:13:14 +0100
commita840d2a848743fe36fc800557de7bb7a6e693b57 (patch)
tree4251dee50716c75bd537f683da9ce21f9ca9715e
parentbdde87a4b3a584a2dde5803b1a069496aee73daf (diff)
downloadmediagoblin-a840d2a848743fe36fc800557de7bb7a6e693b57.tar.lz
mediagoblin-a840d2a848743fe36fc800557de7bb7a6e693b57.tar.xz
mediagoblin-a840d2a848743fe36fc800557de7bb7a6e693b57.zip
Adds comments for the MediaEntry api
-rw-r--r--mediagoblin/db/models.py21
-rw-r--r--mediagoblin/federation/views.py4
2 files changed, 18 insertions, 7 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index 404aaa94..6d6b2032 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -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
diff --git a/mediagoblin/federation/views.py b/mediagoblin/federation/views.py
index 3fe5b3b5..b3f63db5 100644
--- a/mediagoblin/federation/views.py
+++ b/mediagoblin/federation/views.py
@@ -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"]