def put(self):
     u = authorize(request)
     u_id = int(u[0])
     follow_list = text_list_to_set(u[4],process_f=lambda x: int(x))
     to_follow = request.args.get('username',None)
     if to_follow == None or not db.exists('USER').where(username=to_follow):
         abort(400,'Malformed Request')
     if to_follow == u[1]:
         abort(400,'Malformed Request')
     to_follow = db.select('USER').where(username=to_follow).execute()[0]
     if to_follow not in follow_list:
         db.raw('UPDATE USERS SET FOLLOWED_NUM = FOLLOWED_NUM + 1 WHERE ID = ?',[to_follow])
     follow_list.add(to_follow)
     db.update('USER').set(following=set_to_text_list(follow_list)).where(id=u_id).execute()
     return {
         'message': 'success'
     }
Beispiel #2
0
 def put(self):
     u = authorize(request)
     u_id = int(u[0])
     follow_list = text_list_to_set(u[4])
     to_follow = request.args.get('username',None)
     if to_follow == None or not db.exists('USER').where(username=to_follow):
         abort(400,'Malformed Request')
     if to_follow == u[1]:
         abort(400,'Malformed Request')
     to_follow = db.select('USER').where(username=to_follow).execute()[0]
     if to_follow not in follow_list:
         db.raw('UPDATE USERS SET FOLLOWED_NUM = FOLLOWED_NUM + 1 WHERE ID = ?',[to_follow])
     follow_list.add(to_follow)
     db.update('USER').set(following=set_to_text_list(follow_list)).where(id=u_id).execute()
     return {
         'message': 'success'
     }
Beispiel #3
0
 def put(self):
     u = authorize(request)
     u_id = int(u[0])
     follow_list = text_list_to_set(u[4], process_f=lambda x: int(x))
     to_follow = get_request_arg('username', required=True)
     if not db.exists('USER').where(username=to_follow):
         abort(404, 'User Not Found')
     if to_follow == u[1]:
         abort(400, "Sorry, you can't follow yourself.")
     to_follow = db.select('USER').where(username=to_follow).execute()[0]
     if to_follow not in follow_list:
         db.raw(
             'UPDATE USERS SET FOLLOWED_NUM = FOLLOWED_NUM + 1 WHERE ID = ?',
             [to_follow])
     follow_list.add(to_follow)
     db.update('USER').set(following=set_to_text_list(follow_list)).where(
         id=u_id).execute()
     return {'message': 'success'}
Beispiel #4
0
    def get(self):
        q = 'SELECT * FROM POSTS p ORDER BY p.published DESC LIMIT 20'

        latest_posts = db.raw(q, [])
        latest_posts = [format_post(row) for row in latest_posts]
        latest_posts.sort(reverse=True,
                          key=lambda x: int(float(x["meta"]["published"])))

        return {'posts': latest_posts}
    def put(self):
        u = get_dummy_user()
        u_id = int(u[0])
        following = text_list_to_set(u[4], process_f=lambda x: int(x))
        to_follow = request.args.get('username', None)
        if to_follow == u[1]:
            abort(400, 'Malformed Request')
        if to_follow == None or not db.exists('USER').where(
                username=to_follow):
            abort(400, 'Malformed Request Or Unknown username')
        to_follow = db.select('USER').where(username=to_follow).execute()[0]
        if to_follow in following:
            db.raw(
                'UPDATE USERS SET FOLLOWED_NUM = FOLLOWED_NUM - 1 WHERE ID = ?',
                [to_follow])
        following.discard(to_follow)
        db.update('USER').set(following=set_to_text_list(following)).where(
            id=u_id).execute()

        return {'message': 'success'}
Beispiel #6
0
def upgrade_tags_v2():
    # read old table , convert data and insert into new table
    for t in db.table('pre_upgrade_tags_v2').select(
            db.raw(
                'id, hwid, description, (NOT is_disabled) as is_enabled, created_at, updated_at'
            )).get():
        print("insert:", t)
        db.table('tags').insert(t)

    # destroy old table
    db.table('tags').delete()
Beispiel #7
0
    def put(self):
        u = authorize(request)
        u_id = int(u[0])
        following = text_list_to_set(u[4], process_f=lambda x: int(x))
        to_follow = get_request_arg('username', required=True)
        if to_follow == u[1]:
            abort(400, "You can't unfollow yourself either.")
        if to_follow == None:
            abort(400, "Expected 'username' query parameter")
        if not db.exists('USER').where(username=to_follow):
            abort(404, 'User Not Found')
        to_follow = db.select('USER').where(username=to_follow).execute()[0]
        if to_follow in following:
            db.raw(
                'UPDATE USERS SET FOLLOWED_NUM = FOLLOWED_NUM - 1 WHERE ID = ?',
                [to_follow])
        following.discard(to_follow)
        db.update('USER').set(following=set_to_text_list(following)).where(
            id=u_id).execute()

        return {'message': 'success'}
