def get(email): sql = "SELECT * FROM User where email=" + "'" + email + "'" data = sql_select(sql) data = data[0] sql = "SELECT follower FROM Follow where followee=" + "'" + email + "'" + 'and is_deleted=0' followers = sql_select(sql) followers = list(itertools.chain.from_iterable(followers)) sql = "SELECT followee FROM Follow where follower=" + "'" + email + "'" + 'and is_deleted=0' following = sql_select(sql) following = list(itertools.chain.from_iterable(following)) sql = "SELECT thread FROM Subscription where user='******' AND is_deleted=FALSE " % email subscriptions = sql_select(sql) subscriptions = list(itertools.chain.from_iterable(subscriptions)) params = {} params['email'] = data[0] params['username'] = data[2] params['name'] = data[3] params['isAnonymous'] = bool(data[4]) params['about'] = data[5] user = User(params) user.id = data[1] user.followers = followers user.following = following user.subscriptions = subscriptions return user
def listUsers(request): forum = request.GET.get('forum') since = request.GET.get('since_id') limit = request.GET.get('limit') order = request.GET.get('order') sql = "SELECT DISTINCT user,name from Post where Post.forum = '%s'" % forum if since is not None: sql += "and Post.user_id>=%s " % since if order is not None: if order == "asc": sql += "order by Post.name ASC " else: sql += "order by Post.name DESC " if limit is not None: sql += "limit %s" % limit sql = "SELECT User.email, User.id, User.username, User.name, User.is_anonymous, User.about" \ " from User join (%s) as t2 on User.email=t2.user " % sql if order is not None: if order == "asc": sql += "order by t2.name ASC " else: sql += "order by t2.name DESC " result = sql_select(sql) if result == (): resp = {"code": 0, "response": []} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json") users = [] for data in result: params = { 'email': data[0], 'username': data[2], 'name': data[3], 'isAnonymous': bool(data[4]), 'about': data[5], } user = User(params) user.id = data[1] sql = "SELECT follower FROM Follow where followee=" + "'" + user.email + "'" + 'and is_deleted=0' followers = sql_select(sql) followers = list(itertools.chain.from_iterable(followers)) sql = "SELECT followee FROM Follow where follower=" + "'" + user.email + "'" + 'and is_deleted=0' following = sql_select(sql) following = list(itertools.chain.from_iterable(following)) user.followers = followers user.following = following sql = "SELECT thread FROM Subscription where user='******' and is_deleted=FALSE" % user.email subscriptions = sql_select(sql) subscriptions = list(itertools.chain.from_iterable(subscriptions)) user.subscriptions = subscriptions users.append(user.serialize()) resp = {"code": 0, "response": users} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def get(id): sql = "SELECT * FROM Post where id=%s" % id data = sql_select(sql) data = data[0] params = {'user': data[1], 'thread': data[2], 'forum': data[3], 'date': data[4].strftime("%Y-%m-%d %H:%M:%S"), 'message': data[5], 'isApproved': data[6], 'isHighlighted': data[7], 'isEdited': data[8], 'isSpam': data[9], 'isDeleted': data[10], } post = Post(params) post.id = data[0] post.likes = data[11] post.dislikes = data[12] post.points = post.likes - post.dislikes if data[13] != Converter.from_dec_to_hex(int(post.id)): post.parent = Converter.from_hex_to_dec(data[13][-10:-5]) else: post.parent = None return post
def listFollowers(request): email = request.GET.get('user') since = request.GET.get('since_id') limit = request.GET.get('limit') order = request.GET.get('order') sql = "SELECT User.email, User.id, User.username, User.name, User.is_anonymous, User.about" \ " from Follow join User on Follow.follower=User.email where Follow.is_deleted != TRUE AND Follow.followee = '%s'" % email if since != None: sql += "and User.id>=%s " % since if order != None: if order == "asc": sql += "order by User.name ASC " else: sql += "order by User.name DESC " if limit != None: sql += "limit %s" % limit result = sql_select(sql) users = [] for data in result: params = { 'email': data[0], 'username': data[2], 'name': data[3], 'isAnonymous': bool(data[4]), 'about': data[5], } user = User(params) user.id = data[1] sql = "SELECT follower FROM Follow where followee=" + "'" + user.email + "'" + 'and is_deleted=0' followers = sql_select(sql) followers = list(itertools.chain.from_iterable(followers)) sql = "SELECT followee FROM Follow where follower=" + "'" + user.email + "'" + 'and is_deleted=0' following = sql_select(sql) following = list(itertools.chain.from_iterable(following)) user.followers = followers user.following = following sql = "SELECT thread FROM Subscription where user='******' AND is_deleted=FALSE " % user.email subscriptions = sql_select(sql) subscriptions = list(itertools.chain.from_iterable(subscriptions)) user.subscriptions = subscriptions users.append(user.serialize()) resp = {"code": 0, "response": users} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def get(short_name): sql = "SELECT * FROM Forum where short_name=" + "'" + short_name + "'" data = sql_select(sql) data = data[0] params = {} params["short_name"] = data[2] params["name"] = data[1] params["user"] = data[3] forum = Forum(params) forum.id = data[0] return forum
def restore(request): data = request.body.decode('utf-8') data = json.loads(data) thread = data['thread'] sql = "UPDATE Post set is_deleted=FALSE where thread=%s" % thread sql_update(sql) sql = "SELECT COUNT(*) FROM Post where thread=%s" % thread result = sql_select(sql, "one") count = result[0] sql = "UPDATE Thread set is_deleted=FALSE, posts=%d where id=%s" % (count, thread) sql_update(sql) resp = {"code": 0, "response": {"thread": thread}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def list(request): forum = request.GET.get("forum") thread = request.GET.get("thread") since = request.GET.get("since") limit = request.GET.get("limit") order = request.GET.get("order") sql = "SELECT * from Post where 1=1 " if forum != None: sql += "and forum='%s' " % forum elif thread != None: sql += "and thread='%s' " % thread if since != None: sql += "and date>'%s' " % since if order != None: if order == "asc": sql += "order by date ASC " else: sql += "order by date DESC " if limit != None: sql += "limit %s" % limit result = sql_select(sql) resultSet = [] for data in result: params = { "user": data[1], "thread": data[2], "forum": data[3], "date": data[4].strftime("%Y-%m-%d %H:%M:%S"), "message": data[5], "isApproved": data[6], "isHighlighted": data[7], "isEdited": data[8], "isSpam": data[9], "isDeleted": data[10], } post = Post(params) post.id = data[0] post.likes = data[11] post.dislikes = data[12] post.points = post.likes - post.dislikes post.parent = ( Converter.from_hex_to_dec(data[13][-10:-5]) if data[13] != Converter.from_dec_to_hex(int(post.id)) else None ) resultSet.append(post.serialize()) resp = {"code": 0, "response": resultSet} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def listThreads(request): forum = request.GET.get('forum') since = request.GET.get('since') limit = request.GET.get('limit') order = request.GET.get('order') related = request.GET.getlist('related') sql = "SELECT * from Thread " sql += "where forum='%s' " % forum if since is not None: sql += "and date>='%s' " % since if order is not None: if order == "asc": sql += "order by date ASC " else: sql += "order by date DESC " if limit is not None: sql += "limit %s" % limit result = sql_select(sql) if result == (): resp = {"code": 0, "response": []} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json") threads = [] if "forum" in related: forum = ForumManager.get(forum) for data in result: params = {'forum': data[1], 'user': data[2], 'title': data[3], 'message': data[4], 'slug': data[5], 'date': data[6].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[7], 'isDeleted': data[8]} thread = Thread(params) thread.id = data[0] thread.likes = data[9] thread.dislikes = data[10] thread.posts = data[11] thread.points = thread.likes - thread.dislikes serialized_thread = thread.serialize() if "user" in related: user = UserManager.get(thread.user) serialized_thread["user"] = user.serialize() if "forum" in related: serialized_thread["forum"] = forum.serialize() threads.append(serialized_thread) resp = {"code": 0, "response": threads} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def get(id): sql = "SELECT * from Thread where id=%s" % id data = sql_select(sql) data = data[0] params = {} params['forum'] = data[1] params['user'] = data[2] params['title'] = data[3] params['message'] = data[4] params['slug'] = data[5] params['date'] = data[6].strftime("%Y-%m-%d %H:%M:%S") params['isClosed'] = data[7] params['isDeleted'] = data[8] thread = Thread(params) thread.id = data[0] thread.likes = data[9] thread.dislikes = data[10] thread.posts = data[11] thread.points = thread.likes - thread.dislikes return thread
def listPosts(request): user = request.GET.get('user') since = request.GET.get('since') limit = request.GET.get('limit') order = request.GET.get('order') sql = "SELECT * from Post where 1=1 " sql += "and user='******' " % user if since != None: sql += "and date>'%s' " % since if order != None: if order == "asc": sql += "order by date ASC " else: sql += "order by date DESC " if limit != None: sql += "limit %s" % limit result = sql_select(sql) resultSet = [] for data in result: params = {'user': data[1], 'thread': data[2], 'forum': data[3], 'date': data[4].strftime("%Y-%m-%d %H:%M:%S"), 'message': data[5], 'isApproved': data[6], 'isHighlighted': data[7], 'isEdited': data[8], 'isSpam': data[9], 'isDeleted': data[10], } post = Post(params) post.id = data[0] post.likes = data[11] post.dislikes = data[12] post.points = post.likes - post.dislikes post.parent = Converter.from_hex_to_dec(data[13][-10:-5]) if data[13] != Converter.from_dec_to_hex( int(post.id)) else None resultSet.append(post.serialize()) resp = {"code": 0, "response": resultSet} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def list(request): user = request.GET.get('user') if user == None: forum = request.GET.get('forum') since = request.GET.get('since') limit = request.GET.get('limit') order = request.GET.get('order') sql = "SELECT * from Thread where 1=1 " if user != None: sql += "and user='******' " % user else: sql += "and forum='%s' " % forum if since != None: sql += "and date>'%s' " % since if order != None: if order == "asc": sql += "order by date ASC " else: sql += "order by date DESC " if limit != None: sql += "limit %s" % limit result = sql_select(sql) threads = [] for data in result: params = {'forum': data[1], 'user': data[2], 'title': data[3], 'message': data[4], 'slug': data[5], 'date': data[6].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[7], 'isDeleted': data[8]} thread = Thread(params) thread.id = data[0] thread.likes = data[9] thread.dislikes = data[10] thread.posts = data[11] thread.points = thread.likes - thread.dislikes threads.append(thread.serialize()) resp = {"code": 0, "response": threads} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def __init__(self, params): self.id = None self.date = params['date'] self.thread = params['thread'] self.message = params['message'] self.user = params['user'] self.forum = params['forum'] self.parent = None self.path = "" self.is_approved = False self.is_highlighted = False self.is_edited = False self.is_spam = False self.is_deleted = False self.likes = 0 self.dislikes = 0 self.points = 0 if 'parent' in params and params['parent'] != None: self.parent = params['parent'] sql = "SELECT path FROM Post where id=%s" % self.parent path = sql_select(sql, 'one') if path[0] is not None: self.path = str(path[0]) if 'isApproved' in params: self.is_approved = params['isApproved'] if 'isHighlighted' in params: self.is_highlighted = params['isHighlighted'] if 'isEdited' in params: self.is_edited = params['isEdited'] if 'isSpam' in params: self.is_spam = params['isSpam'] if 'isDeleted' in params: self.is_deleted = params['isDeleted']
def listPosts(request): forum = request.GET.get('forum') since = request.GET.get('since') limit = request.GET.get('limit') order = request.GET.get('order') related = request.GET.getlist('related') sql = "SELECT * from Post " if "thread" in related: sql += "join Thread on Post.thread=Thread.id " sql += "where Post.forum='%s' " % forum if since is not None: sql += "and Post.date>='%s' " % since if order is not None: if order == "asc": sql += "order by Post.date ASC " else: sql += "order by Post.date DESC " if limit is not None: sql += "limit %s" % limit result = sql_select(sql) if result == (): resp = {"code": 0, "response": []} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json") resultset = [] if "forum" in related: forum = ForumManager.get(forum) for data in result: params = {'user': data[1], 'thread': data[2], 'forum': data[3], 'date': data[4].strftime("%Y-%m-%d %H:%M:%S"), 'message': data[5], 'isApproved': data[6], 'isHighlighted': data[7], 'isEdited': data[8], 'isSpam': data[9], 'isDeleted': data[10], } post = Post(params) post.id = data[0] post.likes = data[11] post.dislikes = data[12] post.points = post.likes - post.dislikes post.parent = Converter.from_hex_to_dec(data[13][-10:-5]) if data[13] != Converter.from_dec_to_hex( int(post.id)) else None serialized_post = post.serialize() if "thread" in related: params = {'forum': data[17], 'user': data[18], 'title': data[19], 'message': data[20], 'slug': data[21], 'date': data[22].strftime("%Y-%m-%d %H:%M:%S"), 'isClosed': data[23], 'isDeleted': data[24]} thread = Thread(params) thread.id = data[16] thread.likes = data[25] thread.dislikes = data[26] thread.posts = data[27] thread.points = thread.likes - thread.dislikes serialized_post["thread"] = thread.serialize() if "user" in related: user = UserManager.get(post.user) serialized_post["user"] = user.serialize() if "forum" in related: serialized_post["forum"] = forum.serialize() resultset.append(serialized_post) resp = {"code": 0, "response": resultset} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")
def listPosts(request): thread = request.GET.get('thread') since = request.GET.get('since') limit = request.GET.get('limit') order = request.GET.get('order') if order == None: order = "desc" sort = request.GET.get('sort') if sort == None: sort = 'flat' if sort != None: if sort == "tree": sql = "SELECT * from Post where thread='%s' " % thread if since != None: sql += "and date>'%s' " % since if order == 'asc': sql += "order by path asc" if order == 'desc': sql += "order by left(path,5) desc, path asc" if limit != None: sql += " limit %s" % limit elif sort == "flat": sql = "SELECT * from Post where thread='%s' " % thread if since != None: sql += "and date>'%s' " % since sql += "order by date " + order if limit != None: sql += " limit %s" % limit elif sort == "parent_tree": sql = "SELECT DISTINCT left(path,5) as col from Post where thread='%s' " % thread if since != None: sql += "and date>'%s' " % since if order == 'asc': sql += "order by left(path,5) asc" if limit != None: sql += " limit %s" % limit sql = "SELECT * from POST JOIN ("+ sql + ") as t2 on t2.col=left(Post.path,5) where Post.thread='%s' order by Post.path asc" % thread elif order == 'desc': sql += "order by left(path,5) desc" if limit != None: sql += " limit %s" % limit sql = "SELECT * from POST JOIN ("+ sql + ") as t2 on t2.col=left(Post.path,5) where Post.thread='%s' order by left(Post.path,5) desc, path asc" % thread result = sql_select(sql) resultSet = [] for data in result: params = {'user': data[1], 'thread': data[2], 'forum': data[3], 'date': data[4].strftime("%Y-%m-%d %H:%M:%S"), 'message': data[5], 'isApproved': data[6], 'isHighlighted': data[7], 'isEdited': data[8], 'isSpam': data[9], 'isDeleted': data[10], } post = Post(params) post.id = data[0] post.likes = data[11] post.dislikes = data[12] post.points = post.likes - post.dislikes post.parent = Converter.from_hex_to_dec(data[13][-10:-5]) if data[13] != Converter.from_dec_to_hex( int(post.id)) else None resultSet.append(post.serialize()) resp = {"code": 0, "response": resultSet} resp = json.dumps(resp) return HttpResponse(resp, content_type="application/json")