Example #1
0
 def create(cls, session: Session, user: UserBaseCreate) -> Users:
     db_user = Users(**user.dict())
     db_user.password = Security.get_pwd_hash(user.password)
     session.add(db_user)
     session.commit()
     session.refresh(db_user)
     return db_user
def generate_test_users(filepath: str = 'resources/user_data.csv',
                        delimiter: str = '\t'):
    """
    Converts data in csv file to documents in user collection.
    Uses @mongo wrapper to connect via mongoengine during execution.
    Randomly generates fav_meals list and access__admin parameters.

    :param filepath:
    :param delimiter:
    :return:
    """
    with open(filepath, 'r') as file:
        data = csv.DictReader(file, delimiter=delimiter)

        for datum in data:
            try:
                user = Users(**datum, __auto_convert=True)
                # generate random admin access, password, and favorite meals
                user.access.admin = (randint(0, 1) == 1)
                user.fav_meals = get_random(Meals, randint(1, 5))
                user.password = user.name + str(randint(0, 9))

                user.save()
                print(
                    f"Added: {user.name} | {user.email} | {user.password} | Admin-{user.access.admin is True} => {user.id}"
                )
            except NotUniqueError:
                print(f'Invalid Entry: {user.email} is already taken.')
            except ValidationError:
                print(f'Validation Error: {user}')
Example #3
0
 def post():
     request_data = request.get_json()
     if request_data is None:
         data = Data(message='Bad request', status=400)
         return data.to_response()
     user = Users()
     try:
         user.username = request_data['username']
         user.password = request_data['password']
         password_check = request_data['password_check']
         if not user.verify_password(password_check):
             data = Data(message='Bad request', status=400)
             return data.to_response()
         user.email = request_data['email']
     except KeyError:
         data = Data(message='Bad request', status=400)
         return data.to_response()
     db.session.add(user)
     db.session.commit()
     return Data(message='Registered', status=201).to_response()