Beispiel #8
0
def rooms():
    rooms = Room.select('rooms.*') \
        .add_select(
        db.raw(
            '(select m.created_at from messages as m where rooms.id = m.room_id order by m.created_at desc limit 1) as last_message_date')
    ) \
        .add_select(
        db.raw(
            'IF(rooms.is_group,false,(select CONCAT(u.first_name," ",u.last_name) from room_members as mem join users as u on u.id = mem.user_id where mem.room_id = rooms.id and u.id != %s limit 1)) as username' %
            g.user['id'])
    ) \
        .add_select(
        db.raw(
            'IF(rooms.is_group,false,(select u.avatar from room_members as mem join users as u on u.id = mem.user_id where mem.room_id = rooms.id and u.id != %s limit 1)) as avatar' %
            g.user['id'])
    ) \
        .add_select(
        db.raw(
            'IF(rooms.is_group,false,(select u.id from room_members as mem join users as u on u.id = mem.user_id where mem.room_id = rooms.id and u.id != %s limit 1)) as friend_id' %
            g.user['id'])
    ) \
        .add_select(
        db.raw(
            '(select count(m.id) from room_members as mem join messages as m on m.room_id = mem.room_id where mem.user_id = %s and mem.room_id = rooms.id and m.id > IF(mem.last_read_message,mem.last_read_message,0)) as unread_messages' %
            g.user['id'])
    ) \
        .join('room_members as rm', 'rm.room_id', '=', 'rooms.id') \
        .where('rm.user_id', g.user['id']) \
        .group_by('rooms.id') \
        .order_by('last_message_date', 'desc') \
        .get()\
        .serialize()

    for room in rooms:
        if not room['is_group']:
            client = _.findWhere(connected_users, {'id': room['friend_id']})
            room['online'] = True if client else False

    return jsonify(rooms), 200
 def get(self):
     u = authorize(request)
     n = request.args.get('n',10)
     p = request.args.get('p',0)
     following = text_list_to_set(u[4],process_f=lambda x:int(x))
     following = [db.select('USER').where(id=int(id)).execute()[1] for id in following]
     wildcards = ','.join(['?']*len(following))
     q = 'SELECT * FROM POSTS WHERE author in ({})'.format(wildcards)
     q+=' LIMIT ? OFFSET ?'
     following.append(n)
     following.append(p)
     all_posts = db.raw(q,following)
     all_posts = [format_post(row) for row in all_posts]
     all_posts.sort(reverse=True,key=lambda x: float(x["meta"]["published"]))
     return {
         'posts': all_posts
     }
Beispiel #10
0
 def get(self):
     u = authorize(request)
     n = request.args.get('n',10)
     p = request.args.get('p',0)
     following = text_list_to_set(u[4],process_f=lambda x:int(x))
     following = [db.select('USER').where(id=int(id)).execute()[1] for id in following]
     wildcards = ','.join(['?']*len(following))
     q = 'SELECT * FROM POSTS WHERE author in ({})'.format(wildcards)
     q+=' LIMIT ? OFFSET ?'
     following.append(n)
     following.append(p)
     all_posts = db.raw(q,following)
     all_posts = [format_post(row) for row in all_posts]
     all_posts.sort(reverse=True,key=lambda x: int(x["meta"]["published"]))
     return {
         'posts': all_posts
     }
Beispiel #11
0
    def get(self):
        u = authorize(request)
        try:
            n = int(request.args.get('n',10))
            p = int(request.args.get('p',0))
        except:
            abort(400, 'Malformed Request')
        if n <= 0 or p < 0:
            abort(400, 'Malformed Request')
        following = text_list_to_set(u[4],process_f=lambda x:int(x))
        following = [db.select('USER').where(id=int(id)).execute()[1] for id in following]
        wildcards = ','.join(['?']*len(following))
        q = 'SELECT * FROM POSTS WHERE author in ({})'.format(wildcards)

        all_posts = db.raw(q,following)
        all_posts = [format_post(row) for row in all_posts]
        all_posts.sort(reverse=True,key=lambda x: int(x["meta"]["published"]))

        return {
            'posts': all_posts[p:p+n]
        }
Beispiel #12
0
    def get(self):
        u = authorize(request)
        n = get_request_arg('n', int, default=10)
        p = get_request_arg('p', int, default=0)
        following = text_list_to_set(u[4], process_f=lambda x: int(x))
        following = [
            db.select('USER').where(id=int(id)).execute()[1]
            for id in following
        ]
        wildcards = ','.join(['?'] * len(following))
        # very inefficent but it'll work
        q = 'SELECT * FROM POSTS WHERE author in ({})'.format(wildcards)
        all_posts = db.raw(q, following)

        all_posts = [format_post(row) for row in all_posts]
        all_posts.sort(reverse=True,
                       key=lambda x: float(x["meta"]["published"]))
        if p > len(all_posts) - 1:
            all_posts = []
        else:
            all_posts = all_posts[p:p + n]
        return {'posts': all_posts}