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