def listUsers(request): forum = getSqlVariable(request.GET.get("forum")) since = request.GET.get("since_id") limit = request.GET.get("limit") order = request.GET.get("order") if since: since = "AND users_id >= '%(since)s'" % {"since": since} else: since = "" if limit: limit = "LIMIT %(limit)s" % {"limit": limit} else: limit = "" if order: order = "ORDER BY users_name %(order)s" % {"order": order} else: order = "" sql = "SELECT DISTINCT users_email, users_name FROM posts WHERE forums_short_name=%(forum)s %(since)s %(order)s %(limit)s;" % { "forum": forum, "since": since, "order": order, "limit": limit } cursor = connection.cursor() cursor.execute(sql) emails = cursor.fetchall() users = [] for email in emails: users.append(getuser(getSqlVariable(email[0]))) resp = {"code": 0, "response": users} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def details(request): try: post = getPost(request.GET.get("post")) related = request.GET.getlist("related") for relation in related: if relation == "user": post.update({ "user": getuser(getSqlVariable(post["user"])) }) elif relation == "forum": post.update({ "forum": getforum(post["forum"]) }) elif relation == "thread": post.update({ "thread": getThread(post["thread"]) }) pass resp = { "code": 0, "response": post } except: resp = { "code": 1, "response": {} } resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def update(request): data = request.body.decode('utf-8') data = json.loads(data) cursor = connection.cursor() message = getSqlVariable(data["message"]) slug = getSqlVariable(data["slug"]) id = getSqlVariable(data["thread"]) sql = "UPDATE threads SET message=%(message)s, slug=%(slug)s WHERE id=%(id)s" % { "message": message, "slug": slug, "id": id } cursor.execute(sql) resp = {"code": 0, "response": getThread(id)} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def create(request): data = request.body.decode('utf-8') data = json.loads(data) username = getSqlVariable(data['username']) about = getSqlVariable(data['about']) name = getSqlVariable(data['name']) email = getSqlVariable(data['email']) isAnonymous = True if data.keys().count('isAnonymous') > 0: isAnonymous = data['isAnonymous'] if isAnonymous: isAnonymous = 1 else: isAnonymous = 0 isAnonymous = getSqlVariable(isAnonymous) sql = "INSERT INTO users (username, about, name, email, isAnonymous)" \ " VALUES(%(username)s, %(about)s, %(name)s, %(email)s, %(isAnonymous)s);"\ %{"username": username, "about": about, "name": name, "email": email, "isAnonymous": isAnonymous} try: cursor = connection.cursor() cursor.execute(sql) sql = "SELECT id FROM users WHERE email=%(email)s;" % {"email": email} cursor.execute(sql) id = cursor.fetchone()[0] resp = { "code": 0, "response": { "id": id, "username": username, "about": about, "name": name, "email": email, "isAnonymous": isAnonymous } } except IntegrityError: resp = {"code": 5, "response": {}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def details(request): email = getSqlVariable(request.GET.get('user')) try: user = getuser(email) resp = {"code": 0, "response": user} except: resp = {"code": 3, "response": {}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def updateProfile(request): data = request.body.decode('utf-8') data = json.loads(data) about = getSqlVariable(data["about"]) emial = getSqlVariable(data["user"]) name = getSqlVariable(data["name"]) cursor = connection.cursor() sql = "UPDATE users SET about=%(about)s, name=%(name)s WHERE email=%(email)s" % { "about": about, "name": name, "email": emial } cursor.execute(sql) sql = "UPDATE posts SET users_name=%(name)s WHERE users_email=%(email)s;" % { "name": name, "email": emial } cursor.execute(sql) resp = {"code": 0, "response": getuser(emial)} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def listPosts(request): user = getSqlVariable(request.GET.get("user")) since = request.GET.get("since") limit = request.GET.get("limit") order = request.GET.get("order") if since: since = "AND date >= '%(since)s'" % {"since": since} else: since = "" if limit: limit = "LIMIT %(limit)s" % {"limit": limit} else: limit = "" if order: order = "ORDER BY date %(order)s" % {"order": order} else: order = "" cursor = connection.cursor() sql = "SELECT * FROM posts WHERE users_email=%(user)s %(since)s %(order)s %(limit)s;" % { "user": user, "since": since, "order": order, "limit": limit } cursor.execute(sql) results = cursor.fetchall() resp = [] for result in results: post = { "id": result[0], "message": result[1], "date": result[2].isoformat(sep=' '), "likes": result[3], "dislikes": result[4], "points": result[5], "isApproved": True if result[6] == 1 else False, "isHighlighted": True if result[7] == 1 else False, "isEdited": True if result[8] == 1 else False, "isSpam": True if result[9] == 1 else False, "isDeleted": True if result[10] == 1 else False, "parent": result[11], "user": result[12], "thread": result[13], "forum": result[14] } resp.append(post) resp = {"code": 0, "response": resp} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def unfollow(request): data = request.body.decode('utf-8') data = json.loads(data) follower = data["follower"] followee = data["followee"] cursor = connection.cursor() sql = "DELETE FROM followers WHERE users_email_follower='%(follower)s' AND users_email_following='%(followee)s'" % { "follower": follower, "followee": followee } cursor.execute(sql) resp = {"code": 0, "response": getuser(getSqlVariable(follower))} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def follow(request): data = request.body.decode('utf-8') data = json.loads(data) follower = data["follower"] followee = data["followee"] cursor = connection.cursor() sql = "INSERT INTO followers (users_email_follower, users_email_following) VALUES ('%(follower)s', '%(followee)s');" % { "follower": follower, "followee": followee } cursor.execute(sql) resp = {"code": 0, "response": getuser(getSqlVariable(follower))} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def unsubscribe(request): data = request.body.decode('utf-8') data = json.loads(data) id = data["thread"] user = getSqlVariable(data["user"]) cursor = connection.cursor() sql = "DELETE FROM subscriptions WHERE threads_id=%(thread)s AND users_email=%(user)s;" % { "thread": id, "user": user } cursor.execute(sql) resp = {"code": 0, "response": {"thread": id, "user": user}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def listFollowing(request): user = getSqlVariable(request.GET.get("user")) since = request.GET.get("since_id") limit = request.GET.get("limit") order = request.GET.get("order") if since: since = "AND users.id >= '%(since)s'" % {"since": since} else: since = "" if limit: limit = "LIMIT %(limit)s" % {"limit": limit} else: limit = "" if order: order = "ORDER BY users.name %(order)s" % {"order": order} else: order = "" sql = "SELECT users.email FROM users JOIN followers ON users.email = followers.users_email_following" \ " WHERE followers.users_email_follower = %(user)s %(since)s %(order)s %(limit)s" %{ "user": user, "since": since, "order": order, "limit": limit } cursor = connection.cursor() cursor.execute(sql) emails = cursor.fetchall() users = [] for email in emails: users.append(getuser(getSqlVariable(email[0]))) resp = {"code": 0, "response": users} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def details(request): try: thread = getThread(request.GET.get("thread")) related = request.GET.getlist("related") for relation in related: if relation == "user": thread.update( {"user": getuser(getSqlVariable(thread["user"]))}) elif relation == "forum": thread.update({"forum": getforum(thread["forum"])}) else: raise resp = {"code": 0, "response": thread} except: resp = {"code": 3, "response": {}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def subscribe(request): data = request.body.decode('utf-8') data = json.loads(data) id = data["thread"] user = getSqlVariable(data["user"]) cursor = connection.cursor() sql = "INSERT INTO subscriptions (threads_id, users_email) VALUES(%(thread)s, %(user)s);" % { "thread": id, "user": user } try: cursor.execute(sql) resp = {"code": 0, "response": {"thread": id, "user": user}} except IntegrityError: resp = {"code": 5, "response": {}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def create(request): data = request.body.decode('utf-8') data = json.loads(data) forum = getSqlVariable(data["forum"]) title = getSqlVariable(data["title"]) isClosed = 1 if data["isClosed"] else 0 user = getSqlVariable(data["user"]) date = getSqlVariable(data["date"]) message = getSqlVariable(data["message"]) slug = getSqlVariable(data["slug"]) isDeleted = False if "isDeleted" in data.keys(): isDeleted = data["isDeleted"] isDeleted = 1 if isDeleted else 0 sql = "INSERT INTO threads (forums_short_name, title, isClosed, users_email, date, message, slug, isDeleted)" \ " VALUES(%(forum)s, %(title)s, %(isClosed)s, %(user)s, %(date)s, %(message)s, %(slug)s, %(isDeleted)s);" \ % { "forum": forum, "title": title, "isClosed": isClosed, "user": user, "date": date, "message": message, "slug": slug, "isDeleted": isDeleted } try: cursor = connection.cursor() cursor.execute(sql) id = cursor.lastrowid resp = { "code": 0, "response": { "id": id, "title": title, "isClosed": isClosed, "user": user, "date": date, "message": message, "slug": slug, "isDeleted": isDeleted } } except IntegrityError: resp = {"code": 3, "response": {}} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def list(request): try: forum = request.GET.get("forum") thread = request.GET.get("thread") except: if "forum" in request.keys(): forum = request["forum"] thread = None if "thread" in request.keys(): thread = request["thread"] forum = None if forum: source = "forums_short_name" value = forum if thread: source = "threads_id" value = thread try: since = request.GET.get("since") limit = request.GET.get("limit") order = request.GET.get("order") except: since = request.get("since") limit = request.get("limit") order = request.get("order") if since: since = "AND date >= '%(since)s'" % {"since": since} else: since = "" if limit: limit = "LIMIT %(limit)s" % {"limit": limit} else: limit = "" if order: order = "ORDER BY date %(order)s" % {"order": order} else: order = "" sql = "SELECT * FROM posts WHERE %(source)s = '%(value)s' %(since)s %(order)s %(limit)s;" % { "source": source, "value": value, "since": since, "order": order, "limit": limit } cursor = connection.cursor() cursor.execute(sql) results = cursor.fetchall() resp = [] try: related = request.GET.getlist("related") except: related = [] for result in results: post = { "id": result[0], "message": result[1], "date": result[2].isoformat(sep = ' '), "likes": result[3], "dislikes": result[4], "points": result[5], "isApproved": True if result[6] == 1 else False, "isHighlighted": True if result[7] == 1 else False, "isEdited": True if result[8] == 1 else False, "isSpam": True if result[9] == 1 else False, "isDeleted": True if result[10] == 1 else False, "parent": result[11], "user": result[12], "thread": result[13], "forum": result[14] } for relation in related: if relation == "thread": post.update({ "thread": getThread(post["thread"]) }) elif relation == "user": post.update({ "user": getuser(getSqlVariable(post["user"])) }) elif relation == "forum": post.update({ "forum": getforum(post["forum"]) }) resp.append(post) resp = { "code": 0, "response": resp } resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def create(request): data = request.body.decode('utf-8') data = json.loads(data) date = getSqlVariable(data["date"]) thread = getSqlVariable(data["thread"]) message = getSqlVariable(data["message"]) user = getSqlVariable(data["user"]) forum = getSqlVariable(data["forum"]) parent = None isApproved = False isHighlighted = False isEdited = False isSpam = False isDeleted = False if "parent" in data.keys(): parent = data["parent"] parent = getSqlVariable(parent) if "isApproved" in data.keys(): isApproved = data["isApproved"] if isApproved: isApproved = 1 else: isApproved = 0 if "isHighlighted" in data.keys(): isHighlighted = data["isHighlighted"] if isHighlighted: isHighlighted = 1 else: isHighlighted = 0 if "isEdited" in data.keys(): isEdited = data["isEdited"] if isEdited: isEdited = 1 else: isEdited = 0 if "isSpam" in data.keys(): isSpam = data["isSpam"] if isSpam: isSpam = 1 else: isSpam = 0 if "isDeleted" in data.keys(): isDeleted = data["isDeleted"] if isDeleted: isDeleted = 1 else: isDeleted = 0 sql = "SELECT id, name FROM users WHERE email=%(email)s" % {"email": user} cursor = connection.cursor() cursor.execute(sql) result = cursor.fetchone() userId = getSqlVariable(result[0]) userName = getSqlVariable(result[1]) sql = "INSERT INTO posts" \ " (date, threads_id, message, users_email, forums_short_name, parent, isApproved, isHighlighted, isEdited, isSpam, isDeleted, users_name, users_id)" \ " VALUES (%(date)s, %(thread)s, %(message)s, %(user)s, %(forum)s, %(parent)s, %(isApproved)s, %(isHighlighted)s, %(isEdited)s, %(isSpam)s, %(isDeleted)s, %(user_name)s, %(user_id)s);" \ % { "date": date, "thread": thread, "message": message, "user": user, "forum": forum, "parent": parent, "isApproved": isApproved, "isHighlighted": isHighlighted, "isEdited": isEdited, "isSpam": isSpam, "isDeleted": isDeleted, "user_name": userName, "user_id": userId } try: cursor.execute(sql) id = cursor.lastrowid if isDeleted == 0: sql = "UPDATE threads SET posts = posts + 1 WHERE id=%(id)s" % {"id": thread} cursor.execute(sql) resp = { "code": 0, "response": { "id": id, "date": date, "thread": thread, "message": message, "user": user, "forum": forum, "parent": parent, "isApproved": isApproved, "isHighlighted": isHighlighted, "isEdited": isEdited, "isSpam": isSpam, "isDeleted": isDeleted } } except IntegrityError: resp = { "code": 5, "response" : { } } resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')
def list(request): forum = request.GET.get("forum") user = request.GET.get("user") if forum: source = "forums_short_name" value = forum if user: source = "users_email" value = user since = request.GET.get("since") limit = request.GET.get("limit") order = request.GET.get("order") if since: since = "AND date >= '%(since)s'" % {"since": since} else: since = "" if limit: limit = "LIMIT %(limit)s" % {"limit": limit} else: limit = "" if order: order = "ORDER BY date %(order)s" % {"order": order} else: order = "" sql = "SELECT * FROM threads WHERE %(source)s = '%(value)s' %(since)s %(order)s %(limit)s;" % { "source": source, "value": value, "since": since, "order": order, "limit": limit } related = request.GET.getlist("related") cursor = connection.cursor() cursor.execute(sql) results = cursor.fetchall() resp = [] for result in results: post = { "id": result[0], "title": result[1], "slug": result[2], "message": result[3], "date": result[4].isoformat(sep=' '), "likes": result[5], "dislikes": result[6], "points": result[7], "isClosed": True if result[8] == 1 else False, "isDeleted": True if result[9] == 1 else False, "posts": result[10], "forum": result[11], "user": result[12] } for relation in related: if relation == "user": post.update({"user": getuser(getSqlVariable(post["user"]))}) elif relation == "forum": post.update({"forum": getforum(post["forum"])}) resp.append(post) resp = {"code": 0, "response": resp} resp = json.dumps(resp) return HttpResponse(resp, content_type='application/json')