Ejemplo n.º 1
0
def list_posts(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        required_data = ["user"]
        optional = intersection(request=request_data,
                                values=["limit", "order", "since"])
        try:
            choose_required(data=request_data, required=required_data)
            posts_l = views.posts_list(entity="user",
                                       params=optional,
                                       identifier=request_data["user"],
                                       related=[])
        except Exception as e:
            return HttpResponse(json.dumps({
                "code": 1,
                "response": (e.message)
            }),
                                content_type='application/json')
        return HttpResponse(json.dumps({
            "code": 0,
            "response": posts_l
        }),
                            content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 2
0
def create(request):
    if request.method == "POST":
        request_data = json.loads(request.body)
        required_data = [
            "forum", "title", "isClosed", "user", "date", "message", "slug"
        ]
        optional = intersection(request=request_data, values=["isDeleted"])
        try:
            choose_required(data=request_data, required=required_data)

            forum = request_data["forum"]
            title = request_data["title"]
            isClosed = request_data["isClosed"]
            user = request_data["user"]
            date = request_data["date"]
            message = request_data["message"]
            slug = request_data["slug"]

            DBconnector.exist(entity="Users", identifier="email", value=user)
            DBconnector.exist(entity="Forums",
                              identifier="short_name",
                              value=forum)

            isDeleted = 0
            if "isDeleted" in optional:
                isDeleted = optional["isDeleted"]
            thread = DBconnector.select_query(
                'SELECT date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' \
                'FROM Threads WHERE slug = %s', (slug, ))

            if len(thread) == 0:
                DBconnector.update_query('INSERT INTO Threads (forum, title, isClosed, user, date, message, slug, isDeleted) ' \
                                         'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
                                         (forum, title, isClosed, user, date, message, slug, isDeleted, ))

                thread = DBconnector.select_query('SELECT date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' \
                                                  'FROM Threads WHERE slug = %s', (slug, ))

            response = views.thread_format(thread)
            del response["dislikes"]
            del response["likes"]
            del response["points"]
            del response["posts"]

        except Exception as e:
            return HttpResponse(json.dumps({
                "code": 1,
                "response": (e.message)
            }),
                                content_type='application/json')
        return HttpResponse(json.dumps({
            "code": 0,
            "response": response
        }),
                            content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 3
0
def list_posts(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        required_data = ["thread"]
        entity = "thread"
        optional = intersection(request=request_data, values=["limit", "order", "since"])
        try:
            choose_required(data=request_data, required=required_data)
            p_list = views.posts_list(entity=entity, params=optional, identifier=request_data["thread"], related=[])
        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": p_list}), content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 4
0
def list_users(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        required_data = ["forum"]
        optional = intersection(request=request_data, values=["limit", "order", "since_id"])
        try:
            choose_required(data=request_data, required=required_data)

            users_list = views.l_users(request_data["forum"], optional)

        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": users_list}), content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 5
0
def create(request):
    if request.method == "POST":
        request_data = json.loads(request.body)
        required_data = ["forum", "title", "isClosed", "user", "date", "message", "slug"]
        optional = intersection(request=request_data, values=["isDeleted"])
        try:
            choose_required(data=request_data, required=required_data)

            forum = request_data["forum"]
            title = request_data["title"]
            isClosed = request_data["isClosed"]
            user = request_data["user"]
            date = request_data["date"]
            message = request_data["message"]
            slug = request_data["slug"]

            DBconnector.exist(entity="Users", identifier="email", value=user)
            DBconnector.exist(entity="Forums", identifier="short_name", value=forum)

            isDeleted = 0
            if "isDeleted" in optional:
                isDeleted = optional["isDeleted"]
            thread = DBconnector.select_query(
                'SELECT date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' \
                'FROM Threads WHERE slug = %s', (slug, ))

            if len(thread) == 0:
                DBconnector.update_query('INSERT INTO Threads (forum, title, isClosed, user, date, message, slug, isDeleted) ' \
                                         'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)',
                                         (forum, title, isClosed, user, date, message, slug, isDeleted, ))

                thread = DBconnector.select_query('SELECT date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' \
                                                  'FROM Threads WHERE slug = %s', (slug, ))

            response = views.thread_format(thread)
            del response["dislikes"]
            del response["likes"]
            del response["points"]
            del response["posts"]

        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": response}), content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 6
0
def create_user(request):
    if request.method == "POST":

        request_data = json.loads(request.body)
        required_data = ["email", "username", "name", "about"]
        optional = intersection(request=request_data, values=["isAnonymous"])
        try:
            choose_required(data=request_data, required=required_data)

            isAnonymous = 0
            if "isAnonymous" in optional:
                isAnonymous = optional["isAnonymous"]

            DBconnector.update_query(
                "INSERT INTO Users (email, about, name, username, isAnonymous) VALUES (%s, %s, %s, %s, %s)",
                (
                    request_data["email"],
                    request_data["about"],
                    request_data["name"],
                    request_data["username"],
                    isAnonymous,
                ))

            user = DBconnector.select_query(
                'SELECT email, about, isAnonymous, id, name, username FROM Users WHERE email = %s',
                (request_data["email"], ))

        except Exception as e:
            return HttpResponse(json.dumps({
                "code": 1,
                "response": (e.message)
            }),
                                content_type='application/json')
        return HttpResponse(json.dumps({
            "code": 0,
            "response": views.user_format(user)
        }),
                            content_type='application/json')

    else:
        return HttpResponse(status=405)
Ejemplo n.º 7
0
def post_list(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        try:
            identifier = request_data["forum"]
            entity = "forum"
        except KeyError:
            try:
                identifier = request_data["thread"]
                entity = "thread"
            except Exception as e:
                return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')

        optional = intersection(request=request_data, values=["limit", "order", "since"])
        try:
            p_list = views.posts_list(entity=entity, params=optional, identifier=identifier, related=[])
        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": p_list}), content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 8
0
def thread_list(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        try:
            identifier = request_data["forum"]
            entity = "forum"
        except KeyError:
            try:
                identifier = request_data["user"]
                entity = "user"
            except KeyError:
                return HttpResponse(json.dumps({"code": 1, "response": "Any methods?"}),
                                    content_type='application/json')
        optional = intersection(request=request_data, values=["limit", "order", "since"])
        try:
            t_list = views.threads_list(entity=entity, identifier=identifier, related=[], params=optional)
        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": t_list}), content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 9
0
def list_following(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        required_data = ["user"]
        follow_param = intersection(request=request_data,
                                    values=["limit", "order", "since_id"])
        try:
            choose_required(data=request_data, required=required_data)

            query = "SELECT followee FROM Followers JOIN Users ON Users.email = Followers.followee WHERE follower = %s "

            if "since_id" in follow_param:
                query += " AND Users.id >= " + str(follow_param["since_id"])
            if "order" in follow_param:
                query += " ORDER BY Users.name " + follow_param["order"]
            else:
                query += " ORDER BY Users.name DESC "
            if "limit" in follow_param:
                query += " LIMIT " + str(follow_param["limit"])

            following_tuple = DBconnector.select_query(
                query=query, params=(request_data["user"], ))
            following_list = []
            for id in following_tuple:
                id = id[0]
                following_list.append(views.detail_user(email=id))

        except Exception as e:
            return HttpResponse(json.dumps({
                "code": 1,
                "response": (e.message)
            }),
                                content_type='application/json')
        return HttpResponse(json.dumps({
            "code": 0,
            "response": following_list
        }),
                            content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 10
0
def list_users(request):
    if request.method == "GET":
        request_data = request.GET.dict()
        required_data = ["forum"]
        optional = intersection(request=request_data,
                                values=["limit", "order", "since_id"])
        try:
            choose_required(data=request_data, required=required_data)

            users_list = views.l_users(request_data["forum"], optional)

        except Exception as e:
            return HttpResponse(json.dumps({
                "code": 1,
                "response": (e.message)
            }),
                                content_type='application/json')
        return HttpResponse(json.dumps({
            "code": 0,
            "response": users_list
        }),
                            content_type='application/json')
    else:
        return HttpResponse(status=405)
Ejemplo n.º 11
0
def create(request):
    if request.method == "POST":

        request_data = json.loads(request.body)
        required_data = ["user", "forum", "thread", "message", "date"]
        optional_data = ["parent", "isApproved", "isHighlighted", "isEdited", "isSpam", "isDeleted"]
        optional = intersection(request=request_data, values=optional_data)
        try:
            choose_required(data=request_data, required=required_data)

            date = request_data["date"]
            thread = request_data["thread"]
            message = request_data["message"]
            user = request_data["user"]
            forum = request_data["forum"]

            DBconnector.exist(entity="Threads", identifier="id", value=thread)
            DBconnector.exist(entity="Forums", identifier="short_name", value=forum)
            DBconnector.exist(entity="Users", identifier="email", value=user)

            isTread = DBconnector.select_query(
                "SELECT Threads.id FROM Threads JOIN Forums ON Threads.forum = Forums.short_name " \
                "WHERE Threads.forum = %s AND Threads.id = %s", (forum, thread, ))

            if len(isTread) == 0:
                raise Exception("no thread with id = " + str(thread) + " in forum " + forum)

            if "parent" in optional:
                isPost = DBconnector.select_query("SELECT Posts.id FROM Posts JOIN Threads ON Threads.id = Posts.thread "
                                                  "WHERE Posts.id = %s AND Threads.id = %s", (optional["parent"], thread, ))
                if len(isPost) == 0:
                    raise Exception("No post with id = " + optional["parent"])

            update_thread_posts = "UPDATE Threads SET posts = posts + 1 WHERE id = %s"

            query = "INSERT INTO Posts (message, user, forum, thread, date"
            values = "(%s, %s, %s, %s, %s"
            parameters = [message, user, forum, thread, date]

            for param in optional:
                query += ", " + param
                values += ", %s"
                parameters.append(optional[param])

            query += ") VALUES " + values + ")"

            DBconnector.update_query(update_thread_posts, (thread, ))
            post_id = DBconnector.update_query(query, parameters)

            post = DBconnector.select_query("SELECT date, dislikes, forum, id, isApproved, isDeleted, isEdited, " \
                                            "isHighlighted, isSpam, likes, message, parent, points, thread, user " \
                                            "FROM Posts WHERE id = %s", (post_id, ))
            post = views.post_format(post)

            del post["dislikes"]
            del post["likes"]
            del post["parent"]
            del post["points"]

        except Exception as e:
            return HttpResponse(json.dumps({"code": 1, "response": (e.message)}), content_type='application/json')
        return HttpResponse(json.dumps({"code": 0, "response": post}), content_type='application/json')
    else:
        return HttpResponse(status=405)