style(backend): 🎨 add isort to lint and CI/CD

This commit is contained in:
hay-kot 2021-08-28 14:27:56 -08:00
parent 2c80980453
commit 7c936c85ae
103 changed files with 203 additions and 93 deletions

View File

@ -8,10 +8,11 @@ from typing import Optional
from fastapi import FastAPI
from humps import camelize
from jinja2 import Template
from mealie.app import app
from pydantic import BaseModel, Field
from slugify import slugify
from mealie.app import app
CWD = Path(__file__).parent
OUT_DIR = CWD / "output"
TEMPLATES_DIR = CWD / "templates"

View File

@ -44,14 +44,19 @@ clean-test: ## 🧹 Remove test and coverage artifacts
rm -fr htmlcov/
rm -fr .pytest_cache
test-all: lint test ## 🧪 Check Lint Format and Testing
test-all: lint-test test ## 🧪 Check Lint Format and Testing
test: ## 🧪 Run tests quickly with the default Python
poetry run pytest
lint: ## 🧺 Format, Check and Flake8
poetry run black .
lint-test:
poetry run black . --check
poetry run isort . --check-only
poetry run flake8 mealie tests
lint: ## 🧺 Format, Check and Flake8
poetry run isort .
poetry run black .
poetry run flake8 mealie tests

View File

@ -2,10 +2,11 @@ from datetime import datetime, timedelta
from pathlib import Path
from jose import jwt
from passlib.context import CryptContext
from mealie.core.config import settings
from mealie.db.database import db
from mealie.schema.user import UserInDB
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
ALGORITHM = "HS256"

View File

@ -1,10 +1,11 @@
from typing import Callable, Generic, TypeVar, Union
from mealie.core.root_logger import get_logger
from sqlalchemy import func
from sqlalchemy.orm import load_only
from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
logger = get_logger()
T = TypeVar("T")

View File

@ -1,5 +1,7 @@
from logging import getLogger
from sqlalchemy.orm.session import Session
from mealie.db.data_access_layer.group_access_model import GroupDataAccessModel
from mealie.db.models.event import Event, EventNotification
from mealie.db.models.group import Group
@ -26,7 +28,6 @@ from mealie.schema.recipe import (
RecipeTagResponse,
)
from mealie.schema.user import GroupInDB, LongLiveTokenInDB, SignUpOut, UserInDB
from sqlalchemy.orm.session import Session
from ._base_access_model import BaseAccessModel
from .recipe_access_model import RecipeDataAccessModel

View File

@ -1,7 +1,8 @@
from sqlalchemy.orm.session import Session
from mealie.db.models.group import Group
from mealie.schema.meal_plan.meal import MealPlanOut
from mealie.schema.user.user import GroupInDB
from sqlalchemy.orm.session import Session
from ._base_access_model import BaseAccessModel

View File

@ -1,9 +1,10 @@
from random import randint
from sqlalchemy.orm.session import Session
from mealie.db.models.recipe.recipe import RecipeModel
from mealie.db.models.recipe.settings import RecipeSettings
from mealie.schema.recipe import Recipe
from sqlalchemy.orm.session import Session
from ._base_access_model import BaseAccessModel

View File

@ -1,8 +1,9 @@
import sqlalchemy as sa
from mealie.core.config import settings
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.session import Session
from mealie.core.config import settings
def sql_global_init(db_url: str):
connect_args = {}

View File

@ -1,3 +1,5 @@
from sqlalchemy.orm import Session
from mealie.core import root_logger
from mealie.core.config import settings
from mealie.core.security import get_password_hash
@ -7,7 +9,6 @@ from mealie.db.db_setup import create_session, engine
from mealie.db.models._model_base import SqlAlchemyBase
from mealie.schema.admin import SiteSettings
from mealie.services.events import create_general_event
from sqlalchemy.orm import Session
logger = root_logger.get_logger("init_db")

View File

@ -1,6 +1,7 @@
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from sqlalchemy import Boolean, Column, DateTime, Integer, String
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
class EventNotification(SqlAlchemyBase, BaseMixins):
__tablename__ = "event_notifications"

View File

