def _do_update_from_json(
self, json, parse_def, ctx,
duplicate_handling=None, object_importer=None):
user_id = ctx.get_user_id()
json_user_id = json.get('user', None)
if json_user_id is None:
json_user_id = user_id
else:
json_user_id = User.get_database_id(json_user_id)
# Do not allow changing user
if self.user_id is not None and json_user_id != self.user_id:
raise HTTPBadRequest()
self.user_id = json_user_id
role_name = json.get("role", None)
if not (role_name or self.role_id):
role_name = R_PARTICIPANT
if role_name:
role = self.db.query(Role).filter_by(name=role_name).first()
if not role:
raise HTTPBadRequest("Invalid role name:"+role_name)
self.role = role
json_discussion_id = json.get('discussion', None)
if json_discussion_id:
from .discussion import Discussion
json_discussion_id = Discussion.get_database_id(json_discussion_id)
# Do not allow change of discussion
if self.discussion_id is not None \
and json_discussion_id != self.discussion_id:
raise HTTPBadRequest()
self.discussion_id = json_discussion_id
else:
if not self.discussion_id:
raise HTTPBadRequest()
return self
评论列表
文章目录