示例#1
0
    def __init__(self,
                 num_topics,
                 type="R",
                 explore_val=0,
                 seen_threshold=0,
                 sigval_b=0,
                 is_profit=False):

        model = TopicModel("topic_modeling/tweets.csv")
        model.getTopStopWords(num_topics)

        self.topics = model.topStopwords

        self.users = Users(self.topics,
                           type,
                           explore_val=explore_val,
                           seen_threshold=seen_threshold,
                           sigval_b=sigval_b)

        self.tweets = Tweets()

        self.tweets.add_tweets()

        self.recommender = RecommenderSystem()

        profits = np.random.random(num_topics)
        if is_profit:
            self.profit = profits
        else:
            self.profit = np.ones(num_topics)
示例#2
0
    def post(self):
        parser.add_argument('username',
                            help='This field cannot be blank',
                            required=True)
        parser.add_argument('password',
                            help='Please enter at least 6 characters',
                            required=True)
        parser.add_argument('email')
        parser.add_argument('mobile_number')
        parser.add_argument('title')
        parser.add_argument('name')

        data = parser.parse_args()
        profile_rating = UserHelper.calulateUserRating()
        new_user = Users(username=data['username'],
                         password=bcrypt.hashpw(
                             data['password'].encode('utf-8'),
                             bcrypt.gensalt()),
                         email=data['email'],
                         mobile_number=data['mobile_number'],
                         title=data['title'],
                         name=data['name'],
                         profile_completness=1,
                         profile_rating=profile_rating)

        try:
            new_user.save()
            return {
                'message': 'User {} was created'.format(data['username'])
            }, 200
        except Exception as ex:
            template = "{0}:{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            return {'error': message}, 500
示例#3
0
 def process(self, request, session):
     try:
         if session['user_login']:
             return redirect('/main')
     except KeyError:
         pass
     if (request.method == 'POST'):
         keys = [
             'email', 'fname', 'lname', 'pass', 'rpass', 'gender', 'ph',
             'add', 'city'
         ]
         _signup_parameters = {x: request.values.get(x) for x in keys}
         validateError = self.__validate(_signup_parameters)
         userObj = Users()
         if validateError == None:
             if (userObj.find({
                     'email': _signup_parameters['email']
             }).count() > 0):
                 return render_template('signup.html',
                                        warn={
                                            'warning': True,
                                            'msg':
                                            "Email Address Already Exist"
                                        })
             userObj.insert(_signup_parameters)
             #session['user_login']=_signup_parameters['email']
             return render_template('signupdone.html')
         else:
             return render_template('signup.html',
                                    warn={
                                        'warning': True,
                                        'msg': 'validateError'
                                    })
     else:
         return render_template('signup.html', warn={'warning': False})
示例#4
0
 def delete(self, user_id=None):
     """データ削除."""
     if not user_id:
         return ({'code': 404, 'message': 'no target data'}, 404)
     try:
         Users_DB.delete({'user_id': user_id})
     except NoResultFound:
         return ({'code': 404, 'message': 'no target data'}, 404)
     return {'code': 200, 'message': 'ok'}
示例#5
0
def seed_db():
    from models.Accounts import Accounts
    from models.Users import Users
    from faker import Faker
    from main import bcrypt
    import random

    faker = Faker()
    accounts = []

    for i in range(10):
        account = Accounts()
        account.email = f"test{i}@test.com"
        account.password = bcrypt.generate_password_hash("123456").decode(
            "utf-8")
        db.session.add(account)
        accounts.append(account)
    db.session.commit()

    for i in range(10):
        user = Users()
        user.username = faker.name()
        user.fname = faker.first_name()
        user.lname = faker.last_name()
        user.profile_pic = faker.text()
        user.account_active = faker.boolean()
        user.account_id = i + 1
        db.session.add(user)

    db.session.commit()
    print("Tables seeded")
示例#6
0
    def post(self, user_id=None):
        """データ更新."""
        if not user_id:
            return ({'code': 404, 'message': 'no target data'}, 404)
        j_data = request.json
        try:
            upd_data = {}
            if j_data.get('user_name'):
                upd_data['user_name'] = j_data.get('user_name')
            if j_data.get('group_id'):
                upd_data['group_id'] = j_data.get('group_id')

            Users_DB.update({'user_id': user_id}, upd_data)
        except NoResultFound:
            return ({'code': 404, 'message': 'no target data'}, 404)
        return {'code': 200, 'message': 'ok'}
示例#7
0
def create():
    user = Users()
    home = HomeControllers()
    if request.method == 'GET':
        return str(user.query.first().name)
    elif request.method == 'POST':
        return home.create()
示例#8
0
 def get_user_object_from_user_id(user_id):
     return json.dumps(
         Users.query(Users.key == ndb.Key(urlsafe=user_id)).get(projection=[
             Users.slug, Users.last_name, Users.first_name,
             Users.firebase_uid, Users.email
         ]).to_dict(),
         default=str)
