From feef5857e5dff6158a860abd90c78828cc3bcd62 Mon Sep 17 00:00:00 2001 From: hay-kot Date: Mon, 29 Mar 2021 11:48:15 -0800 Subject: [PATCH] fix flake8 problems --- mealie/app.py | 2 +- mealie/core/config.py | 2 +- mealie/db/database.py | 1 + mealie/db/db_base.py | 13 ++----------- mealie/db/init_db.py | 7 ------- mealie/db/models/db_session.py | 2 +- mealie/db/models/group.py | 16 ++++++---------- mealie/db/models/mealplan.py | 2 +- mealie/db/models/recipe/api_extras.py | 2 -- mealie/db/models/recipe/category.py | 16 ++++++---------- mealie/db/models/recipe/tag.py | 17 ++++++----------- mealie/routes/deps.py | 7 ++----- mealie/routes/groups/crud.py | 4 ++-- mealie/routes/mealplans/crud.py | 2 -- mealie/routes/mealplans/helpers.py | 2 +- mealie/routes/migration_routes.py | 2 +- mealie/routes/recipe/all_recipe_routes.py | 4 ++-- mealie/routes/recipe/category_routes.py | 12 ++++++------ mealie/routes/recipe/recipe_crud_routes.py | 1 - mealie/routes/users/auth.py | 2 +- mealie/routes/users/crud.py | 2 +- mealie/schema/auth.py | 1 + mealie/services/backups/imports.py | 2 +- mealie/services/meal_services.py | 4 +--- mealie/services/migrations/nextcloud.py | 1 - mealie/services/scraper/cleaner.py | 9 +++++---- mealie/services/scraper/scraper.py | 2 +- 27 files changed, 50 insertions(+), 87 deletions(-) diff --git a/mealie/app.py b/mealie/app.py index 89ee63842..370ae44e7 100644 --- a/mealie/app.py +++ b/mealie/app.py @@ -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(): diff --git a/mealie/core/config.py b/mealie/core/config.py index 3a871055a..6574dc692 100644 --- a/mealie/core/config.py +++ b/mealie/core/config.py @@ -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") diff --git a/mealie/db/database.py b/mealie/db/database.py index 5a1a66343..b25435798 100644 --- a/mealie/db/database.py +++ b/mealie/db/database.py @@ -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" diff --git a/mealie/db/db_base.py b/mealie/db/db_base.py index c1a302f49..c0f30ae79 100644 --- a/mealie/db/db_base.py +++ b/mealie/db/db_base.py @@ -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 diff --git a/mealie/db/init_db.py b/mealie/db/init_db.py index a1737c622..9b6e8d790 100644 --- a/mealie/db/init_db.py +++ b/mealie/db/init_db.py @@ -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}") diff --git a/mealie/db/models/db_session.py b/mealie/db/models/db_session.py index afefa3f41..78dcbc71b 100644 --- a/mealie/db/models/db_session.py +++ b/mealie/db/models/db_session.py @@ -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) diff --git a/mealie/db/models/group.py b/mealie/db/models/group.py index 2f5760ba1..32665348f 100644 --- a/mealie/db/models/group.py +++ b/mealie/db/models/group.py @@ -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) diff --git a/mealie/db/models/mealplan.py b/mealie/db/models/mealplan.py index 6152d012f..84e70d9c2 100644 --- a/mealie/db/models/mealplan.py +++ b/mealie/db/models/mealplan.py @@ -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") diff --git a/mealie/db/models/recipe/api_extras.py b/mealie/db/models/recipe/api_extras.py index 466a0dc96..222bb6c2c 100644 --- a/mealie/db/models/recipe/api_extras.py +++ b/mealie/db/models/recipe/api_extras.py @@ -1,5 +1,3 @@ -from datetime import date - import sqlalchemy as sa from mealie.db.models.model_base import SqlAlchemyBase diff --git a/mealie/db/models/recipe/category.py b/mealie/db/models/recipe/category.py index a4ee7b0b3..8112fad0d 100644 --- a/mealie/db/models/recipe/category.py +++ b/mealie/db/models/recipe/category.py @@ -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) diff --git a/mealie/db/models/recipe/tag.py b/mealie/db/models/recipe/tag.py index b22a4da52..1977055b9 100644 --- a/mealie/db/models/recipe/tag.py +++ b/mealie/db/models/recipe/tag.py @@ -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) diff --git a/mealie/routes/deps.py b/mealie/routes/deps.py index 7cba04e3c..9df36efad 100644 --- a/mealie/routes/deps.py +++ b/mealie/routes/deps.py @@ -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 - - - diff --git a/mealie/routes/groups/crud.py b/mealie/routes/groups/crud.py index 60456f79c..de1d43439 100644 --- a/mealie/routes/groups/crud.py +++ b/mealie/routes/groups/crud.py @@ -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 """ diff --git a/mealie/routes/mealplans/crud.py b/mealie/routes/mealplans/crud.py index f5196c785..c0498e6a1 100644 --- a/mealie/routes/mealplans/crud.py +++ b/mealie/routes/mealplans/crud.py @@ -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 diff --git a/mealie/routes/mealplans/helpers.py b/mealie/routes/mealplans/helpers.py index f1e90d531..1e64cb504 100644 --- a/mealie/routes/mealplans/helpers.py +++ b/mealie/routes/mealplans/helpers.py @@ -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] diff --git a/mealie/routes/migration_routes.py b/mealie/routes/migration_routes.py index 3422439c7..f6bb73961 100644 --- a/mealie/routes/migration_routes.py +++ b/mealie/routes/migration_routes.py @@ -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 diff --git a/mealie/routes/recipe/all_recipe_routes.py b/mealie/routes/recipe/all_recipe_routes.py index 76344d1ca..761e081d2 100644 --- a/mealie/routes/recipe/all_recipe_routes.py +++ b/mealie/routes/recipe/all_recipe_routes.py @@ -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] diff --git a/mealie/routes/recipe/category_routes.py b/mealie/routes/recipe/category_routes.py index 055a19124..5d1feeb8b 100644 --- a/mealie/routes/recipe/category_routes.py +++ b/mealie/routes/recipe/category_routes.py @@ -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""" diff --git a/mealie/routes/recipe/recipe_crud_routes.py b/mealie/routes/recipe/recipe_crud_routes.py index baa254dc1..e391b95ba 100644 --- a/mealie/routes/recipe/recipe_crud_routes.py +++ b/mealie/routes/recipe/recipe_crud_routes.py @@ -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 diff --git a/mealie/routes/users/auth.py b/mealie/routes/users/auth.py index ef8ca6456..db32a9801 100644 --- a/mealie/routes/users/auth.py +++ b/mealie/routes/users/auth.py @@ -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 diff --git a/mealie/routes/users/crud.py b/mealie/routes/users/crud.py index adbf395f7..44526c9c8 100644 --- a/mealie/routes/users/crud.py +++ b/mealie/routes/users/crud.py @@ -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") diff --git a/mealie/schema/auth.py b/mealie/schema/auth.py index f42bcf6d2..22d8fc1c1 100644 --- a/mealie/schema/auth.py +++ b/mealie/schema/auth.py @@ -1,6 +1,7 @@ from pydantic import BaseModel from typing import Optional + class Token(BaseModel): access_token: str token_type: str diff --git a/mealie/services/backups/imports.py b/mealie/services/backups/imports.py index 97ff3f1ed..a46ad1c4c 100644 --- a/mealie/services/backups/imports.py +++ b/mealie/services/backups/imports.py @@ -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] diff --git a/mealie/services/meal_services.py b/mealie/services/meal_services.py index a7d3150f2..46ff1fca0 100644 --- a/mealie/services/meal_services.py +++ b/mealie/services/meal_services.py @@ -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 diff --git a/mealie/services/migrations/nextcloud.py b/mealie/services/migrations/nextcloud.py index 3453d80b6..03b315cac 100644 --- a/mealie/services/migrations/nextcloud.py +++ b/mealie/services/migrations/nextcloud.py @@ -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 diff --git a/mealie/services/scraper/cleaner.py b/mealie/services/scraper/cleaner.py index 5cb8ab160..0275bef08 100644 --- a/mealie/services/scraper/cleaner.py +++ b/mealie/services/scraper/cleaner.py @@ -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: diff --git a/mealie/services/scraper/scraper.py b/mealie/services/scraper/scraper.py index ff2139a93..17d0f149c 100644 --- a/mealie/services/scraper/scraper.py +++ b/mealie/services/scraper/scraper.py @@ -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)