def vote(): requestBody = request.json postID = requestBody.get('post') voteValue = requestBody.get('vote') if voteValue == 1: db.execute( """UPDATE Post SET likes = likes + 1, points = points + 1 WHERE post = %(post)s;""", {'post': postID}, True) elif voteValue == -1: db.execute( """UPDATE Post SET dislikes = dislikes + 1, points = points - 1 WHERE post = %(post)s;""", {'post': postID}, True) else: return json.dumps({ "code": 3, "response": "Wrong 'vote' value'" }, indent=4) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)
def restore(): requestBody = request.json postID = requestBody.get('post') post = get_post_by_id(postID) threadID = post['thread'] restore_post(postID) inc_posts_for_thread(threadID) return json.dumps({"code": 0, "response": {"post": postID}}, indent=4)
def create(): requestBody = request.json # Required date = requestBody.get('date') thread = requestBody.get('thread') message = requestBody.get('message') user = requestBody.get('user') forum = requestBody.get('forum') # Optional parent = requestBody.get('parent', None) if requestBody.get('isApproved', False): isApproved = 1 else: isApproved = 0 if requestBody.get('isHighlighted', False): isHighlighted = 1 else: isHighlighted = 0 if requestBody.get('isEdited', False): isEdited = 1 else: isEdited = 0 if requestBody.get('isSpam', False): isSpam = 1 else: isSpam = 0 if requestBody.get('isDeleted', False): isDeleted = 1 else: isDeleted = 0 sql = """INSERT INTO Post (user, thread, forum, message, parent, date, \ isSpam, isEdited, isDeleted, isHighlighted, isApproved) VALUES \ (%(user)s, %(thread)s, %(forum)s, %(message)s, %(parent)s, %(date)s, \ %(isSpam)s, %(isEdited)s, %(isDeleted)s, %(isHighlighted)s, %(isApproved)s);""" args = {'user': user, 'thread': thread, 'forum': forum, 'message': message, 'parent': parent, 'date': date, 'isSpam': isSpam, 'isEdited': isEdited, 'isDeleted': isDeleted, 'isHighlighted': isHighlighted, 'isApproved': isApproved} postID = db.execute(sql, args, True) post = get_post_by_id(postID) inc_posts_for_thread(thread) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)
def update(): requestBody = request.json postID = requestBody.get('post') message = try_encode(requestBody.get('message')) args = {'message': message, 'post': postID} db.execute("""UPDATE Post SET message = %(message)s WHERE post = %(post)s;""", args, True) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)
def update(): requestBody = request.json postID = requestBody.get('post') message = try_encode(requestBody.get('message')) args = {'message': message, 'post': postID} db.execute( """UPDATE Post SET message = %(message)s WHERE post = %(post)s;""", args, True) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)
def details(): qs = get_json(request) postID = qs.get('post') if not postID: return json.dumps({"code": 2, "response": "No 'post' key"}, indent=4) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) relatedValues = list() qsRelated = qs.get('related') if type(qsRelated) is list: relatedValues.extend(qsRelated) elif type(qsRelated) is str: relatedValues.append(qsRelated) threadRelated = False forumRelated = False userRelated = False for relatedValue in relatedValues: if relatedValue == 'forum': forumRelated = True elif relatedValue == 'user': userRelated = True elif relatedValue == 'thread': threadRelated = True else: return json.dumps({ "code": 3, "response": "Wrong related value" }, indent=4) if threadRelated: post['thread'] = get_thread_by_id(post['thread']) if forumRelated: post['forum'] = get_forum_dict(short_name=post['forum']) if userRelated: post['user'] = get_user_dict(post['user']) return json.dumps({"code": 0, "response": post}, indent=4)
def vote(): requestBody = request.json postID = requestBody.get('post') voteValue = requestBody.get('vote') if voteValue == 1: db.execute("""UPDATE Post SET likes = likes + 1, points = points + 1 WHERE post = %(post)s;""", {'post': postID}, True) elif voteValue == -1: db.execute("""UPDATE Post SET dislikes = dislikes + 1, points = points - 1 WHERE post = %(post)s;""", {'post': postID}, True) else: return json.dumps({"code": 3, "response": "Wrong 'vote' value'"}, indent=4) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)
def details(): qs = get_json(request) postID = qs.get('post') if not postID: return json.dumps({"code": 2, "response": "No 'post' key"}, indent=4) post = get_post_by_id(postID) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) relatedValues = list() qsRelated = qs.get('related') if type(qsRelated) is list: relatedValues.extend(qsRelated) elif type(qsRelated) is str: relatedValues.append(qsRelated) threadRelated = False forumRelated = False userRelated = False for relatedValue in relatedValues: if relatedValue == 'forum': forumRelated = True elif relatedValue == 'user': userRelated = True elif relatedValue == 'thread': threadRelated = True else: return json.dumps({"code": 3, "response": "Wrong related value"}, indent=4) if threadRelated: post['thread'] = get_thread_by_id(post['thread']) if forumRelated: post['forum'] = get_forum_dict(short_name=post['forum']) if userRelated: post['user'] = get_user_dict(post['user']) return json.dumps({"code": 0, "response": post}, indent=4)
def create(): requestBody = request.json # Required date = requestBody.get('date') thread = requestBody.get('thread') message = requestBody.get('message') user = requestBody.get('user') forum = requestBody.get('forum') # Optional parent = requestBody.get('parent', None) if requestBody.get('isApproved', False): isApproved = 1 else: isApproved = 0 if requestBody.get('isHighlighted', False): isHighlighted = 1 else: isHighlighted = 0 if requestBody.get('isEdited', False): isEdited = 1 else: isEdited = 0 if requestBody.get('isSpam', False): isSpam = 1 else: isSpam = 0 if requestBody.get('isDeleted', False): isDeleted = 1 else: isDeleted = 0 sql = """INSERT INTO Post (user, thread, forum, message, parent, date, \ isSpam, isEdited, isDeleted, isHighlighted, isApproved) VALUES \ (%(user)s, %(thread)s, %(forum)s, %(message)s, %(parent)s, %(date)s, \ %(isSpam)s, %(isEdited)s, %(isDeleted)s, %(isHighlighted)s, %(isApproved)s);""" args = { 'user': user, 'thread': thread, 'forum': forum, 'message': message, 'parent': parent, 'date': date, 'isSpam': isSpam, 'isEdited': isEdited, 'isDeleted': isDeleted, 'isHighlighted': isHighlighted, 'isApproved': isApproved } postID = db.execute(sql, args, True) post = get_post_by_id(postID) inc_posts_for_thread(thread) if not post: return json.dumps({"code": 1, "response": "Empty set"}, indent=4) return json.dumps({"code": 0, "response": post}, indent=4)