Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/app/app_about.py: 78%
37 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
1from fastapi import APIRouter, Depends, Response 1b
2from sqlalchemy.orm.session import Session 1b
4from mealie.core.config import get_app_settings 1b
5from mealie.core.settings.static import APP_VERSION 1b
6from mealie.db.db_setup import generate_session 1b
7from mealie.db.models.users.users import User 1b
8from mealie.repos.all_repositories import get_repositories 1b
9from mealie.schema.admin.about import AppInfo, AppStartupInfo, AppTheme 1b
11router = APIRouter(prefix="/about") 1b
14@router.get("", response_model=AppInfo) 1b
15def get_app_info(session: Session = Depends(generate_session)): 1b
16 """Get general application information"""
17 settings = get_app_settings() 1acdefghi
19 public_repos = get_repositories(session, group_id=None, household_id=None) 1acdefghi
21 default_group_slug: str | None = None 1acdefghi
22 default_household_slug: str | None = None 1acdefghi
24 default_group = public_repos.groups.get_by_name(settings.DEFAULT_GROUP) 1acdefghi
25 if default_group and default_group.preferences and not default_group.preferences.private_group: 25 ↛ 26line 25 didn't jump to line 26 because the condition on line 25 was never true1acdefghi
26 default_group_slug = default_group.slug
28 if default_group and default_group_slug: 28 ↛ 29line 28 didn't jump to line 29 because the condition on line 28 was never true1acdefghi
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:
32 default_household_slug = default_household.slug
34 return AppInfo( 1acdefghi
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) 1b
51def get_startup_info(session: Session = Depends(generate_session)): 1b
52 """returns helpful startup information"""
53 settings = get_app_settings() 1a
55 is_first_login = False 1a
56 with session as db: 1a
57 if db.query(User).filter_by(email=settings._DEFAULT_EMAIL).count() > 0: 57 ↛ 60line 57 didn't jump to line 601a
58 is_first_login = True 1a
60 return AppStartupInfo( 1a
61 is_first_login=is_first_login,
62 is_demo=settings.IS_DEMO,
63 )
66@router.get("/theme", response_model=AppTheme) 1b
67def get_app_theme(resp: Response): 1b
68 """Get's the current theme settings"""
69 settings = get_app_settings() 1a
71 resp.headers["Cache-Control"] = "public, max-age=604800" 1a
72 return AppTheme(**settings.theme.model_dump()) 1a