def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Friends.gql('WHERE user_id2 = :1', id) follower_ids = [item.user_id1 for item in query] query = User.gql('WHERE user_id IN :1', follower_ids) followers = [item for item in query] self.render('user_followers.html', followers = followers, user = m_user, is_friend = self.is_friend(id))
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Friends.gql('WHERE user_id2 = :1', id) follower_ids = [item.user_id1 for item in query] query = User.gql('WHERE user_id IN :1', follower_ids) followers = [item for item in query] self.render('user_followers.html', followers=followers, user=m_user, is_friend=self.is_friend(id))
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Friends.gql('WHERE user_id1 = :1', id) friend_ids = [friend.user_id2 for friend in query] CW_friends = [] for uid in friend_ids: f = User.get_by_key_name(uid) CW_friends.append(f) self.render('user_friends.html', user=m_user, CW_friends=CW_friends, is_friend=self.is_friend(id))
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Friends.gql('WHERE user_id1 = :1', id) friend_ids = [friend.user_id2 for friend in query] CW_friends = [] for uid in friend_ids: f = User.get_by_key_name(uid) CW_friends.append(f) self.render('user_friends.html', user = m_user, CW_friends = CW_friends, is_friend = self.is_friend(id))
def get(self): query = PendingRequest.gql('WHERE receiver_id = :1', self.user.user_id) pending_uids = [item.sender_id for item in query] query = User.gql('WHERE user_id IN :1', pending_uids) #IN may have a problem exceeding 30 reqs = [user for user in query] self.render('friendrequest.html', reqs = reqs)
def get_or_create_user(message): message_from = message.from_user user, is_create = User.get_or_create(uid=message_from.id, username=message_from.username, last_name=message_from.last_name, first_name=message_from.first_name) return user
def post(self): email = self.request.get('email') user = User.gql('WHERE email = :1', email).get() if user: self.render('register.html', reg_state=UNAVAILABLE_EMAIL, email=email) return firstname = self.request.get('firstname').capitalize() lastname = self.request.get('lastname').capitalize() userInfo = { 'firstname': firstname, 'lastname': lastname, 'realname': firstname + ' ' + lastname, 'password': hashlib.sha1(self.request.get('password')).hexdigest(), 'picture': '/static/default.jpg', 'email': self.request.get('email'), 'website': self.request.get('website'), 'location': self.request.get('location'), 'expertise': self.request.get_all('expertise') } user = data_models.register_user(userInfo) data_models.store_exinfo(user.user_id, userInfo) info = {'uid': user.user_id, 'origin': 'credibleweb'} self.set_cookies(info) self.redirect('/')
def getCWFriends(self): query = Friends.gql('WHERE user_id1 = :1', self.user.user_id) friend_ids = [friend.user_id2 for friend in query] CW_friends = [] for uid in friend_ids: f = User.get_by_key_name(uid) CW_friends.append(f) return CW_friends
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Rating.gql('WHERE user_id = :1 ORDER BY time DESC', id) ratings = [rating for rating in query] self.render('user_ratings.html', ratings = ratings, user = m_user, is_friend = self.is_friend(id))
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() query = Rating.gql('WHERE user_id = :1 ORDER BY time DESC', id) ratings = [rating for rating in query] self.render('user_ratings.html', ratings=ratings, user=m_user, is_friend=self.is_friend(id))
def get_or_create_user(message): message_from = message.from_user user, is_create = User.get_or_create( uid=message_from.id, username=message_from.username, last_name=message_from.last_name, first_name=message_from.first_name ) return user
def retrieve_user_info(self, request): info = {} info["uid"] = request.cookies.get("uid") if not info["uid"]: return info["origin"] = request.cookies.get("origin") info["origin_id"] = request.cookies.get("origin_id") self.user = User.get_by_key_name(info["uid"]) self.origin = info["origin"]
def retrieve_user_info(self, request): info = {} info['uid'] = request.cookies.get('uid') if not info['uid']: return info['origin'] = request.cookies.get('origin') info['origin_id'] = request.cookies.get('origin_id') self.user = User.get_by_key_name(info['uid']) self.origin = info['origin']
def get(self): email = self.request.get('email') if email: user = User.gql('WHERE email = :1', email).get() if user: self.response.out.write("exist") else: self.response.out.write('available') return self.render('register.html', reg_state=0, email='')
def csv_import(self): if not (os.path.isfile("data/courses.csv") and \ os.path.isfile("data/enrolments.csv") and \ os.path.isfile("data/passwords.csv")): return 0 #failure with open('data/courses.csv', 'r') as csv_in: reader = csv.reader(csv_in) for row in reader: if not Course.query.filter_by(name=row[0], session=row[1]).first(): course = Course(name=row[0], session=row[1]) db.session.add(course) db.session.commit() with open('data/enrolments.csv', 'r') as csv_in: reader = csv.reader(csv_in) for row in reader: course = Course.query.filter_by(name=row[1], session=row[2]).first() if course: c_id = course.id else: return 0 if not Enrolment.query.filter_by(u_id=row[0], c_id=c_id).first(): enrolment = Enrolment(u_id=row[0], c_id=c_id) db.session.add(enrolment) db.session.commit() with open('data/passwords.csv', 'r') as csv_in: reader = csv.reader(csv_in) for row in reader: u_type = 0 if row[2] == "student": u_type = 1 elif row[2] == "staff": u_type = 2 if not User.query.filter_by(id=row[0]).first() and u_type: user = User(id=row[0], username=row[0], password=generate_password_hash(row[1]), type=u_type) db.session.add(user) db.session.commit() return 1 #success
def login(): data = request.get_json() user = User.authenticate(**data) if not user: return jsonify({ 'message': 'Invalid credentials', 'authenticated': False }), 401 token = jwt.encode({ 'sub': user.email, 'iat':datetime.utcnow(), 'exp': datetime.utcnow() + timedelta(minutes=30)}, current_app.config['SECRET_KEY']) return jsonify({ 'token': token.decode('UTF-8') })
def getTWFriend(self, reload): client = memcache.Client() # friend_ids = client.get(self.user.user_id+'tw_fids') m_friends = TWFriends.gql('WHERE twitter_id = :1', self.user.twitter_id).get() friend_ids = m_friends.friends cursor = client.get(self.user.user_id + 'tw_cursor') # if not friend_ids or reload: if reload: # params = {'user_id':self.user.twitter_id, # 'cursor':'-1'} # response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params, # self.user.tw_access_token, # self.user.tw_token_secret) # friend_ids = response['ids'] cursor = 0 # client.add(self.user.user_id+'tw_fids', friend_ids) # client.add(self.user.user_id+'tw_cursor', cursor) if cursor >= len(friend_ids): return ({}, 0, m_friends.num_on_cw) if cursor + FRIENDS_EACH_BULK > len(friend_ids): next_part = friend_ids[cursor:] else: next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)] cursor += FRIENDS_EACH_BULK params = {'user_id': ','.join([str(id) for id in next_part])} response = call_api.twitter_api('GET', '/1.1/users/lookup.json', params, self.user.tw_access_token, self.user.tw_token_secret) TW_friends = [] current_cws = 0 for friend in response: tw_friend = { 'id': friend['id_str'], 'name': friend['name'], 'picture': friend['profile_image_url'] } if friend['id_str'] in friend_ids[:m_friends.num_on_cw]: tmpuser = User.gql('WHERE twitter_id = :1', friend['id_str']).get() tw_friend['uid'] = tmpuser.user_id TW_friends.insert(0, tw_friend) current_cws += 1 else: TW_friends.append(tw_friend) client.set(self.user.user_id + 'tw_cursor', cursor) return (TW_friends, current_cws, m_friends.num_on_cw)
def getFBFriend(self, reload): client = memcache.Client() # friend_ids = client.get(self.user.user_id+'fb_fids') m_friends = FBFriends.gql('WHERE facebook_id = :1', self.user.facebook_id).get() friend_ids = m_friends.friends cursor = client.get(self.user.user_id + 'fb_cursor') logging.info('reload: ' + str(reload)) logging.info('cursor: ' + str(cursor)) # if not friend_ids or reload: if reload: # params = {'fields':'friends', 'access_token': self.user.fb_access_token} # response = call_api.facebook_api('GET', '/me', params) # friend_ids = [friend['id'] for friend in response['friends']['data']] cursor = 0 # client.add(self.user.user_id+'fb_fids', friend_ids) # client.add(self.user.user_id+'fb_cursor', cursor) if cursor >= len(friend_ids): return ({}, 0, m_friends.num_on_cw) if cursor + FRIENDS_EACH_BULK > len(friend_ids): next_part = friend_ids[cursor:] else: next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)] cursor += FRIENDS_EACH_BULK params = { 'ids': ','.join([str(id) for id in next_part]), 'fields': 'id,name,picture' } response = call_api.facebook_api('GET', '/', params) FB_friends = [] current_cws = 0 for id, friendInfo in response.items(): fb_friend = { 'id': friendInfo['id'], 'name': friendInfo['name'], 'picture': friendInfo['picture']['data']['url'] } if id in friend_ids[:m_friends.num_on_cw]: tmpuser = User.gql('WHERE facebook_id = :1', id).get() fb_friend['uid'] = tmpuser.user_id FB_friends.insert(0, fb_friend) current_cws += 1 else: FB_friends.append(fb_friend) client.set(self.user.user_id + 'fb_cursor', cursor) return (FB_friends, current_cws, m_friends.num_on_cw)
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() cw_profile = ExUserInfo.gql('WHERE user_id = :1', m_user.user_id).get() fb_profile = None if m_user.facebook_id: fb_profile = FacebookProfile.gql('WHERE facebook_id = :1', m_user.facebook_id).get() tw_profile = None if m_user.twitter_id: tw_profile = TwitterProfile.gql('WHERE twitter_id = :1', m_user.twitter_id).get() self.render('user_profile.html', user = m_user, cw_profile = cw_profile, fb_profile = fb_profile, tw_profile = tw_profile, is_friend = self.is_friend(id))
def get(self): userInfo = self.twitter_auth('/twitterlogin') if userInfo: user = User.gql('WHERE twitter_id = :1', userInfo['twitter_id']).get() if not user: user = data_models.register_user(userInfo) data_models.store_exinfo(user.user_id, userInfo) data_models.update_twitter_info(user, userInfo) data_models.update_twitter_friends(user, userInfo) else: data_models.update_twitter_info(user, userInfo) data_models.update_twitter_friends(user, userInfo) info = {'uid':user.user_id, 'origin':'twitter', 'origin_id':userInfo['twitter_id']} self.set_cookies(info) self.redirect('/')
def get(self, id): m_user = User.gql('WHERE user_id = :1', id).get() cw_profile = ExUserInfo.gql('WHERE user_id = :1', m_user.user_id).get() fb_profile = None if m_user.facebook_id: fb_profile = FacebookProfile.gql('WHERE facebook_id = :1', m_user.facebook_id).get() tw_profile = None if m_user.twitter_id: tw_profile = TwitterProfile.gql('WHERE twitter_id = :1', m_user.twitter_id).get() self.render('user_profile.html', user=m_user, cw_profile=cw_profile, fb_profile=fb_profile, tw_profile=tw_profile, is_friend=self.is_friend(id))
def getTWFriend(self, reload): client = memcache.Client() # friend_ids = client.get(self.user.user_id+'tw_fids') m_friends = TWFriends.gql('WHERE twitter_id = :1', self.user.twitter_id).get() friend_ids = m_friends.friends cursor = client.get(self.user.user_id+'tw_cursor') # if not friend_ids or reload: if reload: # params = {'user_id':self.user.twitter_id, # 'cursor':'-1'} # response = call_api.twitter_api('GET', '/1.1/friends/ids.json', params, # self.user.tw_access_token, # self.user.tw_token_secret) # friend_ids = response['ids'] cursor = 0 # client.add(self.user.user_id+'tw_fids', friend_ids) # client.add(self.user.user_id+'tw_cursor', cursor) if cursor >= len(friend_ids): return ({}, 0, m_friends.num_on_cw) if cursor + FRIENDS_EACH_BULK > len(friend_ids): next_part = friend_ids[cursor:] else: next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)] cursor += FRIENDS_EACH_BULK params = {'user_id':','.join([str(id) for id in next_part])} response = call_api.twitter_api('GET', '/1.1/users/lookup.json', params, self.user.tw_access_token, self.user.tw_token_secret) TW_friends = [] current_cws = 0 for friend in response: tw_friend = {'id':friend['id_str'], 'name':friend['name'], 'picture':friend['profile_image_url']} if friend['id_str'] in friend_ids[:m_friends.num_on_cw]: tmpuser = User.gql('WHERE twitter_id = :1', friend['id_str']).get() tw_friend['uid'] = tmpuser.user_id TW_friends.insert(0, tw_friend) current_cws += 1 else: TW_friends.append(tw_friend) client.set(self.user.user_id+'tw_cursor', cursor) return (TW_friends, current_cws, m_friends.num_on_cw)
def search_user_hint(self, keyword): keyword = keyword.lower() query = User.all() results = query.fetch(limit=100) hint = [] number = 0 for tmpuser in results: if tmpuser.user_id == self.user.user_id: continue if tmpuser.realname.lower().find(keyword) >= 0: name = tmpuser.realname else: continue hint.append(tmpuser) number += 1 if number >= 4: break return hint
def post(self): email = self.request.get('email') password = self.request.get('password') user = User.gql('WHERE email = :1', email).get() if not user: error = "User doesn't exist!" self.render('welcome.html', login_error = error) return if user.password != hashlib.sha1(password).hexdigest(): error = "Wrong Password!" self.render('welcome.html', login_error = error) return info = {'uid':user.user_id, 'origin':'credibleweb'} self.set_cookies(info) self.redirect('/')
def search_user_hint(self, keyword): keyword = keyword.lower() query = User.all() results = query.fetch(limit=100) hint = [] number = 0; for tmpuser in results: if tmpuser.user_id == self.user.user_id: continue if tmpuser.realname.lower().find(keyword) >= 0: name = tmpuser.realname else: continue hint.append(tmpuser) number += 1 if number >= 4: break return hint
def getFBFriend(self, reload): client = memcache.Client() # friend_ids = client.get(self.user.user_id+'fb_fids') m_friends = FBFriends.gql('WHERE facebook_id = :1', self.user.facebook_id).get() friend_ids = m_friends.friends cursor = client.get(self.user.user_id+'fb_cursor') logging.info('reload: '+str(reload)) logging.info('cursor: '+str(cursor)) # if not friend_ids or reload: if reload: # params = {'fields':'friends', 'access_token': self.user.fb_access_token} # response = call_api.facebook_api('GET', '/me', params) # friend_ids = [friend['id'] for friend in response['friends']['data']] cursor = 0 # client.add(self.user.user_id+'fb_fids', friend_ids) # client.add(self.user.user_id+'fb_cursor', cursor) if cursor >= len(friend_ids): return ({}, 0, m_friends.num_on_cw) if cursor + FRIENDS_EACH_BULK > len(friend_ids): next_part = friend_ids[cursor:] else: next_part = friend_ids[cursor:(cursor + FRIENDS_EACH_BULK)] cursor += FRIENDS_EACH_BULK params = {'ids':','.join([str(id) for id in next_part]), 'fields':'id,name,picture'} response = call_api.facebook_api('GET', '/', params) FB_friends = [] current_cws = 0 for id, friendInfo in response.items(): fb_friend = {'id':friendInfo['id'], 'name':friendInfo['name'], 'picture':friendInfo['picture']['data']['url']} if id in friend_ids[:m_friends.num_on_cw]: tmpuser = User.gql('WHERE facebook_id = :1', id).get() fb_friend['uid'] = tmpuser.user_id FB_friends.insert(0, fb_friend) current_cws += 1 else: FB_friends.append(fb_friend) client.set(self.user.user_id+'fb_cursor', cursor) return (FB_friends, current_cws, m_friends.num_on_cw)
def create_user(self, uid, username, password, type): #check parameters valid if password.isspace() or password == "" or username.isspace( ) or username == "": return 0 #failure username and password can't be blank (space) if User.query.filter_by(username=username).first(): return 0 #failure: user with same username already exists if User.query.filter_by(id=uid).first(): return 0 #failure: user with same id already exists if type > 4 or type < 1: return 0 #failure: incorrect type newU = User(id=uid, username=str.lower(username), password=generate_password_hash(password), type=type) db.session.add(newU) db.session.commit() return 1 #success
def search_user(self, keyword): keyword = keyword.lower() query1 = db.GqlQuery('SELECT user_id2 FROM Friends WHERE user_id1 = :1', self.user.user_id) friends = [friend.user_id2 for friend in query1] query2 = PendingRequest.gql('WHERE sender_id = :1', self.user.user_id) pending_uids = [item.receiver_id for item in query2] query3 = User.all() results = [] for tmpuser in query3: if tmpuser.user_id == self.user.user_id: continue if tmpuser.realname.lower().find(keyword) < 0: continue is_friend = -1 if tmpuser.user_id in pending_uids: is_friend = 0 if tmpuser.user_id in friends: is_friend = 1 results.append({'user':tmpuser, 'is_friend':is_friend}) return results
def search_user(self, keyword): keyword = keyword.lower() query1 = db.GqlQuery( 'SELECT user_id2 FROM Friends WHERE user_id1 = :1', self.user.user_id) friends = [friend.user_id2 for friend in query1] query2 = PendingRequest.gql('WHERE sender_id = :1', self.user.user_id) pending_uids = [item.receiver_id for item in query2] query3 = User.all() results = [] for tmpuser in query3: if tmpuser.user_id == self.user.user_id: continue if tmpuser.realname.lower().find(keyword) < 0: continue is_friend = -1 if tmpuser.user_id in pending_uids: is_friend = 0 if tmpuser.user_id in friends: is_friend = 1 results.append({'user': tmpuser, 'is_friend': is_friend}) return results
def register(): data = request.get_json() user = User(**data) db.session.add(user) db.session.commit() return jsonify(user.to_dict()), 201
def get_picture_by_id(uid): user = User.gql("WHERE user_id = :1", uid).get() return user.picture
def get_uid_by_fbid(fbid): user = User.gql("WHERE facebook_id = :1", fbid).get() return user.user_id
def get_name_by_id(id): tmpUser = User.gql("WHERE user_id = :1", id).get() return tmpUser.realname
def get_picture_by_id(uid): user = User.gql('WHERE user_id = :1', uid).get() return user.picture
def get_uid_by_fbid(fbid): user = User.gql('WHERE facebook_id = :1', fbid).get() return user.user_id
def get_name_by_id(id): tmpUser = User.gql('WHERE user_id = :1', id).get() return tmpUser.realname