示例#9
0
 def post(self, userId):
     parser.add_argument("general_question_answers",
                         action="append",
                         required=True)
     data = parser.parse_args()
     try:
         print(data)
         currentUser = Users.objects(id=userId).first()
         print(currentUser)
         if not currentUser:
             return {'error': 'User doesn\'t exist'}, 404
         profile_rating = UserHelper.calulateUserRating(currentUser, 1)
         updated_user = currentUser.update(
             general_question_answers=data['general_question_answers'],
             profile_completness=currentUser.profile_completness + 1,
             profile_rating=profile_rating)
         return {
             'message':
             'general question answers has been added for {}'.format(
                 currentUser['username'])
         }, 200
     except Exception as ex:
         print(ex)
         template = "{0}:{1!r}"
         message = template.format(type(ex).__name__, ex.args)
         return {'error': message}, 500
示例#10
0
    def put(self, userId):
        parser.add_argument('duration_of_stay_at_address', required=True)
        parser.add_argument('profile_picture', required=True)
        parser.add_argument('postcode', required=True)
        parser.add_argument('current_address', required=True)
        parser.add_argument('home_number', required=True)
        parser.add_argument('gender', required=True)
        parser.add_argument('nationality', required=True)
        parser.add_argument('date_of_birth', required=True)

        data = parser.parse_args()
        try:
            currentUser = Users.objects(id=userId).first()
            if not currentUser:
                return {'error': 'User doesn\'t exist'}, 404
            currentUser.personal_details.update(
                duration_of_stay_at_address=data[
                    'duration_of_stay_at_address'],
                postcode=data['postcode'],
                current_address=data['current_address'],
                home_number=data['home_number'],
                gender=data['gender'],
                nationality=data['nationality'],
                date_of_birth=data['date_of_birth'],
            )
            return {
                'message':
                '{}`s personal details have been updated'.format(
                    currentUser['username'])
            }, 200
        except Exception as ex:
            print(ex)
            template = "{0}:{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            return {'error': message}, 500
示例#11
0
def authenticate():
    request = json.loads(flaskRequest.data)

    user = Users.objects(username=request['username']).first()

    if not user:
        return 'Wrong username. Try again.', 400

    hashProvider = HashProvider()
    passwordMatch = hashProvider.compareHashs(request['password'],
                                              user['password'])

    if not passwordMatch:
        return 'Wrong password. Try again.', 400

    tokenExists = Tokens.objects(user=user['id']).first()

    if (tokenExists):
        tokenExists.delete()

    token = Tokens(token=f'{uuid4()}',
                   createdAt=f'{dt.now()}',
                   user=user['id'])
    token.save()

    return jsonify({"token": token["token"], "user": user})
示例#12
0
    def put(self, userId):
        parser.add_argument("fullname", required=True)
        parser.add_argument("contact_number", required=True)
        parser.add_argument("relation", required=True)

        data = parser.parse_args()
        try:
            currentUser = Users.objects(id=userId).first()
            if not currentUser:
                return {'error': 'User doesn\'t exist'}, 404
            print(currentUser)
            currentUser.emergency_contact_details.update(
                fullname=data['fullname'],
                contact_number=data['contact_number'],
                relation=data['relation'])
            return {
                'message':
                '{} emergency contact has been updated'.format(
                    currentUser['username'])
            }, 200
        except Exception as ex:
            print(ex)
            template = "{0}:{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            return {'error': message}, 500
示例#13
0
def signup():

    if request.method == 'POST':

        FN = request.form['FN']
        LN = request.form['LN']
        PH = request.form['PH']
        EM = request.form['EM']
        PW = request.form['PW']
        CPW = request.form['CPW']

        if PW == CPW:

            new_user = Users(Fname=FN,
                             Lname=LN,
                             Phone=PH,
                             Email=EM,
                             UPassword=PW)
            session.add(new_user)
            session.commit()

        else:

            print("Passwords don't match!")
            return

    return render_template('login.html')
示例#14
0
    def post(self):
        parser.add_argument('username',
                            help='This field cannot be blank',
                            required=True)
        parser.add_argument('password',
                            help='Please enter at least 6 characters',
                            required=True)
        data = parser.parse_args()

        user = Users.objects(username=data['username']).first()
        if not user:
            return {
                'error': 'User {} doesn\'t exist'.format(data['username'])
            }, 404
        user = json.loads(user.to_json())

        if bcrypt.checkpw(data['password'].encode('utf-8'),
                          user["password"].encode('utf-8')):
            access_token = create_access_token(identity=data['username'])
            refresh_token = create_refresh_token(identity=data['username'])
            return {
                'message': 'Logged in as {}'.format(user["username"]),
                'access_token': access_token,
                'refresh_token': refresh_token
            }, 200
        else:
            return {'error': 'Unauthorized'}, 401

        return data
