def details(con, id, related): thread = dbConnector.select_query( con, 'SELECT date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts FROM thread USE INDEX (full_except_about) WHERE id = %s;', (id,) ) if len(thread) == 0: raise Exception('Thread not founded') thread = thread[0] thread = { 'date': str(thread[0]), 'forum': thread[1], 'id': thread[2], 'isClosed': bool(thread[3]), 'isDeleted': bool(thread[4]), 'message': thread[5], 'slug': thread[6], 'title': thread[7], 'user': thread[8], 'dislikes': thread[9], 'likes': thread[10], 'points': thread[11], 'posts': thread[12], } if "user" in related: thread["user"] = user.details(con, thread["user"]) if "forum" in related: thread["forum"] = forum.details(con=con, short_name=thread["forum"], related=[]) return thread
def list(con, required, optional, related): query = "SELECT date, dislikes, forum, id, isClosed, isDeleted, likes, message, points, posts, slug, title, user FROM thread WHERE " params = [] if 'forum' in required: query += "forum = %s USE INDEX (forum_full) " params.append(required["forum"][0]) # query += "forum = " + "\'" + str(required["forum"][0]) + "\'" else: query += "user = %s USE INDEX (user_full) " params.append(required["user"][0]) # query += "user = "******"\'" + str(required["user"][0]) + "\'" if 'since' in optional: params.append(optional["since"][0]) query += " AND date >= %s " if 'order' in optional: query += " ORDER BY date " + "".join(optional["order"]) if 'limit' in optional: query += " LIMIT " + "".join(optional["limit"]) try: threads = dbConnector.select_query(con, query, params) except Exception as e: print (e.message) response = [] if threads != (): for k in threads: k = { 'date': str(k[0]), # .strftime("%Y-%m-%d %H:%M:%S"), 'dislikes': k[1], 'forum': k[2], 'id': k[3], 'isClosed': bool(k[4]), 'isDeleted': bool(k[5]), 'likes': k[6], 'message': k[7], 'points': k[8], 'posts': k[9], 'slug': k[10], 'title': k[11], 'user': k[12] } if "user" in related: k["user"] = user.details(con, k["user"]) if "forum" in related: k["forum"] = forum.details(con=con, short_name=k["forum"], related=[]) response.append(k) return response
def details(con, details_id, related): post = post_query(con, details_id) if post is None: raise Exception("no post with id = " + details_id) if "user" in related: post["user"] = user.details(con, post["user"]) if "forum" in related: post["forum"] = forum.details(con, post["forum"], []) if "thread" in related: post["thread"] = thread.details(con, post["thread"], []) return post
def posts_list(con, entity, params, identifier, related=[]): query = "SELECT date, dislikes, forum, id, isApproved, isDeleted, isEdited, isHighlighted, isSpam, likes, message, " \ "parent, points, thread, user FROM post WHERE " + entity + " = " + '\'' + str(''.join(identifier)) + '\'' parameters = tuple() if "since" in params: query += " AND date >= %s" parameters += tuple(params["since"]) query += " ORDER BY date " + ''.join(params["order"]) if "limit" in params: query += " LIMIT " + ''.join(params["limit"]) parameters += tuple('') post_ids = dbConnector.select_query(con, query, parameters) post_list = [] for post in post_ids: pf = { 'date': str(post[0]), 'dislikes': post[1], 'forum': post[2], 'id': post[3], 'isApproved': bool(post[4]), 'isDeleted': bool(post[5]), 'isEdited': bool(post[6]), 'isHighlighted': bool(post[7]), 'isSpam': bool(post[8]), 'likes': post[9], 'message': post[10], 'parent': post[11], 'points': post[12], 'thread': post[13], 'user': post[14], } if "user" in related: pf["user"] = user.details(con, pf["user"]) if "forum" in related: pf["forum"] = forum.details(con, short_name=pf["forum"], related=[]) if "thread" in related: pf["thread"] = thread.details(con, id=pf["thread"], related=[]) post_list.append(pf) return post_list