Add unseralize for API objects
This commit is contained in:
parent
0679545f19
commit
d8f55f2b41
@ -76,7 +76,7 @@ case "$selfname" in
|
||||
lazycelery.sh)
|
||||
MEDIAGOBLIN_CONFIG="${ini_file}" \
|
||||
CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery \
|
||||
$starter "$@"
|
||||
$starter -B "$@"
|
||||
;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
|
@ -499,6 +499,19 @@ class MediaEntry(Base, MediaEntryMixin):
|
||||
|
||||
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.
|
||||
@ -658,6 +671,24 @@ class MediaComment(Base, MediaCommentMixin):
|
||||
|
||||
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.
|
||||
|
||||
|
@ -55,8 +55,8 @@ def user(request):
|
||||
"nickname": user.username,
|
||||
"updated": user.created.isoformat(),
|
||||
"published": user.created.isoformat(),
|
||||
"profile": user_profile
|
||||
}
|
||||
"profile": user_profile,
|
||||
}
|
||||
|
||||
return json_response(data)
|
||||
|
||||
@ -120,12 +120,8 @@ def feed(request):
|
||||
|
||||
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)
|
||||
@ -139,17 +135,9 @@ def feed(request):
|
||||
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)
|
||||
|
||||
@ -195,13 +183,14 @@ def feed(request):
|
||||
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),
|
||||
@ -215,19 +204,11 @@ def feed(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),
|
||||
|
@ -62,7 +62,7 @@ def get_celery_settings_dict(app_config, global_config,
|
||||
# Garbage collection periodic task
|
||||
frequency = app_config.get('garbage_collection', 60)
|
||||
if frequency:
|
||||
frequency = int(app_config['garbage_collection'])
|
||||
frequency = int(frequency)
|
||||
celery_settings['CELERYBEAT_SCHEDULE'] = {
|
||||
'garbage-collection': {
|
||||
'task': 'mediagoblin.federation.task.garbage_collection',
|
||||
|
Loading…
x
Reference in New Issue
Block a user