@ -1,9 +1,10 @@
import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.orm.session import Session
from mealie.core.config import settings
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.recipe.category import Category, group2categories
from sqlalchemy.orm.session import Session
class WebhookURLModel(SqlAlchemyBase):

View File

@ -1,10 +1,11 @@
import sqlalchemy.orm as orm
from sqlalchemy import Column, Date, ForeignKey, Integer, String
from sqlalchemy.ext.orderinglist import ordering_list
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.group import Group
from mealie.db.models.recipe.recipe import RecipeModel
from mealie.db.models.shopping_list import ShoppingList
from sqlalchemy import Column, Date, ForeignKey, Integer, String
from sqlalchemy.ext.orderinglist import ordering_list
class Meal(SqlAlchemyBase):

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,10 +1,11 @@
import sqlalchemy as sa
import sqlalchemy.orm as orm
from mealie.core import root_logger
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from slugify import slugify
from sqlalchemy.orm import validates
from mealie.core import root_logger
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
logger = root_logger.get_logger()
site_settings2categories = sa.Table(

View File

@ -1,10 +1,11 @@
from datetime import datetime
from uuid import uuid4
from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, orm
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.recipe.recipe import RecipeModel
from mealie.db.models.users import User
from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, orm
def generate_uuid():

View File

@ -1,6 +1,7 @@
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from sqlalchemy import Column, ForeignKey, Integer, String, orm
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from .._model_utils import auto_init

View File

@ -1,6 +1,7 @@
from mealie.db.models._model_base import SqlAlchemyBase
from sqlalchemy import Column, ForeignKey, Integer, String
from mealie.db.models._model_base import SqlAlchemyBase
class RecipeInstruction(SqlAlchemyBase):
__tablename__ = "recipe_instructions"

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,10 +1,11 @@
import sqlalchemy as sa
import sqlalchemy.orm as orm
from mealie.core import root_logger
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from slugify import slugify
from sqlalchemy.orm import validates
from mealie.core import root_logger
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
logger = root_logger.get_logger()
recipes2tags = sa.Table(

View File

@ -1,4 +1,5 @@
import sqlalchemy as sa
from mealie.db.models._model_base import SqlAlchemyBase

View File

@ -1,8 +1,9 @@
import sqlalchemy as sa
import sqlalchemy.orm as orm
from sqlalchemy.orm import Session
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.recipe.category import Category, custom_pages2categories, site_settings2categories
from sqlalchemy.orm import Session
class SiteSettings(SqlAlchemyBase, BaseMixins):

View File

@ -1,10 +1,11 @@
import sqlalchemy.orm as orm
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.group import Group
from requests import Session
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.ext.orderinglist import ordering_list
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.group import Group
class ShoppingListItem(SqlAlchemyBase, BaseMixins):
__tablename__ = "shopping_list_items"

View File

@ -1,6 +1,7 @@
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from sqlalchemy import Boolean, Column, Integer, String
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
class SignUp(SqlAlchemyBase, BaseMixins):
__tablename__ = "sign_ups"

View File

@ -1,8 +1,9 @@
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, orm
from mealie.core.config import settings
from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
from mealie.db.models.group import Group
from mealie.db.models.recipe.recipe import RecipeModel
from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, orm
class LongLiveToken(SqlAlchemyBase, BaseMixins):

View File

@ -1,4 +1,5 @@
from fastapi import APIRouter
from mealie.schema.recipe import RecipeSettings
router = APIRouter(prefix="/recipes")

View File

@ -1,10 +1,11 @@
from fastapi import Depends
from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.events import EventsOut
from sqlalchemy.orm.session import Session
router = AdminAPIRouter(prefix="/events")

View File

@ -1,13 +1,14 @@
from http.client import HTTPException
from fastapi import Depends, status
from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.events import EventNotificationIn, EventNotificationOut, TestEvent
from mealie.services.events import test_notification
from sqlalchemy.orm.session import Session
router = AdminAPIRouter()

View File

@ -1,6 +1,8 @@
from fastapi import APIRouter, BackgroundTasks, Depends, Request, status
from fastapi.exceptions import HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm.session import Session
from mealie.core import security
from mealie.core.security import authenticate_user
from mealie.db.db_setup import generate_session
@ -8,7 +10,6 @@ from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.user import UserInDB
from mealie.services.events import create_user_event
from sqlalchemy.orm.session import Session
public_router = APIRouter(tags=["Users: Authentication"])
user_router = UserAPIRouter(tags=["Users: Authentication"])

View File

@ -4,6 +4,8 @@ from pathlib import Path
from pprint import pprint
from fastapi import BackgroundTasks, Depends, File, HTTPException, UploadFile, status
from sqlalchemy.orm.session import Session
from mealie.core.config import app_dirs
from mealie.core.root_logger import get_logger
from mealie.core.security import create_file_token
@ -13,7 +15,6 @@ from mealie.schema.admin import BackupJob, ImportJob, Imports, LocalBackup
from mealie.services.backups import imports
from mealie.services.backups.exports import backup_all
from mealie.services.events import create_backup_event
from sqlalchemy.orm.session import Session
router = AdminAPIRouter(prefix="/api/backups", tags=["Backups"])
logger = get_logger()

View File

@ -1,10 +1,11 @@
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.schema.recipe import CategoryIn, RecipeCategoryResponse
from sqlalchemy.orm.session import Session
public_router = APIRouter()
user_router = UserAPIRouter()

View File

@ -1,5 +1,7 @@
from fastapi import Depends
from fastapi.routing import APIRouter
from sqlalchemy.orm.session import Session
from mealie.core.config import APP_VERSION, settings
from mealie.core.root_logger import LOGGER_FILE
from mealie.core.security import create_file_token
@ -7,7 +9,6 @@ from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.admin import AppInfo, AppStatistics, DebugInfo
from sqlalchemy.orm.session import Session
admin_router = AdminAPIRouter(prefix="/api/debug", tags=["Debug"])
public_router = APIRouter(prefix="/api/debug", tags=["Debug"])

View File

@ -4,11 +4,12 @@ from typing import Optional
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
from sqlalchemy.orm.session import Session
from mealie.core.config import app_dirs, settings
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.schema.user import LongLiveTokenInDB, TokenData, UserInDB
from sqlalchemy.orm.session import Session
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/token")
oauth2_scheme_soft_fail = OAuth2PasswordBearer(tokenUrl="/api/auth/token", auto_error=False)

View File

@ -1,11 +1,12 @@
from fastapi import BackgroundTasks, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.schema.user import GroupBase, GroupInDB, UpdateGroup, UserInDB
from mealie.services.events import create_group_event
from sqlalchemy.orm.session import Session
admin_router = AdminAPIRouter(prefix="/groups", tags=["Groups: CRUD"])
user_router = UserAPIRouter(prefix="/groups", tags=["Groups: CRUD"])

View File

@ -1,4 +1,7 @@
from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from starlette.responses import FileResponse
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
@ -8,8 +11,6 @@ from mealie.schema.user import GroupInDB, UserInDB
from mealie.services.events import create_group_event
from mealie.services.image import image
from mealie.services.meal_services import get_todays_meal, set_mealplan_dates
from sqlalchemy.orm.session import Session
from starlette.responses import FileResponse
router = UserAPIRouter(prefix="/api/meal-plans", tags=["Meal Plan"])
public_router = APIRouter(prefix="/api/meal-plans", tags=["Meal Plan"])

View File

@ -1,4 +1,6 @@
from fastapi import Depends
from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import generate_session
@ -7,7 +9,6 @@ from mealie.routes.routers import UserAPIRouter
from mealie.schema.meal_plan import ListItem, MealPlanOut, ShoppingListIn, ShoppingListOut
from mealie.schema.recipe import Recipe
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session
logger = get_logger()

View File

@ -1,4 +1,5 @@
from fastapi import APIRouter
from mealie.routes.mealplans import crud, helpers
router = APIRouter()

View File

@ -1,9 +1,10 @@
from enum import Enum
from fastapi import APIRouter, HTTPException, status
from mealie.schema.recipe import Recipe
from starlette.responses import FileResponse
from mealie.schema.recipe import Recipe
"""
These routes are for development only! These assets are served by Caddy when not
in development mode. If you make changes, be sure to test the production container.

View File

@ -3,12 +3,13 @@ import shutil
from typing import List
from fastapi import Depends, File, HTTPException, UploadFile, status
from sqlalchemy.orm.session import Session
from mealie.core.config import app_dirs
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.admin import MigrationFile, Migrations
from mealie.services.migrations import migration
from sqlalchemy.orm.session import Session
router = AdminAPIRouter(prefix="/api/migrations", tags=["Migration"])

View File

@ -1,4 +1,5 @@
from fastapi import APIRouter
from mealie.routes.recipe import all_recipe_routes, comments, image_and_assets, ingredient_parser, recipe_crud_routes
prefix = "/recipes"

View File

@ -1,9 +1,10 @@
from fastapi import APIRouter, Depends
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.schema.recipe import RecipeSummary
from mealie.services.recipe.all_recipes import AllRecipesService
from sqlalchemy.orm.session import Session
router = APIRouter()

View File

@ -1,13 +1,14 @@
from http.client import HTTPException
from fastapi import Depends, status
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.recipe import CommentOut, CreateComment, SaveComment
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session
router = UserAPIRouter()

View File

@ -2,13 +2,14 @@ from shutil import copyfileobj
from fastapi import Depends, File, Form, HTTPException, status
from fastapi.datastructures import UploadFile
from slugify import slugify
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import UserAPIRouter
from mealie.schema.recipe import CreateRecipeByURL, Recipe, RecipeAsset
from mealie.services.image.image import scrape_image, write_image
from slugify import slugify
from sqlalchemy.orm.session import Session
user_router = UserAPIRouter()

View File

@ -1,9 +1,10 @@
from fastapi import APIRouter
from pydantic import BaseModel
from mealie.services.scraper.ingredient_nlp.processor import (
convert_crf_models_to_ingredients,
convert_list_to_crf_model,
)
from pydantic import BaseModel
public_router = APIRouter()

View File

@ -4,6 +4,10 @@ from zipfile import ZipFile
from fastapi import APIRouter, BackgroundTasks, Depends, File
from fastapi.datastructures import UploadFile
from scrape_schema_recipe import scrape_url
from sqlalchemy.orm.session import Session
from starlette.responses import FileResponse
from mealie.core.config import settings
from mealie.core.root_logger import get_logger
from mealie.db.database import db
@ -18,9 +22,6 @@ from mealie.services.image.image import write_image
from mealie.services.recipe.media import check_assets
from mealie.services.recipe.recipe_service import RecipeService
from mealie.services.scraper.scraper import create_from_url
from scrape_schema_recipe import scrape_url
from sqlalchemy.orm.session import Session
from starlette.responses import FileResponse
user_router = UserAPIRouter()
public_router = APIRouter()

View File

@ -1,6 +1,7 @@
from typing import List, Optional
from fastapi import APIRouter, Depends
from mealie.routes.deps import get_admin_user, get_current_user

View File

@ -1,11 +1,12 @@
from fastapi import Depends
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.meal_plan import ShoppingListIn, ShoppingListOut
from mealie.schema.user import UserInDB
from sqlalchemy.orm.session import Session
router = UserAPIRouter(prefix="/shopping-lists", tags=["Shopping Lists: CRUD"])

View File

@ -1,11 +1,12 @@
from typing import Union
from fastapi import APIRouter, Depends
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.admin import CustomPageBase, CustomPageOut
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/site-settings/custom-pages", tags=["Settings"])
admin_router = AdminAPIRouter(prefix="/api/site-settings/custom-pages", tags=["Settings"])

View File

@ -1,4 +1,6 @@
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
@ -6,7 +8,6 @@ from mealie.routes.routers import AdminAPIRouter
from mealie.schema.admin import SiteSettings
from mealie.schema.user import GroupInDB, UserInDB
from mealie.utils.post_webhooks import post_webhooks
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/api/site-settings", tags=["Settings"])
admin_router = AdminAPIRouter(prefix="/api/site-settings", tags=["Settings"])

View File

@ -1,10 +1,11 @@
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import is_logged_in
from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.schema.recipe import RecipeTagResponse, TagIn
from sqlalchemy.orm.session import Session
public_router = APIRouter()
user_router = UserAPIRouter()

View File

@ -1,4 +1,5 @@
from fastapi import Depends, status
from mealie.db.database import db
from mealie.db.db_setup import Session, generate_session
from mealie.routes.routers import UserAPIRouter

View File

@ -1,4 +1,5 @@
from fastapi import Depends, status
from mealie.db.database import db
from mealie.db.db_setup import Session, generate_session
from mealie.routes.routers import UserAPIRouter

View File

@ -1,4 +1,5 @@
from fastapi import HTTPException, status
from mealie.schema.user.user import UserInDB

View File

@ -2,13 +2,14 @@ from datetime import timedelta
from fastapi import HTTPException, status
from fastapi.param_functions import Depends
from sqlalchemy.orm.session import Session
from mealie.core.security import create_access_token
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.schema.user import CreateToken, LoingLiveTokenIn, LongLiveTokenInDB, UserInDB
from sqlalchemy.orm.session import Session
router = UserAPIRouter()

View File

@ -1,4 +1,6 @@
from fastapi import BackgroundTasks, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.core import security
from mealie.core.security import get_password_hash
from mealie.db.database import db
@ -8,7 +10,6 @@ from mealie.routes.routers import AdminAPIRouter, UserAPIRouter
from mealie.routes.users._helpers import assert_user_change_allowed
from mealie.schema.user import UserBase, UserIn, UserInDB, UserOut
from mealie.services.events import create_user_event
from sqlalchemy.orm.session import Session
user_router = UserAPIRouter(prefix="")
admin_router = AdminAPIRouter(prefix="")

View File

@ -1,11 +1,12 @@
from fastapi import Depends
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.routes.users._helpers import assert_user_change_allowed
from mealie.schema.user import UserFavorites, UserInDB
from sqlalchemy.orm.session import Session
user_router = UserAPIRouter()

View File

@ -3,6 +3,7 @@ import shutil
from fastapi import Depends, File, HTTPException, UploadFile, status
from fastapi.responses import FileResponse
from fastapi.routing import APIRouter
from mealie.core.config import app_dirs
from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter

View File

@ -1,4 +1,6 @@
from fastapi import Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.core.config import settings
from mealie.core.security import get_password_hash, verify_password
from mealie.db.database import db
@ -7,7 +9,6 @@ from mealie.routes.deps import get_current_user
from mealie.routes.routers import UserAPIRouter
from mealie.routes.users._helpers import assert_user_change_allowed
from mealie.schema.user import ChangePassword, UserInDB
from sqlalchemy.orm.session import Session
user_router = UserAPIRouter(prefix="")

View File

@ -1,6 +1,8 @@
import uuid
from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException, status
from sqlalchemy.orm.session import Session
from mealie.core.security import get_password_hash
from mealie.db.database import db
from mealie.db.db_setup import generate_session
@ -8,7 +10,6 @@ from mealie.routes.deps import get_admin_user
from mealie.routes.routers import AdminAPIRouter
from mealie.schema.user import SignUpIn, SignUpOut, SignUpToken, UserIn, UserInDB
from mealie.services.events import create_user_event
from sqlalchemy.orm.session import Session
public_router = APIRouter(prefix="/sign-ups")
admin_router = AdminAPIRouter(prefix="/sign-ups")

View File

@ -2,9 +2,10 @@ from pathlib import Path
from typing import Optional
from fastapi import APIRouter, Depends, HTTPException, status
from mealie.routes.deps import validate_file_token
from starlette.responses import FileResponse
from mealie.routes.deps import validate_file_token
router = APIRouter(prefix="/api/utils", tags=["Utils"], include_in_schema=True)

View File

@ -2,10 +2,11 @@ from datetime import date
from typing import Optional
from fastapi_camelcase import CamelModel
from mealie.db.models.mealplan import MealPlan
from pydantic import validator
from pydantic.utils import GetterDict
from mealie.db.models.mealplan import MealPlan
class MealIn(CamelModel):
slug: Optional[str]

View File

@ -1,9 +1,10 @@
from typing import Optional
from fastapi_camelcase import CamelModel
from mealie.db.models.shopping_list import ShoppingList
from pydantic.utils import GetterDict
from mealie.db.models.shopping_list import ShoppingList
class ListItem(CamelModel):
title: Optional[str]

View File

@ -3,12 +3,13 @@ from pathlib import Path
from typing import Any, Optional
from fastapi_camelcase import CamelModel
from mealie.core.config import app_dirs
from mealie.db.models.recipe.recipe import RecipeModel
from pydantic import BaseModel, Field, validator
from pydantic.utils import GetterDict
from slugify import slugify
from mealie.core.config import app_dirs
from mealie.db.models.recipe.recipe import RecipeModel
from .recipe_asset import RecipeAsset
from .recipe_comments import CommentOut
from .recipe_ingredient import RecipeIngredient

View File

@ -1,4 +1,5 @@
from fastapi_camelcase import CamelModel
from mealie.core.config import settings

View File

@ -4,12 +4,13 @@ from pathlib import Path
from typing import Any, Optional
from fastapi_camelcase import CamelModel
from mealie.core.config import app_dirs, settings
from mealie.db.models.recipe.recipe import RecipeModel
from pydantic import BaseModel, Field, validator
from pydantic.utils import GetterDict
from slugify import slugify
from mealie.core.config import app_dirs, settings
from mealie.db.models.recipe.recipe import RecipeModel
from .comments import CommentOut
from .units_and_foods import IngredientFood, IngredientUnit

View File

@ -1,12 +1,13 @@
from typing import Optional
from fastapi_camelcase import CamelModel
from pydantic.types import constr
from pydantic.utils import GetterDict
from mealie.core.config import settings
from mealie.db.models.group import Group
from mealie.db.models.users import User
from mealie.schema.recipe import RecipeSummary
from pydantic.types import constr
from pydantic.utils import GetterDict
from ..meal_plan import MealPlanOut, ShoppingListOut
from ..recipe import CategoryBase

View File

@ -5,13 +5,14 @@ from pathlib import Path
from typing import Union
from jinja2 import Template
from pathvalidate import sanitize_filename
from pydantic.main import BaseModel
from mealie.core import root_logger
from mealie.core.config import app_dirs
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.services.events import create_backup_event
from pathvalidate import sanitize_filename
from pydantic.main import BaseModel
logger = root_logger.get_logger()

View File

@ -4,6 +4,9 @@ import zipfile
from pathlib import Path
from typing import Callable
from pydantic.main import BaseModel
from sqlalchemy.orm.session import Session
from mealie.core.config import app_dirs
from mealie.db.database import db
from mealie.schema.admin import (
@ -21,8 +24,6 @@ from mealie.schema.events import EventNotificationIn
from mealie.schema.recipe import CommentOut, Recipe
from mealie.schema.user import UpdateGroup, UserInDB
from mealie.services.image import minify
from pydantic.main import BaseModel
from sqlalchemy.orm.session import Session
class ImportDatabase:

View File

@ -1,8 +1,9 @@
import apprise
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.events import Event, EventCategory
from sqlalchemy.orm.session import Session
def test_notification(notification_url, event=None) -> bool:

View File

@ -3,6 +3,7 @@ from dataclasses import dataclass
from pathlib import Path
import requests
from mealie.core import root_logger
from mealie.schema.recipe import Recipe
from mealie.services.image import minify

View File

@ -2,10 +2,11 @@ import shutil
from dataclasses import dataclass
from pathlib import Path
from PIL import Image
from mealie.core import root_logger
from mealie.core.config import app_dirs
from mealie.schema.recipe import Recipe
from PIL import Image
logger = root_logger.get_logger()

View File

@ -1,12 +1,13 @@
from datetime import date, timedelta
from typing import Union
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.meal_plan import MealDayIn, MealPlanIn
from mealie.schema.recipe import Recipe
from mealie.schema.user import GroupInDB
from sqlalchemy.orm.session import Session
def set_mealplan_dates(meal_plan_base: MealPlanIn) -> MealPlanIn:

View File

@ -4,6 +4,8 @@ from tempfile import TemporaryDirectory
from typing import Any, Callable, Optional
import yaml
from pydantic import BaseModel
from mealie.core import root_logger
from mealie.db.database import db
from mealie.schema.admin import MigrationImport
@ -11,7 +13,6 @@ from mealie.schema.recipe import Recipe
from mealie.services.image import image
from mealie.services.scraper import cleaner
from mealie.utils.unzip import unpack_zip
from pydantic import BaseModel
logger = root_logger.get_logger()

View File

@ -1,11 +1,12 @@
from pathlib import Path
from typing import Optional
from sqlalchemy.orm.session import Session
from mealie.core.config import app_dirs
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import helpers
from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase
from sqlalchemy.orm.session import Session
class ChowdownMigration(MigrationBase):

View File

@ -1,10 +1,11 @@
from enum import Enum
from pathlib import Path
from sqlalchemy.orm.session import Session
from mealie.core import root_logger
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import chowdown, nextcloud
from sqlalchemy.orm.session import Session
logger = root_logger.get_logger()

View File

@ -2,11 +2,12 @@ from dataclasses import dataclass
from pathlib import Path
from typing import Optional
from slugify import slugify
from sqlalchemy.orm.session import Session
from mealie.schema.admin import MigrationImport
from mealie.services.migrations import helpers
from mealie.services.migrations._migration_base import MigrationAlias, MigrationBase
from slugify import slugify
from sqlalchemy.orm.session import Session
@dataclass

View File

@ -3,12 +3,13 @@ from functools import lru_cache
from fastapi import Depends, Response
from fastapi.encoders import jsonable_encoder
from sqlalchemy.orm.session import Session
from mealie.core.root_logger import get_logger
from mealie.db.database import db
from mealie.db.db_setup import SessionLocal, generate_session
from mealie.routes.deps import is_logged_in
from mealie.schema.recipe import RecipeSummary
from sqlalchemy.orm.session import Session
logger = get_logger()

View File

@ -1,11 +1,12 @@
from typing import Any
from fastapi import BackgroundTasks, Depends
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user, is_logged_in
from pydantic import BaseModel
from sqlalchemy.orm.session import Session
from mealie.db.db_setup import generate_session
from mealie.routes.deps import get_current_user, is_logged_in
class CommonDeps(BaseModel):
session: Session

View File

@ -1,4 +1,7 @@
from fastapi import BackgroundTasks, Depends, HTTPException, status
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm.session import Session
from mealie.core.config import get_settings
from mealie.db.database import get_database
from mealie.db.db_setup import SessionLocal
@ -6,8 +9,6 @@ from mealie.schema.recipe.recipe import CreateRecipe, Recipe
from mealie.schema.user.user import UserInDB
from mealie.services.events import create_recipe_event
from mealie.services.recipe.media import delete_assets
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm.session import Session
from .common_deps import CommonDeps, _read_deps, _write_deps

View File

@ -1,5 +1,6 @@
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
from apscheduler.schedulers.background import BackgroundScheduler
from mealie.core.config import app_dirs, settings
app_dirs.DATA_DIR.joinpath("scheduler.db").unlink(missing_ok=True)

View File

@ -1,6 +1,7 @@
import datetime
from apscheduler.schedulers.background import BackgroundScheduler
from mealie.core import root_logger
from mealie.db.database import db
from mealie.db.db_setup import create_session

View File

@ -4,9 +4,10 @@ import re
from datetime import datetime, timedelta
from typing import List
from mealie.core.root_logger import get_logger
from slugify import slugify
from mealie.core.root_logger import get_logger
logger = get_logger()

View File

@ -5,10 +5,11 @@ from fractions import Fraction
from pathlib import Path
from typing import Optional
from pydantic import BaseModel
from mealie.core.config import settings
from mealie.schema.recipe import RecipeIngredient
from mealie.schema.recipe.recipe_ingredient import CreateIngredientFood, CreateIngredientUnit
from pydantic import BaseModel
from . import utils

View File

@ -1,10 +1,11 @@
from typing import Tuple
import extruct
from mealie.core.config import app_dirs
from slugify import slugify
from w3lib.html import get_base_url
from mealie.core.config import app_dirs
LAST_JSON = app_dirs.DEBUG_DIR.joinpath("last_recipe.json")

View File

@ -5,13 +5,14 @@ from uuid import uuid4
import requests
from fastapi import HTTPException, status
from recipe_scrapers import NoSchemaFoundInWildMode, SchemaScraperFactory, WebsiteNotImplementedError, scrape_me
from slugify import slugify
from mealie.core.config import app_dirs
from mealie.core.root_logger import get_logger
from mealie.schema.recipe import Recipe, RecipeStep
from mealie.services.image.image import scrape_image
from mealie.services.scraper import cleaner, open_graph
from recipe_scrapers import NoSchemaFoundInWildMode, SchemaScraperFactory, WebsiteNotImplementedError, scrape_me
from slugify import slugify
LAST_JSON = app_dirs.DEBUG_DIR.joinpath("last_recipe.json")

View File

@ -1,12 +1,13 @@
import json
import requests
from sqlalchemy.orm.session import Session
from mealie.db.database import db
from mealie.db.db_setup import create_session
from mealie.schema.user import GroupInDB
from mealie.services.events import create_scheduled_event
from mealie.services.meal_services import get_todays_meal
from sqlalchemy.orm.session import Session
def post_webhooks(group: int, session: Session = None, force=True):

2
poetry.lock generated
View File

@ -1321,7 +1321,7 @@ pgsql = ["psycopg2-binary"]
[metadata]
lock-version = "1.1"
python-versions = "^3.9"
content-hash = "4aaa78bc2bbe0e21ad78acd6fa35339eea5cdc88e7055337a0b0244021d7cec6"
content-hash = "03d6e9fea568f4167c5cc6865d417c57575305f7ad6813dd503c6f40e85090d7"
[metadata.files]
aiofiles = [

View File

@ -47,6 +47,7 @@ flake8 = "^3.9.0"
coverage = "^5.5"
pydantic-to-typescript = "^1.0.7"
rich = "^10.7.0"
isort = "^5.9.3"
[build-system]
requires = ["poetry-core>=1.0.0"]
@ -54,6 +55,11 @@ build-backend = "poetry.core.masonry.api"
[tool.black]
line-length = 120
[tool.isort]
profile = "black"
line_length = 120
multi_line_output = 3
[tool.pytest.ini_options]
minversion = "6.0"

View File

@ -4,11 +4,11 @@ import json
import requests
from fastapi.testclient import TestClient
from pytest import fixture
from mealie.app import app
from mealie.db.db_setup import SessionLocal, generate_session
from mealie.db.init_db import main
from pytest import fixture
from tests.app_routes import AppRoutes
from tests.test_config import TEST_DATA
from tests.utils.recipe_data import get_raw_no_image, get_raw_recipe, get_recipe_test_cases

View File

@ -3,6 +3,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from slugify import slugify
from tests.app_routes import AppRoutes
from tests.utils.recipe_data import RecipeSiteTestCase, get_recipe_test_cases

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from tests.app_routes import AppRoutes

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from tests.app_routes import AppRoutes

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from tests.app_routes import AppRoutes

View File

@ -2,6 +2,7 @@ import json
from fastapi.testclient import TestClient
from pytest import fixture
from tests.app_routes import AppRoutes

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from tests.app_routes import AppRoutes
from tests.utils.recipe_data import RecipeSiteTestCase

View File

@ -4,6 +4,7 @@ from pathlib import Path
import pytest
from fastapi.testclient import TestClient
from mealie.core.config import app_dirs
from tests.app_routes import AppRoutes
from tests.test_config import TEST_CHOWDOWN_DIR, TEST_NEXTCLOUD_DIR

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from mealie.schema.admin import SiteSettings
from tests.app_routes import AppRoutes

View File

@ -2,6 +2,7 @@ import json
import pytest
from fastapi.testclient import TestClient
from mealie.schema.user import SignUpToken
from tests.app_routes import AppRoutes

Some files were not shown because too many files have changed in this diff Show More