diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index 5e412b253..89c4af010 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -16,6 +16,7 @@ from cookbook.models import Keyword class Integration: request = None keyword = None + files = None def __init__(self, request): """ @@ -80,6 +81,7 @@ class Integration: :return: HttpResponseRedirect to the recipe search showing all imported recipes """ try: + self.files = files for f in files: if '.zip' in f.name: import_zip = ZipFile(f.file) @@ -87,6 +89,7 @@ class Integration: if self.import_file_name_filter(z): recipe = self.get_recipe_from_file(BytesIO(import_zip.read(z.filename))) recipe.keywords.add(self.keyword) + import_zip.close() else: recipe = self.get_recipe_from_file(f.file) recipe.keywords.add(self.keyword) diff --git a/cookbook/integration/nextcloud_cookbook.py b/cookbook/integration/nextcloud_cookbook.py index 61909c872..872bb249a 100644 --- a/cookbook/integration/nextcloud_cookbook.py +++ b/cookbook/integration/nextcloud_cookbook.py @@ -25,7 +25,7 @@ class NextcloudCookbook(Integration): created_by=self.request.user, internal=True, servings=recipe_json['recipeYield']) - #TODO parse times (given in PT2H3M ) + # TODO parse times (given in PT2H3M ) ingredients_added = False for s in recipe_json['recipeInstructions']: @@ -44,6 +44,13 @@ class NextcloudCookbook(Integration): )) recipe.steps.add(step) + for f in self.files: + if '.zip' in f.name: + import_zip = ZipFile(f.file) + for z in import_zip.filelist: + if re.match(f'^Recipes/{recipe.name}/full.jpg$', z.filename): + self.import_recipe_image(recipe, BytesIO(import_zip.read(z.filename))) + return recipe def get_file_from_recipe(self, recipe):