Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/app/app_about.py: 98%
37 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from fastapi import APIRouter, Depends, Response
2from sqlalchemy.orm.session import Session
4from mealie.core.config import get_app_settings
5from mealie.core.settings.static import APP_VERSION
6from mealie.db.db_setup import generate_session
7from mealie.db.models.users.users import User
8from mealie.repos.all_repositories import get_repositories
9from mealie.schema.admin.about import AppInfo, AppStartupInfo, AppTheme
11router = APIRouter(prefix="/about")
14@router.get("", response_model=AppInfo)
15def get_app_info(session: Session = Depends(generate_session)):
16 """Get general application information"""
17 settings = get_app_settings()
19 public_repos = get_repositories(session, group_id=None, household_id=None)
21 default_group_slug: str | None = None
22 default_household_slug: str | None = None
24 default_group = public_repos.groups.get_by_name(settings.DEFAULT_GROUP)
25 if default_group and default_group.preferences and not default_group.preferences.private_group:
26 default_group_slug = default_group.slug
28 if default_group and default_group_slug:
29 group_repos = get_repositories(session, group_id=default_group.id, household_id=None)
30 default_household = group_repos.households.get_by_name(settings.DEFAULT_HOUSEHOLD)
31 if default_household and default_household.preferences and not default_household.preferences.private_household: 31 ↛ 34line 31 didn't jump to line 34 because the condition on line 31 was always true
32 default_household_slug = default_household.slug
34 return AppInfo(
35 version=APP_VERSION,
36 demo_status=settings.IS_DEMO,
37 production=settings.PRODUCTION,
38 allow_signup=settings.ALLOW_SIGNUP,
39 default_group_slug=default_group_slug,
40 default_household_slug=default_household_slug,
41 enable_oidc=settings.OIDC_READY,
42 oidc_redirect=settings.OIDC_AUTO_REDIRECT,
43 oidc_provider_name=settings.OIDC_PROVIDER_NAME,
44 enable_openai=settings.OPENAI_ENABLED,
45 enable_openai_image_services=settings.OPENAI_ENABLED and settings.OPENAI_ENABLE_IMAGE_SERVICES,
46 allow_password_login=settings.ALLOW_PASSWORD_LOGIN,
47 )
50@router.get("/startup-info", response_model=AppStartupInfo)
51def get_startup_info(session: Session = Depends(generate_session)):
52 """returns helpful startup information"""
53 settings = get_app_settings()
55 is_first_login = False
56 with session as db:
57 if db.query(User).filter_by(email=settings._DEFAULT_EMAIL).count() > 0:
58 is_first_login = True
60 return AppStartupInfo(
61 is_first_login=is_first_login,
62 is_demo=settings.IS_DEMO,
63 )
66@router.get("/theme", response_model=AppTheme)
67def get_app_theme(resp: Response):
68 """Get's the current theme settings"""
69 settings = get_app_settings()
71 resp.headers["Cache-Control"] = "public, max-age=604800"
72 return AppTheme(**settings.theme.model_dump())