def userinfo(request): """Info about a user Return info of current logged in user, or specified user. GET parameters: sessionid -- session ID obtained at login userid -- (optional) user ID fwed -- (optional) set to 1 to also return followed users fwers -- (optional) set to 1 to also return followers ftags -- (optional) set to 1 to also return followed tags Return values: code 0: success, data contains keys: user -- User detail object fwed -- (optional) followed users (List of Users) fwers -- (optional) followers (List of Users) ftags -- (optional) followed tags (List of Tags) """ login_required(request) user_id = request.GET.get('userid') if user_id: user = interface.get_user_by_id(user_id) else: user = request.user data = {} data['user'] = { 'name': user.username, 'id': user.id, 'email': user.email, 'full_name': user.userprofile.full_name, } if request.GET.get('fwed'): qs = interface.get_followed_users(user) users = [{"id": x.id, "name": x.username} for x in qs] data['fwed'] = {"rows": len(users), "users": users} if request.GET.get('fwers'): qs = interface.get_followers(user) users = [{"id": x.id, "name": x.username} for x in qs] data['fwers'] = {"rows": len(users), "users": users} if request.GET.get('ftags'): qs = interface.get_followed_tags(user) tags = [x.name for x in qs] data['ftags'] = {"rows": len(tags), "tags": tags} return my_response(make_response(0, data=data))
def unfollow(request): """Unfollow a user The logged in user will stop following the user given as parameter GET parameters: sessionid -- session ID obtained at login follow_id -- ID of user to unfollow Return values: code 0: success code 1: no query given code 2: (unused) invalid query """ login_required(request) follow_id = request.GET.get('follow_id') follow_user = interface.get_user_by_id(follow_id) interface.unfollow_user(request.user, follow_user) return my_response(make_response(0, 'You are no longer following @%s.' % follow_user.username))
def follow(request): """Follow a user The logged in user will start following the user given as parameter. Does not complain when following already followed user. GET parameters: sessionid -- session ID obtained at login follow_id -- ID of user to follow Return values: code 0: success, data is a List of Users with one element """ login_required(request) follow_id = request.GET.get('follow_id') follow_user = interface.get_user_by_id(follow_id) interface.follow_user(request.user, follow_user) users = [{"id": follow_user.id, "name": follow_user.username}] return my_response(make_response(0, 'You are now following @%s.' % follow_user.username, data={"rows": len(users), "users": users}))
def ftags(request): """List followed tags Tags followed by current logged in user. GET parameters: sessionid -- session ID obtained at login userid -- (optional) ID of user to list his followed tags Return values: code 0: success, data contains List of Tags """ login_required(request) user_id = request.GET.get('userid') if user_id: user = interface.get_user_by_id(user_id) else: user = request.user qs = interface.get_followed_tags(user) tags = [x.name for x in qs] return my_response(make_response(0, data = { "rows": len(tags), "tags": tags}))
def followers(request): """List followers of a user List users following a specified (or current) user. GET parameters: sessionid -- session ID obtained at login userid -- (optional) ID of user to list his followers Return values: code 0: success, data contains List of Users """ login_required(request) user_id = request.GET.get('userid') if user_id: user = interface.get_user_by_id(user_id) else: user = request.user qs = interface.get_followers(user) users = [{"id": x.id, "name": x.username} for x in qs] return my_response(make_response(0, data = { "rows": len(users), "users": users}))