TandoorRecipes/cookbook/integration/default.py
2021-02-07 13:27:15 +01:00

44 lines
1.3 KiB
Python

import json
import os
from zipfile import ZipFile
from rest_framework.renderers import JSONRenderer
from cookbook.integration.integration import Integration
from cookbook.serializer import RecipeExportSerializer
class Default(Integration):
def do_export(self, recipes):
path = self.get_tmp_dir_path()
export_zip_obj = ZipFile(os.path.join(path, 'export.zip'), 'w')
for r in recipes:
if r.internal:
base_path = os.path.join(path, str(r.pk))
os.makedirs(base_path, exist_ok=True)
recipe_zip_obj = ZipFile(base_path + '.zip', 'w')
f = open(os.path.join(path, str(r.pk), 'recipe.json'), "w", encoding="utf-8")
f.write(self.get_export(r))
recipe_zip_obj.write(f.name)
recipe_zip_obj.write(r.image.path)
f.close()
recipe_zip_obj.close()
export_zip_obj.write(recipe_zip_obj.filename)
export_zip_obj.close()
return export_zip_obj.filename
def get_recipe(self, string):
data = json.loads(string)
return RecipeExportSerializer(data=data, context={'request': self.request})
def get_export(self, recipe):
export = RecipeExportSerializer(recipe).data
return JSONRenderer().render(export).decode("utf-8")