some fixed for the new importer + bumped python to 3.9

This commit is contained in:
vabene1111 2021-05-02 13:42:14 +02:00
parent d1b9d15816
commit d36274066a
6 changed files with 21 additions and 28 deletions

View File

@ -18,7 +18,7 @@
<excludeFolder url="file://$MODULE_DIR$/staticfiles" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.8 (recipes)" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="Python 3.9 (recipes)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">

View File

@ -2,6 +2,7 @@ import random
import re
from isodate import parse_duration as iso_parse_duration
from isodate.isoerror import ISO8601Error
from recipe_scrapers._exceptions import ElementNotFoundInHtml
from cookbook.helper.ingredient_parser import parse as parse_single_ingredient
from cookbook.models import Keyword
@ -17,12 +18,12 @@ def get_from_scraper(scrape, space):
recipe_json = {}
try:
recipe_json['name'] = parse_name(scrape.title() or scrape.schema.data.get('name') or '')
except (TypeError, AttributeError):
except (TypeError, AttributeError,ElementNotFoundInHtml):
recipe_json['name'] = ''
try:
description = scrape.schema.data.get("description") or ''
except AttributeError:
except (AttributeError,ElementNotFoundInHtml):
description = ''
recipe_json['description'] = parse_description(description)
@ -30,27 +31,27 @@ def get_from_scraper(scrape, space):
try:
servings = scrape.yields()
servings = int(re.findall(r'\b\d+\b', servings)[0])
except (AttributeError, ValueError, IndexError):
except (AttributeError,ElementNotFoundInHtml, ValueError, IndexError):
servings = 1
recipe_json['servings'] = servings
try:
recipe_json['prepTime'] = get_minutes(scrape.schema.data.get("prepTime")) or 0
except AttributeError:
except (AttributeError, ElementNotFoundInHtml):
recipe_json['prepTime'] = 0
try:
recipe_json['cookTime'] = get_minutes(scrape.schema.data.get("cookTime")) or 0
except AttributeError:
except (AttributeError, ElementNotFoundInHtml):
recipe_json['cookTime'] = 0
if recipe_json['cookTime'] + recipe_json['prepTime'] == 0:
try:
recipe_json['prepTime'] = get_minutes(scrape.total_time()) or 0
except AttributeError:
except (AttributeError,ElementNotFoundInHtml):
pass
try:
recipe_json['image'] = parse_image(scrape.image()) or ''
except (AttributeError, TypeError, SchemaOrgException):
except (AttributeError,ElementNotFoundInHtml, TypeError, SchemaOrgException):
recipe_json['image'] = ''
keywords = []
@ -62,7 +63,7 @@ def get_from_scraper(scrape, space):
if scrape.schema.data.get('recipeCuisine'):
keywords += listify_keywords(scrape.schema.data.get("recipeCuisine"))
recipe_json['keywords'] = parse_keywords(list(set(map(str.casefold, keywords))), space)
except AttributeError:
except (AttributeError,ElementNotFoundInHtml):
recipe_json['keywords'] = keywords
try:
@ -103,12 +104,12 @@ def get_from_scraper(scrape, space):
}
)
recipe_json['recipeIngredient'] = ingredients
except AttributeError:
except (AttributeError,ElementNotFoundInHtml):
recipe_json['recipeIngredient'] = ingredients
try:
recipe_json['recipeInstructions'] = parse_instructions(scrape.instructions())
except AttributeError:
except (AttributeError,ElementNotFoundInHtml):
recipe_json['recipeInstructions'] = ""
if scrape.url:

View File

@ -16,10 +16,6 @@ from django.http import FileResponse, HttpResponse, JsonResponse
from django.shortcuts import redirect, get_object_or_404
from django.utils.translation import gettext as _
from icalendar import Calendar, Event
from rest_framework import decorators, viewsets
from rest_framework.exceptions import APIException, PermissionDenied
from recipe_scrapers import scrape_me, WebsiteNotImplementedError, NoSchemaFoundInWildMode
from rest_framework import decorators, viewsets
from rest_framework.exceptions import APIException, PermissionDenied
@ -35,14 +31,10 @@ from cookbook.helper.permission_helper import (CustomIsAdmin, CustomIsGuest,
CustomIsOwner, CustomIsShare,
CustomIsShared, CustomIsUser,
group_required, share_link_valid)
from cookbook.helper.recipe_html_import import get_recipe_from_source
from cookbook.helper.recipe_url_import import get_from_scraper
group_required)
from cookbook.helper.recipe_html_import import get_recipe_from_source
from cookbook.helper.recipe_search import search_recipes
from cookbook.helper.recipe_url_import import get_from_html, get_from_scraper, find_recipe_json
from cookbook.helper.recipe_url_import import get_from_scraper
from cookbook.models import (CookLog, Food, Ingredient, Keyword, MealPlan,
MealType, Recipe, RecipeBook, ShoppingList,
ShoppingListEntry, ShoppingListRecipe, Step,

View File

@ -3,7 +3,7 @@
These intructions are inspired from a standard django/gunicorn/postgresql instructions ([for example](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04))
!!! warning
Be sure to use pyton3.8 and pip related to python 3.8. Depending on your distribution calling `python` or `pip` will use python2 instead of pyton 3.8.
Be sure to use pyton3.9 and pip related to python 3.9. Depending on your distribution calling `python` or `pip` will use python2 instead of pyton 3.9.
## Prerequisites
@ -12,7 +12,7 @@ These intructions are inspired from a standard django/gunicorn/postgresql instru
Get the last version from the repository: `git clone https://github.com/vabene1111/recipes.git -b master`
Install postgresql requirements: `sudo apt install libpq-dev postgresql`
Install project requirements: `pip3.8 install -r requirements.txt`
Install project requirements: `pip3.9 install -r requirements.txt`
## Setup postgresql
@ -44,11 +44,11 @@ wget https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template
Execute `export $(cat .env |grep "^[^#]" | xargs)` to load variables from `.env`
Execute `/python3.8 manage.py migrate`
Execute `/python3.9 manage.py migrate`
and revert superuser from postgres: `sudo -u postgres psql` and `ALTER USER djangouser WITH NOSUPERUSER;`
Generate static files: `python3.8 manage.py collectstatic` and remember the folder where files have been copied.
Generate static files: `python3.9 manage.py collectstatic` and remember the folder where files have been copied.
## Setup web services
@ -70,7 +70,7 @@ RestartSec=3
Group=www-data
WorkingDirectory=/media/data/recipes
EnvironmentFile=/media/data/recipes/.env
ExecStart=/opt/.pyenv/versions/3.8.5/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/media/data/recipes/recipes.sock recipes.wsgi:application
ExecStart=/opt/.pyenv/versions/3.9/bin/gunicorn --error-logfile /tmp/gunicorn_err.log --log-level debug --capture-output --bind unix:/media/data/recipes/recipes.sock recipes.wsgi:application
[Install]
WantedBy=multi-user.target

View File

@ -1,7 +1,7 @@
!!! info "Community Contributed"
The examples in this section were contributed by members of the community.
This page especially contains some setups that might help you if you really want to go down a certain path but none
of the examples are supported (as i simply am not able to give you support for them).
of the examples are supported (as I simply am not able to give you support for them).
## Apache + Traefik + Sub-Path

View File

@ -31,7 +31,7 @@ Jinja2==2.11.3
django-webpack-loader==0.7.0
django-js-reverse==0.9.1
django-allauth==0.44.0
recipe-scrapers==13.1.1
recipe-scrapers==13.2.1
django-scopes==1.2.0
pytest==6.2.3
pytest-django==4.2.0