def create_recipe(**kwargs): request_dict = request.get_json() recipe_info = {} response_dict = {'recipe': {}} for field in Recipe.get_fields(): if request_dict.get(field, None) != None: recipe_info[field] = request_dict.get(field) try: recipe = Recipe.create(**recipe_info) kwargs['user'].profile.add_to_relationship('recipes', recipe) response_dict['recipe'] = recipe.to_dict(excludes=[ 'profile', 'profile_id', 'price', 'ingredients', 'required_items', 'image_urls' ]) for field, value in recipe.get_formatted_info(): response_dict['recipe'][field] = value response_dict['status'] = 200 response_dict['message'] = "Successfully created recipe" return jsonify(response_dict), 201 except AssertionError as e: response_dict['status'] = 400 response_dict['message'] = "%s" % (e) # Validation problem return jsonify(response_dict), 400
def hand_create_recipe_post(): if form_missing_field(request.form): # TODO: Set error message return redirect("/") # Store recipe recipe = Recipe.create( name=request.form['name'], grain=request.form['grain'], grain_temp=request.form['grain_temp'], water=request.form['water'], mash_temp=request.form['mash_temp'], mash_time=request.form['mash_time'], description=request.form['description'] ) recipe.save() return redirect("/")
def seed_database(debug=False): """ WARNING: This will NOT create the tables for you if you dropped your entire database. You must re-create the database then run 'Base.metadata.create_all(<engine>)' to create your tables then you can run this without an issue! IMPORTANT: You need to import Base from models.models or else SQLAlchemy won't know about the models and therefore will NOT create the proper tables in your database which will cause this function to fail. Create data in the database by randomly generating values. Once this function is complete, it will write data that is likely to be used in testing to the 'seeded_objects_info.txt' file with separators and linebreaks to make it easier to read. When a user instance is created, its subsequent Profile is created as well and then they are associated with one another. After the user and profile objects are created, create some recipe objects to be associated with the profile object. Leave some profile objects without any recipes for filter testing. """ if debug: # If something happened during object creation # we'll get a UNIQUE CONSTRAINT FAILED error # when trying again so, delete all the records # in the database and try to create the objects. # so we can preserve the existing tables from models.base_model import Base from db import engine for tbl in reversed(Base.metadata.sorted_tables): engine.execute(tbl.delete()) # Create how ever many user and profile objects the user defined user_dicts = [ { 'street_address': "777 Brockton Avenue", 'city': "Abington", "state_or_province": "Massachusetts", 'country': "United States", 'zip_code': "01001", 'email': "*****@*****.**", 'password': "******", }, { 'street_address': "30 Memorial Drive", 'city': "Avon", 'state_or_province': "Massachusetts", 'country': "United States", 'zip_code': "20194", 'email': "*****@*****.**", 'password': "******" }, { 'street_address': "250 Hartford Avenue", 'city': "Toronto", 'state_or_province': "Ontario", 'country': "Canada", 'zip_code': "A1A 1A1", 'email': "*****@*****.**", 'password': "******" }, ] profile_dicts = [{ 'name': "Giuseppe", "is_chef": True, "about_me": "I love to cook and have been doing so for 15 years. My specialty is Italian food", "location": "Massachusettes, United States", 'profile_image': "https://images.unsplash.com/photo-1600565193348-f74bd3c7ccdf?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80", 'favourite_recipe': "Spicy Pork Tenderloin with Apples and Sweet Potatoes", 'favourite_cuisine': "italian,", }, { 'name': "Mario", "is_chef": False, 'about_me': "I love food, if I could eat every hour of the day I would.", "location": "Massachusettes, United States", 'profile_image': "https://images.unsplash.com/photo-1521341057461-6eb5f40b07ab?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=634&q=80", 'favourite_cuisine': "thai,", }, { 'name': "Tessa", "is_chef": False, 'about_me': "I'm not a chef but wish I was, I couldn't boil noodles without burning them!", "location": "Ontario, Canada", 'profile_image': "https://images.unsplash.com/photo-1505999407077-7937810b98ae?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1188&q=80", 'favourite_cuisine': "Mexican," }] recipe_dicts = [ { 'name': 'Spicy Pork Tenderloin with Apples and Sweet Potatoes', 'description': "A spicy pork tenderloin with delicious green apples and sweet potatoes", 'available': True, 'cuisine': "french", 'price': 1000, 'ingredients': "Pork Tenderloin,Green Apples,Sweet Potatoes,Rosemary", 'required_items': "Dinner Plate, Kitchen Table, Oven", 'image_urls': "https://images.unsplash.com/photo-1598514982205-f36b96d1e8d4?ixid=MXwxMjA3fDB8MHxzZWFyY2h8M3x8cG9yayUyMHRlbmRlcmxvaW58ZW58MHx8MHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=60https://images.unsplash.com/photo-1598514982205-f36b96d1e8d4?ixid=MXwxMjA3fDB8MHxzZWFyY2h8M3x8cG9yayUyMHRlbmRlcmxvaW58ZW58MHx8MHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=60," }, { 'name': "Al's Burmese Chicken Curry", 'description': "Chicken", 'available': False, 'cuisine': "indian", 'price': 1000, 'ingredients': "Pork Tenderloin,Green Apples,Sweet Potatoes,Rosemary", 'required_items': "Dinner Plate,Kitchen Table,Oven", 'image_urls': "https://images.unsplash.com/photo-1501200291289-c5a76c232e5f?ixlib=rb-1.2.1&ixid=MXwxMjA3fDB8MHxleHBsb3JlLWZlZWR8M3x8fGVufDB8fHw%3D&auto=format&fit=crop&w=1000&q=60," }, { 'name': "Sweet Potato and Venison Shepherd's Pie", 'description': "Shepherds Pie stuffed with sweet potatoes and venison, cooked to golden perfection", 'available': True, 'cuisine': "french", 'price': 2000, 'ingredients': "Venison,Sweet potatoes,Gravy", 'required_items': "Dinner Plate,Oven", 'image_urls': "https://images.unsplash.com/photo-1600626336264-60ef2a55bd33?ixid=MXwxMjA3fDB8MHxzZWFyY2h8NHx8c2hlcGhlcmRzJTIwcGllfGVufDB8fDB8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1000&q=60," }, { 'name': "Gemelli Pasta with Roasted Pumpkin and Pancetta", "description": "Delicious pasta smothered in Pancetta with Roasted Pumpkin", 'available': False, 'cuisine': "italian", 'price': 1500, 'ingredients': "Roasted Pumpkin,Pasta,Pancetta", 'required_items': "Large Pot,Stove,Dinner Table", 'image_urls': "https://images.unsplash.com/photo-1579631542720-3a87824fff86?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=400&q=80," }, { 'name': "Beef Stroganoff with Ground Beef", 'description': "Beef stroganoff filled with ground beef, served with a delicious buttery dinner roll", 'available': True, 'cuisine': "turkish", 'price': 2500, 'ingredients': "Ground Beef,Brown Gravy,Wide Egg Noodles,", 'required_items': "Large Pot,Stove Top,Oven", 'image_urls': "https://images.unsplash.com/photo-1504669221159-56caf7b07f57?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=1050&q=80,", }, ] last_user = None for index in range(len(user_dicts)): print(index) new_user = User.create(**user_dicts[index]) # Create profile new_profile = Profile() new_profile = new_profile.create(**profile_dicts[index]) # Assign the new profile to the new user new_user.assign_one_to_one('profile', new_profile) # If we have another user, create messages between the # last one and the new one if last_user != None: new_conversation = Conversation.create(**{ 'user_one': last_user, 'user_two': new_user }) # Create messages for the two users last_users_message = Message.create( **{ 'sender': last_user, 'content': "Hello %s how are you?" % (new_user.profile.name) }) new_users_message = Message.create( **{ 'sender': new_user, 'content': "I'm good %s how about you?" % (last_user.profile.name) }) # Add messages to the conversation new_conversation.add_to_relationship('messages', last_users_message) new_conversation.add_to_relationship('messages', new_users_message) # Create 5 recipes for each user/profile new_recipe = Recipe.create(**recipe_dicts[index]) # Add the new recipe to the One to Many field in the Profile model new_profile.add_to_relationship('recipes', new_recipe) last_user = new_user print_info(user_dicts, profile_dicts, recipe_dicts)