diff --git a/cookbook/forms.py b/cookbook/forms.py index 5cca6c40..d4b8c6e8 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -140,7 +140,7 @@ class ImportExportBase(forms.Form): NEXTCLOUD = 'NEXTCLOUD' MEALIE = 'MEALIE' CHOWDOWN = 'CHOWDOWN' - SAFRON = 'SAFRON' + SAFFRON = 'SAFFRON' CHEFTAP = 'CHEFTAP' PEPPERPLATE = 'PEPPERPLATE' RECIPEKEEPER = 'RECIPEKEEPER' @@ -157,7 +157,7 @@ class ImportExportBase(forms.Form): type = forms.ChoiceField(choices=( (DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), - (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFRON, 'Safron'), (CHEFTAP, 'ChefTap'), + (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFFRON, 'Saffron'), (CHEFTAP, 'ChefTap'), (PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'), (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), (RECIPEKEEPER, 'Recipe Keeper'), (PLANTOEAT, 'Plantoeat'), (COOKBOOKAPP, 'CookBookApp'), (COPYMETHAT, 'CopyMeThat'), (PDF, 'PDF'), diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index afa038db..e7b68140 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -262,6 +262,17 @@ class Integration: """ raise NotImplementedError('Method not implemented in integration') + + def get_files_from_recipes(self, recipes, cookie): + """ + Takes a list of recipe object and converts it to a array containing each file. + Each file is represented as an array [filename, data] where data is a string of the content of the file. + :param recipe: Recipe object that should be converted + :returns: + [[filename, data], ...] + """ + raise NotImplementedError('Method not implemented in integration') + @staticmethod def handle_exception(exception, log=None, message=''): if log: diff --git a/cookbook/integration/safron.py b/cookbook/integration/saffron.py similarity index 68% rename from cookbook/integration/safron.py rename to cookbook/integration/saffron.py index fa7a793e..16a93a0c 100644 --- a/cookbook/integration/safron.py +++ b/cookbook/integration/saffron.py @@ -5,7 +5,7 @@ from cookbook.integration.integration import Integration from cookbook.models import Recipe, Step, Ingredient -class Safron(Integration): +class Saffron(Integration): def get_recipe_from_file(self, file): ingredient_mode = False @@ -58,4 +58,39 @@ class Safron(Integration): return recipe def get_file_from_recipe(self, recipe): - raise NotImplementedError('Method not implemented in storage integration') + + data = "Title: "+recipe.name if recipe.name else ""+"\n" + data += "Description: "+recipe.description if recipe.description else ""+"\n" + data += "Source: \n" + data += "Original URL: \n" + data += "Yield: "+str(recipe.servings)+"\n" + data += "Cookbook: \n" + data += "Section: \n" + data += "Image: \n" + + recipeInstructions = [] + recipeIngredient = [] + for s in recipe.steps.all(): + if s.type != Step.TIME: + recipeInstructions.append(s.instruction) + + for i in s.ingredients.all(): + recipeIngredient.append(f'{float(i.amount)} {i.unit} {i.food}') + + data += "Ingredients: \n" + for ingredient in recipeIngredient: + data += ingredient+"\n" + + data += "Instructions: \n" + for instruction in recipeInstructions: + data += instruction+"\n" + + return recipe.name+'.txt', data + + def get_files_from_recipes(self, recipes, cookie): + files = [] + for r in recipes: + filename, data = self.get_file_from_recipe(r) + files.append([ filename, data ]) + + return files \ No newline at end of file diff --git a/cookbook/views/import_export.py b/cookbook/views/import_export.py index 28012efd..83a9e7c9 100644 --- a/cookbook/views/import_export.py +++ b/cookbook/views/import_export.py @@ -27,7 +27,7 @@ from cookbook.integration.recipekeeper import RecipeKeeper from cookbook.integration.recettetek import RecetteTek from cookbook.integration.recipesage import RecipeSage from cookbook.integration.rezkonv import RezKonv -from cookbook.integration.safron import Safron +from cookbook.integration.saffron import Saffron from cookbook.integration.pdfexport import PDFexport from cookbook.models import Recipe, ImportLog, UserPreference @@ -43,8 +43,8 @@ def get_integration(request, export_type): return Mealie(request, export_type) if export_type == ImportExportBase.CHOWDOWN: return Chowdown(request, export_type) - if export_type == ImportExportBase.SAFRON: - return Safron(request, export_type) + if export_type == ImportExportBase.SAFFRON: + return Saffron(request, export_type) if export_type == ImportExportBase.CHEFTAP: return ChefTap(request, export_type) if export_type == ImportExportBase.PEPPERPLATE: