def followers_list(email, type, params): DBconnect.exist(entity="Users", identifier="email", value=email) if type == "follower": where = "followee" if type == "followee": where = "follower" query = "SELECT " + type + " FROM Followers JOIN Users ON Users.email = Followers." + type + \ " WHERE " + where + " = %s " if "since_id" in params: query += " AND Users.id >= " + str(params["since_id"]) if "order" in params: query += " ORDER BY Users.name " + params["order"] else: query += " ORDER BY Users.name DESC " if "limit" in params: query += " LIMIT " + str(params["limit"]) followers_ids_tuple = DBconnect.select_query(query=query, params=(email, )) f_list = [] for id in followers_ids_tuple: id = id[0] f_list.append(users.details(email=id)) return f_list
def details(id, related): thread = DBconnect.select_query( 'select date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' 'FROM Threads WHERE id = %s', (id, ) ) if len(thread) == 0: raise Exception('No thread exists with id=' + str(id)) 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"] = users.details(thread["user"]) if "forum" in related: thread["forum"] = forums.details(short_name=thread["forum"], related=[]) return thread
def details(short_name, related): forum = DBconnect.select_query( 'select id, name, short_name, user FROM Forums WHERE short_name = %s', (short_name, ) ) if len(forum) == 0: raise ("No forum with exists short_name=" + short_name) forum = forum_description(forum) if "user" in related: forum["user"] = users.details(forum["user"]) return forum
def remove_follow(email1, email2): follows = DBconnect.select_query( 'SELECT id FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, ) ) if len(follows) != 0: DBconnect.update_query('DELETE FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, )) else: raise Exception("No such following") return users.details(email1)
def details(request): if request.method == "GET": request_data = request.GET.dict() required_data = ["user"] try: choose_required(data=request_data, required=required_data) user_details = users.details(email=request_data["user"]) except Exception as e: return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json') return HttpResponse(json.dumps({"code": 0, "response": user_details}), content_type='application/json') else: return HttpResponse(status=405)
def details(details_id, related): post = post_query(details_id) if post is None: raise Exception("no post with id = " + details_id) if "user" in related: post["user"] = users.details(post["user"]) if "forum" in related: post["forum"] = forums.details(short_name=post["forum"], related=[]) if "thread" in related: post["thread"] = threads.details(id=post["thread"], related=[]) return post
def add_follow(email1, email2): DBconnect.exist(entity="Users", identifier="email", value=email1) DBconnect.exist(entity="Users", identifier="email", value=email2) if email1 == email2: raise Exception("User with email=" + email1 + " can't follow himself") follows = DBconnect.select_query( 'SELECT id FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, ) ) if len(follows) == 0: DBconnect.update_query('INSERT INTO Followers (follower, followee) VALUES (%s, %s)', (email1, email2, )) user = users.details(email1) return user
def list_users(short_name, optional): DBconnect.exist(entity="Forums", identifier="short_name", value=short_name) query = "SELECT distinct email FROM Users JOIN Posts ON Posts.user = Users.email " \ " JOIN Forums on Forums.short_name = Posts.forum WHERE Posts.forum = %s " if "since_id" in optional: query += " AND Users.id >= " + str(optional["since_id"]) if "order" in optional: query += " ORDER BY Users.id " + optional["order"] if "limit" in optional: query += " LIMIT " + str(optional["limit"]) users_tuple = DBconnect.select_query(query, (short_name, )) list_u = [] for user in users_tuple: user = user[0] list_u.append(users.details(user)) return list_u