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' }
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' }
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'}
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'}
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()
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'}
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 }
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 }
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] }
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}