def test_user_activity_view(self): # get user1 = backend.add_user('username1','photo_url','weibo_id1') user2 = backend.add_user('username2','photo_url','weibo_id2') post1 = backend.add_post('title1',user1['id'],'video_url', pic_small='pic_small') post2 = backend.add_post('title2',user1['id'],'video_url', pic_small='pic_small') comment1 = backend.add_comment(post1['id'],'comment1',user1['id']) ac1 = { 'post_id':post1['id'], 'from_id':user1['id'], 'to_id':user2['id'], 'atype':'like' } ac2 = { 'post_id':post1['id'], 'from_id':user1['id'], 'comment_id':comment1['id'], 'to_id':user2['id'], 'atype':'comment' } ret = backend.add_activity(ac1) ret = backend.add_activity(ac2) backend.new_install(user2['id'],'device_token') headers = self.generate_header('weibo_id2') resp = self.client.get('/user/%d/activity' % user2['id'],headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert len(_data['results']) == 2 redis.flushall() redis.hset('ACTIVITY::UPDATETIME::%(user_id)s' % {'user_id':user2['id']}, 'last_update_time',int(time.time() - 3600 * 6)) resp = self.client.get('/user/%d/activity/count' % user2['id'], headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert _data['count'] == 2 redis.hset('ACTIVITY::UPDATETIME::%(user_id)s' % {'user_id':user2['id']}, 'last_update_time',int(time.time()) + 2) resp = self.client.get('/user/%d/activity/count' % user2['id'], headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert _data['count'] == 0
def get(self,user_id): try: page = int(request.values.get('page')) except: page = 1 limit = 10 offset = (page-1) * limit feeds = backend.get_latest_feed(user_id,limit,offset) if len(feeds) > 0: feeds = pipe_load(feeds) curr_user = backend.get_user_by_uid(g.ukey) liked_post_ids = [p['id'] for p in feeds] liked_dict = backend.is_like_post(curr_user['id'],liked_post_ids) for up in feeds: up['is_like'] = liked_dict.get(up['id']) or False if page == 1: redis.hset(FEED_UPDATE_TIME_KEY % {'user_id':user_id}, 'last_update_time',int(time.time())) return jsonify(results=feeds,page=page)
def get(self, user_id): try: page = int(request.values.get('page')) except: page = 1 limit = 10 offset = (page - 1) * limit feeds = backend.get_latest_feed(user_id, limit, offset) if len(feeds) > 0: feeds = pipe_load(feeds) curr_user = backend.get_user_by_uid(g.ukey) liked_post_ids = [p['id'] for p in feeds] liked_dict = backend.is_like_post(curr_user['id'], liked_post_ids) for up in feeds: up['is_like'] = liked_dict.get(up['id']) or False if page == 1: redis.hset(FEED_UPDATE_TIME_KEY % {'user_id': user_id}, 'last_update_time', int(time.time())) return jsonify(results=feeds, page=page)
ac_list.append(ac) try: _user = backend.get_user(user_id) except BackendError,ex: traceback.print_exc() try: backend.set_install(user_id,{'badge':0}) rq.enqueue('motiky.worker.apns_push', user_id=user_id,data={ 'badge':0 }) except BackendError,ex: traceback.print_exc() redis.hset(ACTIVITY_UPDATE_TIME_KEY % {'user_id':user_id}, 'last_update_time',int(time.time())) return jsonify(results=ac_list) user_activity_func = UserActivityView.as_view('user_activity') user_new_activity_count_func = UserNewActivityCountView.as_view('user_new_activity_count') instance.add_url_rule('/user/<int:user_id>/activity', view_func=user_activity_func,methods=['GET']) instance.add_url_rule('/user/<int:user_id>/activity/count', view_func=user_new_activity_count_func,methods=['GET'])
def test_user_activity_view(self): # get user1 = backend.add_user('username1', 'photo_url', 'weibo_id1') user2 = backend.add_user('username2', 'photo_url', 'weibo_id2') post1 = backend.add_post('title1', user1['id'], 'video_url', pic_small='pic_small') post2 = backend.add_post('title2', user1['id'], 'video_url', pic_small='pic_small') comment1 = backend.add_comment(post1['id'], 'comment1', user1['id']) ac1 = { 'post_id': post1['id'], 'from_id': user1['id'], 'to_id': user2['id'], 'atype': 'like' } ac2 = { 'post_id': post1['id'], 'from_id': user1['id'], 'comment_id': comment1['id'], 'to_id': user2['id'], 'atype': 'comment' } ret = backend.add_activity(ac1) ret = backend.add_activity(ac2) backend.new_install(user2['id'], 'device_token') headers = self.generate_header('weibo_id2') resp = self.client.get('/user/%d/activity' % user2['id'], headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert len(_data['results']) == 2 redis.flushall() redis.hset( 'ACTIVITY::UPDATETIME::%(user_id)s' % {'user_id': user2['id']}, 'last_update_time', int(time.time() - 3600 * 6)) resp = self.client.get('/user/%d/activity/count' % user2['id'], headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert _data['count'] == 2 redis.hset( 'ACTIVITY::UPDATETIME::%(user_id)s' % {'user_id': user2['id']}, 'last_update_time', int(time.time()) + 2) resp = self.client.get('/user/%d/activity/count' % user2['id'], headers=headers) _data = json.loads(resp.data) assert resp.status_code == 200 assert _data['count'] == 0
ac_list = [] for ac in acs: try: ac = filter_activity(ac) except: traceback.print_exc() continue ac_list.append(ac) try: _user = backend.get_user(user_id) except BackendError, ex: traceback.print_exc() try: backend.set_install(user_id, {"badge": 0}) rq.enqueue("motiky.worker.apns_push", user_id=user_id, data={"badge": 0}) except BackendError, ex: traceback.print_exc() redis.hset(ACTIVITY_UPDATE_TIME_KEY % {"user_id": user_id}, "last_update_time", int(time.time())) return jsonify(results=ac_list) user_activity_func = UserActivityView.as_view("user_activity") user_new_activity_count_func = UserNewActivityCountView.as_view("user_new_activity_count") instance.add_url_rule("/user/<int:user_id>/activity", view_func=user_activity_func, methods=["GET"]) instance.add_url_rule("/user/<int:user_id>/activity/count", view_func=user_new_activity_count_func, methods=["GET"])