def create_comment(p_id): PostClass = get_post_class(request.path) data = get_json() text = data['text'] posts_logic.create_comment(PostClass, p_id, text) return make_ok(f'Comment for the {PostClass.__name__.lower()}' f' #{p_id} has been created'), 201
def get_post_comments(p_id): PostClass = get_post_class(request.path) args = request.args offset = args.get('offset') limit = args.get('limit') comments = posts_logic.get_post_comments(PostClass, p_id, offset, limit) return jsonify(comments)
def update_post(p_id): PostClass = get_post_class(request.path) data = get_json() # schemas.post_update.validate(data) if 'tags' in data.keys(): validate_tags(data['tags']) posts_logic.update(PostClass, p_id, data) return make_ok(f'{PostClass.__name__} #{p_id} has been updated')
def create_post(): PostClass = get_post_class(request.path) data = get_json() if PostClass == Question: schemas.question.validate(data) if data['closed'] is True and not current_user.has_access('expert'): abort(422, 'You cannot create closed questions') elif PostClass == Article: schemas.article.validate(data) validate_tags(data['tags']) p_id = posts_logic.create(PostClass, data) return make_ok(f'{PostClass.__name__} #{p_id} successfully created'), 201
def vote_post(p_id): PostClass = get_post_class(request.path) action = ('up' if request.path[request.path.rfind('/') + 1:] == 'toggle_upvote' else 'down') result = posts_logic.toggle_vote(PostClass, p_id, action) if result == 'deleted': message = ('Successfully deleted vote' f' for {PostClass.__name__.lower()} #{p_id}') else: message = (f'Successfully {action}voted' f' {PostClass.__name__.lower()} #{p_id}') return make_ok(message)
def get_posts(u_id=None): PostClass = get_post_class(request.path) args = request.args offset = args.get('offset') limit = args.get('limit') closed = args.get('closed') archived = args.get('archived') tags = args['tags'].split(',') if ('tags' in args) else None # todo: move to validation module if (archived and u_id != current_user.id and not current_user.has_access('moderator')): abort(403) posts = posts_logic.get_many(PostClass, u_id, closed, tags, offset, limit, archived) return jsonify(posts)
def increase_post_views(p_id): PostClass = get_post_class(request.path) posts_logic.increase_views(PostClass, p_id) return make_ok('Successfully increased' f' {PostClass.__name__.lower()}\'s #{p_id} views')
def unarchive_post(p_id): PostClass = get_post_class(request.path) posts_logic.unarchive(PostClass, p_id) return make_ok(f'{PostClass.__name__} #{p_id} has been unarchived')
def delete_post(p_id): PostClass = get_post_class(request.path) posts_logic.delete(PostClass, p_id) return make_ok(f'{PostClass.__name__} #{p_id} has been deleted')
def get_post(p_id): PostClass = get_post_class(request.path) post = posts_logic.get(PostClass, p_id) return jsonify(post)