fix flake8 problems

This commit is contained in:
hay-kot 2021-03-29 11:48:15 -08:00
commit feef5857e5
27 changed files with 50 additions and 87 deletions

View file

@ -21,7 +21,7 @@ app = FastAPI(
def start_scheduler():
import mealie.services.scheduler.scheduled_jobs
import mealie.services.scheduler.scheduled_jobs # noqa: F401
def api_routers():

View file

@ -16,7 +16,7 @@ def ensure_dirs():
# Register ENV
ENV = CWD.joinpath(".env") #! I'm Broken Fix Me!
ENV = CWD.joinpath(".env") # ! I'm Broken Fix Me!
dotenv.load_dotenv(ENV)
PRODUCTION = os.environ.get("ENV")

View file

@ -118,6 +118,7 @@ class _SignUps(BaseDocument):
self.orm_mode = True
self.schema = SignUpOut
class _CustomPages(BaseDocument):
def __init__(self) -> None:
self.primary_key = "id"

View file

@ -40,12 +40,7 @@ class BaseDocument:
Returns:
list[SqlAlchemyBase]: Returns a list of ORM objects
"""
return (
session.query(self.sql_model)
.options(load_only(*fields))
.limit(limit)
.all()
)
return session.query(self.sql_model).options(load_only(*fields)).limit(limit).all()
def get_all_primary_keys(self, session: Session) -> List[str]:
"""Queries the database of the selected model and returns a list
@ -75,11 +70,7 @@ class BaseDocument:
if match_key is None:
match_key = self.primary_key
return (
session.query(self.sql_model)
.filter_by(**{match_key: match_value})
.one()
)
return session.query(self.sql_model).filter_by(**{match_key: match_value}).one()
def get(self, session: Session, match_value: str, match_key: str = None, limit=1) -> BaseModel or List[BaseModel]:
"""Retrieves an entry from the database by matching a key/value pair. If no

View file

@ -6,7 +6,6 @@ from mealie.db.db_setup import create_session, sql_exists
from mealie.schema.settings import SiteSettings
from mealie.schema.theme import SiteTheme
from sqlalchemy.orm import Session
from sqlalchemy.orm.session import Session
def init_db(db: Session = None) -> None:
@ -24,14 +23,8 @@ def init_db(db: Session = None) -> None:
def default_theme_init(session: Session):
db.themes.create(session, SiteTheme().dict())
try:
logger.info("Generating default theme...")
except:
logger.info("Default Theme Exists.. skipping generation")
def default_settings_init(session: Session):
data = {"language": "en", "home_page_settings": {"categories": []}}
document = db.settings.create(session, SiteSettings().dict())
logger.info(f"Created Site Settings: \n {document}")

View file

@ -18,7 +18,7 @@ def sql_global_init(db_file: Path, check_thread=False):
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
import mealie.db.models._all_models
import mealie.db.models._all_models # noqa: F401
SqlAlchemyBase.metadata.create_all(engine)

View file

@ -64,14 +64,10 @@ class Group(SqlAlchemyBase, BaseMixins):
@staticmethod
def create_if_not_exist(session, name: str = DEFAULT_GROUP):
try:
result = session.query(Group).filter(Group.name == name).one()
if result:
logger.info("Category exists, associating recipe")
return result
else:
logger.info("Category doesn't exists, creating tag")
return Group(name=name)
except:
logger.info("Category doesn't exists, creating category")
result = session.query(Group).filter(Group.name == name).one_or_none()
if result:
logger.info("Group exists, associating recipe")
return result
else:
logger.info("Group doesn't exists, creating tag")
return Group(name=name)

View file

@ -26,7 +26,7 @@ class Meal(SqlAlchemyBase):
class MealPlanModel(SqlAlchemyBase, BaseMixins):
__tablename__ = "mealplan"
uid = sa.Column(sa.Integer, primary_key=True, unique=True) #! Probably Bad?
uid = sa.Column(sa.Integer, primary_key=True, unique=True) # ! Probably Bad?
startDate = sa.Column(sa.Date)
endDate = sa.Column(sa.Date)
meals: List[Meal] = orm.relationship(Meal, cascade="all, delete, delete-orphan")

View file

@ -1,5 +1,3 @@
from datetime import date
import sqlalchemy as sa
from mealie.db.models.model_base import SqlAlchemyBase

View file

@ -57,14 +57,10 @@ class Category(SqlAlchemyBase):
@staticmethod
def create_if_not_exist(session, name: str = None):
test_slug = slugify(name)
try:
result = session.query(Category).filter(Category.slug == test_slug).one()
if result:
logger.info("Category exists, associating recipe")
return result
else:
logger.info("Category doesn't exists, creating tag")
return Category(name=name)
except:
logger.info("Category doesn't exists, creating category")
result = session.query(Category).filter(Category.slug == test_slug).one_or_none()
if result:
logger.info("Category exists, associating recipe")
return result
else:
logger.info("Category doesn't exists, creating tag")
return Category(name=name)

View file

@ -22,7 +22,7 @@ class Tag(SqlAlchemyBase):
@validates("name")
def validate_name(self, key, name):
assert not name == ""
assert name != ""
return name
def __init__(self, name) -> None:
@ -32,16 +32,11 @@ class Tag(SqlAlchemyBase):
@staticmethod
def create_if_not_exist(session, name: str = None):
test_slug = slugify(name)
try:
result = session.query(Tag).filter(Tag.slug == test_slug).first()
result = session.query(Tag).filter(Tag.slug == test_slug).one_or_none()
if result:
logger.info("Tag exists, associating recipe")
return result
else:
logger.info("Tag doesn't exists, creating tag")
return Tag(name=name)
except:
if result:
logger.info("Tag exists, associating recipe")
return result
else:
logger.info("Tag doesn't exists, creating tag")
return Tag(name=name)

View file

@ -3,8 +3,8 @@ from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
from mealie.core.config import SECRET
from mealie.db.database import db
from mealie.db.db_setup import create_session, generate_session
from mealie.schema.auth import Token, TokenData
from mealie.db.db_setup import generate_session
from mealie.schema.auth import TokenData
from mealie.schema.user import UserInDB
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/token")
@ -29,6 +29,3 @@ async def get_current_user(token: str = Depends(oauth2_scheme), session=Depends(
if user is None:
raise credentials_exception
return user

View file

@ -3,7 +3,7 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.schema.snackbar import SnackResponse
from mealie.schema.user import GroupBase, GroupInDB, UpdateGroup, UserIn, UserInDB
from mealie.schema.user import GroupBase, GroupInDB, UpdateGroup, UserInDB
from sqlalchemy.orm.session import Session
router = APIRouter(prefix="/api/groups", tags=["Groups"])
@ -21,7 +21,7 @@ async def get_all_groups(
@router.get("/self", response_model=GroupInDB)
async def get_current_user_group(
current_user: UserInDB =Depends(get_current_user),
current_user: UserInDB = Depends(get_current_user),
session: Session = Depends(generate_session),
):
""" Returns the Group Data for the Current User """

View file

@ -1,5 +1,3 @@
import datetime
from fastapi import APIRouter, Depends
from mealie.db.database import db
from mealie.db.db_setup import generate_session

View file

@ -16,7 +16,7 @@ def get_shopping_list(
current_user=Depends(get_current_user),
):
#! Refactor into Single Database Call
# ! Refactor into Single Database Call
mealplan = db.meals.get(session, id)
mealplan: MealPlanInDB
slugs = [x.slug for x in mealplan.meals]

View file

@ -2,7 +2,7 @@ import operator
import shutil
from typing import List
from fastapi import APIRouter, Depends, File, HTTPException, UploadFile
from fastapi import APIRouter, Depends, File, UploadFile
from mealie.core.config import MIGRATION_DIR
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user

View file

@ -73,7 +73,7 @@ def get_all_recipes_post(body: AllRecipeRequest, session: Session = Depends(gene
@router.post("/api/recipes/category")
def filter_by_category(categories: list, session: Session = Depends(generate_session)):
""" pass a list of categories and get a list of recipes associated with those categories """
#! This should be refactored into a single database call, but I couldn't figure it out
# ! This should be refactored into a single database call, but I couldn't figure it out
in_category = [db.categories.get(session, slugify(cat), limit=1) for cat in categories]
in_category = [cat.get("recipes") for cat in in_category if cat]
in_category = [item for sublist in in_category for item in sublist]
@ -83,7 +83,7 @@ def filter_by_category(categories: list, session: Session = Depends(generate_ses
@router.post("/api/recipes/tag")
async def filter_by_tags(tags: list, session: Session = Depends(generate_session)):
""" pass a list of tags and get a list of recipes associated with those tags"""
#! This should be refactored into a single database call, but I couldn't figure it out
# ! This should be refactored into a single database call, but I couldn't figure it out
in_tags = [db.tags.get(session, slugify(tag), limit=1) for tag in tags]
in_tags = [tag.get("recipes") for tag in in_tags]
in_tags = [item for sublist in in_tags for item in sublist]

View file

@ -1,12 +1,10 @@
from mealie.routes.deps import get_current_user
from fastapi import APIRouter, Depends
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from fastapi import APIRouter, Depends
from mealie.routes.deps import get_current_user
from mealie.schema.category import RecipeCategoryResponse
from mealie.schema.snackbar import SnackResponse
from sqlalchemy.orm.session import Session
from mealie.schema.snackbar import SnackResponse
from mealie.schema.snackbar import SnackResponse
router = APIRouter(
prefix="/api/categories",
@ -27,7 +25,9 @@ def get_all_recipes_by_category(category: str, session: Session = Depends(genera
@router.delete("/{category}")
async def delete_recipe_category(category: str, session: Session = Depends(generate_session), current_user=Depends(get_current_user)):
async def delete_recipe_category(
category: str, session: Session = Depends(generate_session), current_user=Depends(get_current_user)
):
"""Removes a recipe category from the database. Deleting a
category does not impact a recipe. The category will be removed
from any recipes that contain it"""

View file

@ -1,5 +1,4 @@
from fastapi import APIRouter, Depends, File, Form, HTTPException
from fastapi.logger import logger
from fastapi.responses import FileResponse
from mealie.db.database import db
from mealie.db.db_setup import generate_session

View file

@ -4,7 +4,7 @@ from fastapi import APIRouter, Depends, status
from fastapi.exceptions import HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from mealie.core import security
from mealie.core.security import authenticate_user, verify_password
from mealie.core.security import authenticate_user
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.schema.snackbar import SnackResponse

View file

@ -160,4 +160,4 @@ async def delete_user(
if current_user.id == id or current_user.admin:
db.users.delete(session, id)
return SnackResponse.error(f"User Deleted")
return SnackResponse.error("User Deleted")

View file

@ -1,6 +1,7 @@
from pydantic import BaseModel
from typing import Optional
class Token(BaseModel):
access_token: str
token_type: str

View file

@ -131,7 +131,7 @@ class ImportDatabase:
return theme_imports
def import_settings(self): #! Broken
def import_settings(self): # ! Broken
settings_file = self.import_dir.joinpath("settings", "settings.json")
settings = ImportDatabase.read_models_file(settings_file, SiteSettings)
settings = settings[0]

View file

@ -1,13 +1,11 @@
from datetime import date, timedelta, timezone
from datetime import date, timedelta
from typing import Union
import pytz
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.meal import MealIn, MealOut, MealPlanIn, MealPlanInDB, MealPlanProcessed
from mealie.schema.recipe import Recipe
from mealie.schema.user import GroupInDB
from pydantic.tools import T
from sqlalchemy.orm.session import Session

View file

@ -7,7 +7,6 @@ from pathlib import Path
from mealie.core.config import IMG_DIR, MIGRATION_DIR, TEMP_DIR
from mealie.schema.recipe import Recipe
from mealie.services.scraper.cleaner import Cleaner
from mealie.core.config import IMG_DIR, TEMP_DIR
from mealie.db.database import db

View file

@ -77,7 +77,7 @@ class Cleaner:
return [{"text": Cleaner._instruction(line)} for line in instructions.splitlines() if line]
# Plain strings in a list
elif isinstance(instructions, list) and isinstance(instructions[0], list):
elif isinstance(instructions, list) and isinstance(instructions[0], str):
return [{"text": Cleaner._instruction(step)} for step in instructions]
# Dictionaries (let's assume it's a HowToStep) in a list
@ -106,6 +106,7 @@ class Cleaner:
if step["@type"] == "HowToStep"
]
except Exception as e:
print(e)
# Not "@type", try "type"
try:
return [
@ -121,11 +122,11 @@ class Cleaner:
@staticmethod
def _instruction(line) -> str:
l = Cleaner.html(line.strip())
clean_line = Cleaner.html(line.strip())
# Some sites erroneously escape their strings on multiple levels
while not l == (l := html.unescape(l)):
while not clean_line == (clean_line := html.unescape(clean_line)):
pass
return l
return clean_line
@staticmethod
def ingredient(ingredients: list) -> str:

View file

@ -39,7 +39,7 @@ def extract_recipe_from_html(html: str, url: str) -> dict:
if not scraped_recipes:
scraped_recipes: List[dict] = scrape_schema_recipe.scrape_url(url, python_objects=True)
except Exception as e:
# trying without python_objects
print(e)
scraped_recipes: List[dict] = scrape_schema_recipe.loads(html)
dump_last_json(scraped_recipes)