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}')
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()