def mutate(root, args, context, info): post_cls = models.SynthesisPost synthesis_post_id = utils.get_primary_id(args.get('id')) synthesis_post = post_cls.get(synthesis_post_id) discussion = models.Discussion.get(context.matchdict['discussion_id']) require_instance_permission(CrudPermissions.UPDATE, synthesis_post, context) with post_cls.default_db.no_autoflush as db: for langstring_field in ('body', 'subject', 'introduction', 'conclusion'): field_entries = args.get(langstring_field + '_entries') update_langstring_from_input_entries( synthesis_post.publishes_synthesis, langstring_field, field_entries) publication_state = models.PublicationStates.from_string( args['publication_state']) synthesis_post.publication_state = publication_state # add uploaded image as an attachment to the resource image = args.get('image') if image is not None: utils.update_attachment(discussion, models.PostAttachment, image, synthesis_post.attachments, models.AttachmentPurpose.IMAGE.value, db, context) db.flush() return UpdateSynthesis(synthesis_post=synthesis_post)
def resolve_vote_session(self, args, context, info): discussion_id = context.matchdict['discussion_id'] discussion = models.Discussion.get(discussion_id) idea_id = args.get('idea_id') idea_id = int(Node.from_global_id(idea_id)[1]) vote_session = discussion.db.query(models.VoteSession).filter(models.VoteSession.idea_id == idea_id).first() if vote_session is not None: require_instance_permission(CrudPermissions.READ, vote_session, context) return vote_session
def resolve_vote_session(self, args, context, info): discussion_phase_id = args.get('discussion_phase_id') discussion_phase = models.DiscussionPhase.get(discussion_phase_id) require_instance_permission(CrudPermissions.READ, discussion_phase, context) vote_session = discussion_phase.vote_session if vote_session is not None: require_instance_permission(CrudPermissions.READ, vote_session, context) return vote_session
def mutate(root, args, context, info): synthesis_post_id = utils.get_primary_id(args.get('id')) synthesis_post = models.SynthesisPost.get(synthesis_post_id) require_instance_permission(CrudPermissions.DELETE, synthesis_post, context) synthesis_post.db.delete(synthesis_post) synthesis_post.db.flush() return DeleteSynthesis(success=True)