示例#15
0
 def delete_data(self):
     id = request.form['id']
     users = Users()
     usr = users.query.filter_by(id=id).first()
     db.session.delete(usr)
     db.session.commit()
     return redirect('/')
示例#16
0
def uploadUserPicture():
    userAuthenticated, userData = isAuthenticated(
        flaskRequest.headers['authorization'])

    if userAuthenticated:
        user = Users.objects(id=userData['id']).first()

        if not user:
            return "No user was found with that ID.", 400

        s3 = S3()
        if user['imageKey'] != 'standard':
            print(user["imageKey"])
            print(type(user["imageKey"]))
            s3.deleteFile(user["imageKey"])

        image = flaskRequest.files['image']
        hashedImageName = f'{uuid4()}-{image.filename.replace(" ", "").replace("(", "").replace(")", "")}'
        imageKey = f'avatars/{hashedImageName}'
        tmpPath = f'{rootDir}/tmp/{hashedImageName}'
        image.save(tmpPath)

        s3.uploadFile(tmpPath, f'avatars/{hashedImageName}')
        os.remove(tmpPath)

        user['imageKey'] = imageKey
        user['imageUrl'] = f'{bucketURL}/avatars/{hashedImageName}'

        user.save()

        return jsonify({"data": user})
    else:
        return "Token missing or expired. Please login again.", 403
示例#17
0
    def post(self, userId):
        parser.add_argument("fullname", required=True)
        parser.add_argument("contact_number", required=True)
        parser.add_argument("relation", required=True)

        data = parser.parse_args()
        try:
            currentUser = Users.objects(id=userId).first()
            if not currentUser:
                return {'error': 'User doesn\'t exist'}, 404
            print(currentUser)
            emergencyContact = EmergencyContact(
                fullname=data['fullname'],
                contact_number=data['contact_number'],
                relation=data['relation'])

            emergency_contact = emergencyContact.save()
            profile_rating = UserHelper.calulateUserRating(currentUser, 1)
            updated_user = currentUser.update(
                emergency_contact_details=emergency_contact,
                profile_completness=currentUser.profile_completness + 1,
                profile_rating=profile_rating)
            print(updated_user)
            return {
                'message':
                '{} emergency contact has been added'.format(
                    currentUser['username'])
            }, 200
        except Exception as ex:
            print(ex)
            template = "{0}:{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            return {'error': message}, 500
示例#18
0
    def dispatch(self):
        # Get a session store for this request.
        self.session_store = sessions.get_store(request=self.request)
        cookie = self.request.cookies.get('remember_me2')
        if not self.session.get("email"):
            if cookie:
                chashed, cemail, key = cookie.split("&")
                result = self.check_password(chashed, cemail)
                if result:
                    query = Users.query(Users.email == cemail)
                    user = query.get()
                    if user:
                        self.set_profile_image(user.key.urlsafe())
                        check_cookie = LoginHistory.query(
                            ndb.AND(LoginHistory.user_id == user.key.urlsafe(),
                                    LoginHistory.cookie_key == key),
                            ancestor=HISTORY_PARENT_KEY).get()
                        if check_cookie:
                            self.session['email'] = cemail
                            self.session['name'] = user.first_name.title(
                            ) + " " + user.last_name.title()
                            self.session['first_name'] = user.first_name.title(
                            )
                            self.session['user_id'] = user.key.urlsafe()
                            self.session['register_type'] = user.register_type
                            self.session[
                                'Profile_url'] = self.get_profile_image()
                            self.session['user_type'] = user.user_type
                            check_cookie.last_active = time.time()
                            check_cookie.put()

        unauthorized_routes = [
            "/", "/log-in", "/sign-up", "/help", "/teach", "/social-login",
            "/reset-password", "/reset-password-email", "/search",
            "/map-listings", "/card-listings", "/listing", "/delete-index"
        ]
        # print(self.request.path)
        if self.request.path in unauthorized_routes:
            # print(self.request.path)
            pass
        elif "/listing" in self.request.path:
            # print(self.request.path)
            pass
        else:
            if self.session.get("user_id"):
                chashed, cemail, key = cookie.split("&")
                session_check = LoginHistory.query(
                    LoginHistory.cookie_key == key).get()
                if not session_check:
                    self.redirect('/logout')
            if not self.session.get("email"):
                self.redirect('/log-in')
        try:
            # Dispatch the request.
            webapp2.RequestHandler.dispatch(self)

        finally:
            # Save all sessions.
            self.session_store.save_sessions(self.response)
示例#19
0
 def get(self, user_id=None):
     """データ取得."""
     if user_id:
         conditions = {'user_id': user_id}
     else:
         conditions = {}
     user_data = Users_DB.selects(conditions)
     return {'code': 200, 'user_data': user_data}
