mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 14:33:33 -07:00
fix flake8 problems
This commit is contained in:
parent
54f8fe32fa
commit
feef5857e5
27 changed files with 50 additions and 87 deletions
|
@ -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():
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}")
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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()
|
||||
result = session.query(Group).filter(Group.name == name).one_or_none()
|
||||
if result:
|
||||
logger.info("Category exists, associating recipe")
|
||||
logger.info("Group 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")
|
||||
logger.info("Group doesn't exists, creating tag")
|
||||
return Group(name=name)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
from datetime import date
|
||||
|
||||
import sqlalchemy as sa
|
||||
from mealie.db.models.model_base import SqlAlchemyBase
|
||||
|
||||
|
|
|
@ -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()
|
||||
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)
|
||||
except:
|
||||
logger.info("Category doesn't exists, creating category")
|
||||
return Category(name=name)
|
||||
|
|
|
@ -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:
|
||||
logger.info("Tag doesn't exists, creating tag")
|
||||
return Tag(name=name)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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 """
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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"""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue