コード例 #1
0
ファイル: user.py プロジェクト: Sermalenk/database
 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
コード例 #2
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #3
0
ファイル: post.py プロジェクト: Sermalenk/database
    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
コード例 #4
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #5
0
ファイル: forum.py プロジェクト: Sermalenk/database
 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
コード例 #6
0
ファイル: views.py プロジェクト: Sermalenk/database
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')
コード例 #7
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #8
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #9
0
ファイル: thread.py プロジェクト: Sermalenk/database
 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
コード例 #10
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #11
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #12
0
ファイル: post.py プロジェクト: Sermalenk/database
    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']
コード例 #13
0
ファイル: views.py プロジェクト: Sermalenk/database
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")
コード例 #14
0
ファイル: views.py プロジェクト: Sermalenk/database
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")