示例#20
0
 def post(self):
     users = Users.Users().query(Users.Users.email == self.session['email']).get()
     users.firstName = self.request.get('firstname')
     users.lastName = self.request.get('lastname')
     users.password = self.request.get('password')
     users.email = self.request.get('email')
     users.put()
     self.redirect('/home')
示例#21
0
 def post(self):
     new_user = Users.Users()
     new_user.firstName = self.request.get('firstname')
     new_user.lastName = self.request.get('lastname')
     new_user.email = self.request.get('email')
     new_user.password = self.request.get('password')
     new_user.put()
     self.redirect('/')
示例#22
0
 def update(self, id):
     users = Users()
     usr = users.query.filter_by(id=id).first()
     usr.name = request.form['name']
     usr.username = request.form['username']
     usr.password = request.form['password']
     db.session.commit()
     return redirect('/')
示例#23
0
def auth_register():
    user_fields = user_schema.load(request.json)

    user = Users.query.filter_by(email=user_fields["email"]).first()

    if user:
        return abort(400, description="User already")

    user = Users()
    user.email = user_fields["email"]
    user.password = bcrypt.generate_password_hash(
        user_fields["password"]).decode("utf-8")

    db.session.add(user)
    db.session.commit()

    return jsonify(user_schema.dump(user))
示例#24
0
def register():
    if request.method == 'GET':
        return render_template('register.html')

    user = Users(request.form['username'], request.form['password'], request.form['email'])
    db.session.add(user)
    db.session.commit()

    return redirect(url_for('login'))
示例#25
0
    def create(self):
        username = request.form['username']
        password = request.form['password']
        name = request.form['name']

        users = Users(name=name, username=username, password=password)
        db.session.add(users)
        db.session.commit()
        return redirect('/')
示例#26
0
    def test_get_predict(self):
        from models.Users import Users
        from predict.get_predict import get_predict

        user = Users.get()
        res = get_predict(user, n=10)

        self.assertIsInstance(res, list)
        self.assertEqual(len(res), 10)
        self.assertIsInstance(res[0], int)
示例#27
0
def seed_db():
    from models.Profiles import Profiles
    from faker import Faker
    from models.Users import Users
    from main import bcrypt
    from models.Post import Post
    import random

    faker = Faker()
    profiles = []
    true_or_false = [True, False]
    posts = []

    for i in range(10):
        user = Users()
        user.email = f"test{i}@test.com"
        user.password = bcrypt.generate_password_hash("123456").decode("utf-8")
        db.session.add(user)
        #accounts.append(user)
    db.session.commit()

    for i in range(10):
        profile = Profiles()
        profile.username = faker.name()
        profile.fname = faker.first_name()
        profile.lname = faker.last_name()
        profile.account_active = faker.boolean()
        profile.user_id = i + 1

        db.session.add(profile)
        profiles.append(profile)
    db.session.commit()

    for i in range(30):
        new_post = Post()
        new_post.post_name = faker.name()
        new_post.post_description = faker.catch_phrase()
        new_post.profile_id = random.choice(profiles).profileid
        posts.append(new_post)
        db.session.add(new_post)
    db.session.commit()

    print("Tables seeded")
示例#28
0
    def put(self, user_id=None):
        """データ登録."""
        if user_id:
            return ({'code': 400, 'message': 'can not set user_id'}, 400)
        j_data = request.json
        must_keys = ['user_name', 'group_id']
        for key in must_keys:
            if key not in j_data.keys():
                return ({
                    'code': 400,
                    'message': '{} must set in json'.format(key)
                }, 400)

        ins_data = {
            'user_id': j_data.get('user_id', None),
            'user_name': j_data.get('user_name'),
            'group_id': j_data.get('group_id'),
        }
        Users_DB.inserts([ins_data])
        return {'code': 200, 'message': 'ok'}
示例#29
0
def add_user():
    userInfo = session.get('userProfile', 'not set')
    if userInfo['role'] !='admin':
        abort(401)
    name = request.form.get('name', '')
    email = request.form.get('email', '')
    role = request.form.get('role', '')
    create_date = DATE
    
    new_id = db.session.query(func.max(Users.users_id))
    if new_id[0][0] == None:
        new_id[0][0]=0

    user = Users(new_id[0][0]+1,email,name,name,role,create_date)
    try:
        user.insert()
    except:
        print(sys.exc_info())
        abort(500)
    return redirect(url_for('get_all_users'))
示例#30
0
    def edit(self, id):
        users = Users()
        usr = users.query.filter_by(id=id).first()
        data = {
            'username': usr.username,
            'password': usr.password,
            'name': usr.name,
            'id': usr.id
        }

        return render_template('page/home.html', data=data)