Changes serialization to .serialize method on object - MediaEntry
This commit is contained in:
parent
5a2056f738
commit
bdde87a4b3
@ -427,6 +427,37 @@ class MediaEntry(Base, MediaEntryMixin):
|
|||||||
# pass through commit=False/True in kwargs
|
# pass through commit=False/True in kwargs
|
||||||
super(MediaEntry, self).delete(**kwargs)
|
super(MediaEntry, self).delete(**kwargs)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def objectType(self):
|
||||||
|
""" Converts media_type to pump-like type - don't use internally """
|
||||||
|
return self.media_type.split(".")[-1]
|
||||||
|
|
||||||
|
def serialize(self, request):
|
||||||
|
""" Unserialize MediaEntry to object """
|
||||||
|
author = self.get_uploader
|
||||||
|
url = request.urlgen(
|
||||||
|
"mediagoblin.user_pages.media_home",
|
||||||
|
user=author.username,
|
||||||
|
media=self.slug,
|
||||||
|
qualified=True
|
||||||
|
)
|
||||||
|
|
||||||
|
id = request.urlgen(
|
||||||
|
"mediagoblin.federation.object",
|
||||||
|
objectType=self.objectType,
|
||||||
|
uuid=self.uuid,
|
||||||
|
qualified=True
|
||||||
|
)
|
||||||
|
|
||||||
|
context = {
|
||||||
|
"id": id,
|
||||||
|
"author": author.serialize(request),
|
||||||
|
"displayName": self.title,
|
||||||
|
"objectType": self.objectType,
|
||||||
|
"url": url,
|
||||||
|
}
|
||||||
|
return context
|
||||||
|
|
||||||
class FileKeynames(Base):
|
class FileKeynames(Base):
|
||||||
"""
|
"""
|
||||||
keywords for various places.
|
keywords for various places.
|
||||||
@ -573,6 +604,18 @@ class MediaComment(Base, MediaCommentMixin):
|
|||||||
cascade="all, delete-orphan"))
|
cascade="all, delete-orphan"))
|
||||||
|
|
||||||
|
|
||||||
|
def serialize(self, request):
|
||||||
|
""" Unserialize to python dictionary for API """
|
||||||
|
media = MediaEntry.query.filter_by(self.media_entry).first()
|
||||||
|
context = {
|
||||||
|
"objectType": "comment",
|
||||||
|
"content": self.content,
|
||||||
|
"inReplyTo": media.unserialize(request),
|
||||||
|
"author": self.get_author.unserialize(request)
|
||||||
|
}
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
class Collection(Base, CollectionMixin):
|
class Collection(Base, CollectionMixin):
|
||||||
"""An 'album' or 'set' of media by a user.
|
"""An 'album' or 'set' of media by a user.
|
||||||
|
|
||||||
|
@ -39,25 +39,6 @@ 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")
|
||||||
|
|
||||||
def image_object(request, media):
|
|
||||||
""" Return image object - /api/image/<uuid> """
|
|
||||||
author = media.get_uploader
|
|
||||||
url = request.urlgen(
|
|
||||||
"mediagoblin.user_pages.media_home",
|
|
||||||
user=author.username,
|
|
||||||
media=media.slug,
|
|
||||||
qualified=True
|
|
||||||
)
|
|
||||||
|
|
||||||
context = {
|
|
||||||
"author": author.serialize(request),
|
|
||||||
"displayName": media.title,
|
|
||||||
"objectType": "image",
|
|
||||||
"url": url,
|
|
||||||
}
|
|
||||||
|
|
||||||
return json_response(context)
|
|
||||||
|
|
||||||
@oauth_required
|
@oauth_required
|
||||||
def object(request):
|
def object(request):
|
||||||
""" Lookup for a object type """
|
""" Lookup for a object type """
|
||||||
@ -74,5 +55,4 @@ def object(request):
|
|||||||
error = "Can't find a {0} with ID = {1}".format(objectType, uuid)
|
error = "Can't find a {0} with ID = {1}".format(objectType, uuid)
|
||||||
return json_response({"error": error}, status=404)
|
return json_response({"error": error}, status=404)
|
||||||
|
|
||||||
if objectType == "image":
|
return json_response(media.serialize(request))
|
||||||
return image_object(request, media)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user