Ejemplo n.º 1
0
 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))
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
 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))
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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('/')
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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))
Ejemplo n.º 10
0
 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))
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
    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"]
Ejemplo n.º 14
0
    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']
Ejemplo n.º 15
0
 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='')
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
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') })
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
 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))
Ejemplo n.º 21
0
 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('/')
Ejemplo n.º 22
0
 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))
Ejemplo n.º 23
0
    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)
Ejemplo n.º 24
0
 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
Ejemplo n.º 25
0
    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('/')
Ejemplo n.º 26
0
 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
Ejemplo n.º 27
0
    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)
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
 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
Ejemplo n.º 30
0
 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
Ejemplo n.º 31
0
def register():
    data = request.get_json()
    user = User(**data)
    db.session.add(user)
    db.session.commit()
    return jsonify(user.to_dict()), 201
Ejemplo n.º 32
0
def get_picture_by_id(uid):
    user = User.gql("WHERE user_id = :1", uid).get()
    return user.picture
Ejemplo n.º 33
0
def get_uid_by_fbid(fbid):
    user = User.gql("WHERE facebook_id = :1", fbid).get()
    return user.user_id
Ejemplo n.º 34
0
def get_name_by_id(id):
    tmpUser = User.gql("WHERE user_id = :1", id).get()
    return tmpUser.realname
Ejemplo n.º 35
0
def get_picture_by_id(uid):
    user = User.gql('WHERE user_id = :1', uid).get()
    return user.picture
Ejemplo n.º 36
0
def get_uid_by_fbid(fbid):
    user = User.gql('WHERE facebook_id = :1', fbid).get()
    return user.user_id
Ejemplo n.º 37
0
def get_name_by_id(id):
    tmpUser = User.gql('WHERE user_id = :1', id).get()
    return tmpUser.realname