fix json direct import when wrapped in @graph

This commit is contained in:
smilerz 2021-03-19 13:23:55 -05:00
parent 58fc26904b
commit 45dba6fad2
2 changed files with 12 additions and 4 deletions

View File

@ -214,7 +214,7 @@ def find_recipe_json(ld_json, url, space):
for key in list(ld_json): for key in list(ld_json):
if key not in [ if key not in [
'prepTime', 'cookTime', 'image', 'recipeInstructions', 'prepTime', 'cookTime', 'image', 'recipeInstructions',
'keywords', 'name', 'recipeIngredient', 'servings' 'keywords', 'name', 'recipeIngredient', 'servings', 'description'
]: ]:
ld_json.pop(key, None) ld_json.pop(key, None)

View File

@ -589,9 +589,17 @@ def recipe_from_json(request):
mjson = request.POST['json'] mjson = request.POST['json']
md_json = json.loads(mjson) md_json = json.loads(mjson)
for ld_json_item in md_json:
# recipes type might be wrapped in @graph type
if '@graph' in ld_json_item:
for x in md_json['@graph']:
if '@type' in x and x['@type'] == 'Recipe':
md_json = x
if ('@type' in md_json if ('@type' in md_json
and md_json['@type'] == 'Recipe'): and md_json['@type'] == 'Recipe'):
return JsonResponse(find_recipe_json(md_json, '', request.space)) return JsonResponse(find_recipe_json(md_json, '', request.space))
return JsonResponse( return JsonResponse(
{ {
'error': True, 'error': True,