diff --git a/cookbook/integration/nextcloud_cookbook.py b/cookbook/integration/nextcloud_cookbook.py index 4357c509b..1520e9014 100644 --- a/cookbook/integration/nextcloud_cookbook.py +++ b/cookbook/integration/nextcloud_cookbook.py @@ -60,20 +60,20 @@ class NextcloudCookbook(Integration): step = Step.objects.create( instruction=s, space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients, ) - if not ingredients_added: - if len(recipe_json['description'].strip()) > 500: - step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction - ingredients_added = True - - ingredient_parser = IngredientParser(self.request, True) + ingredient_parser = IngredientParser(self.request, True) + if ingredients_added == False: for ingredient in recipe_json['recipeIngredient']: - amount, unit, food, note = ingredient_parser.parse(ingredient) - f = ingredient_parser.get_food(food) - u = ingredient_parser.get_unit(unit) - step.ingredients.add(Ingredient.objects.create( - food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space, - )) + ingredients_added = True + if ingredient.startswith('##'): + subheader = ingredient.replace('##', '', 1) + step.ingredients.add(Ingredient.objects.create(note=subheader, is_header=True, no_amount=True, space=self.request.space)) + else: + amount, unit, food, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(food) + u = ingredient_parser.get_unit(unit) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note, original_text=ingredient, space=self.request.space,)) recipe.steps.add(step) if 'nutrition' in recipe_json: diff --git a/cookbook/integration/plantoeat.py b/cookbook/integration/plantoeat.py index c4cc0f135..b69b63283 100644 --- a/cookbook/integration/plantoeat.py +++ b/cookbook/integration/plantoeat.py @@ -4,6 +4,7 @@ import requests import validators from cookbook.helper.ingredient_parser import IngredientParser +from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time from cookbook.integration.integration import Integration from cookbook.models import Ingredient, Keyword, Recipe, Step @@ -18,32 +19,38 @@ class Plantoeat(Integration): tags = None ingredients = [] directions = [] - description = '' + fields = {} for line in file.replace('\r', '').split('\n'): if line.strip() != '': if 'Title:' in line: - title = line.replace('Title:', '').replace('"', '').strip() + fields['name'] = line.replace('Title:', '').replace('"', '').strip() if 'Description:' in line: - description = line.replace('Description:', '').strip() - if 'Source:' in line or 'Serves:' in line or 'Prep Time:' in line or 'Cook Time:' in line: - directions.append(line.strip() + '\n') + fields['description'] = line.replace('Description:', '').strip() + if 'Serves:' in line: + fields['servings'] = parse_servings(line.replace('Serves:', '').strip()) + if 'Source:' in line: + fields['source_url'] = line.replace('Source:', '').strip() if 'Photo Url:' in line: image_url = line.replace('Photo Url:', '').strip() + if 'Prep Time:' in line: + fields['working_time'] = parse_time(line.replace('Prep Time:', '').strip()) + if 'Cook Time:' in line: + fields['waiting_time'] = parse_time(line.replace('Cook Time:', '').strip()) if 'Tags:' in line: tags = line.replace('Tags:', '').strip() - if ingredient_mode: - if len(line) > 2 and 'Instructions:' not in line: - ingredients.append(line.strip()) - if direction_mode: - if len(line) > 2: - directions.append(line.strip() + '\n') if 'Ingredients:' in line: ingredient_mode = True if 'Directions:' in line: ingredient_mode = False direction_mode = True + if ingredient_mode: + if len(line) > 2 and 'Ingredients:' not in line: + ingredients.append(line.strip()) + if direction_mode: + if len(line) > 2: + directions.append(line.strip() + '\n') - recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space) + recipe = Recipe.objects.create(**fields, created_by=self.request.user, internal=True, space=self.request.space) step = Step.objects.create( instruction='\n'.join(directions) + '\n\n', space=self.request.space, show_ingredients_table=self.request.user.userpreference.show_step_ingredients, diff --git a/cookbook/templates/base.html b/cookbook/templates/base.html index 494dea02e..9c25cd190 100644 --- a/cookbook/templates/base.html +++ b/cookbook/templates/base.html @@ -4,7 +4,7 @@ {% load custom_tags %} {% theme_values request as theme_values %} - +