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

1from fastapi import APIRouter, Depends, Response 

2from sqlalchemy.orm.session import Session 

3 

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 

10 

11router = APIRouter(prefix="/about") 

12 

13 

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() 

18 

19 public_repos = get_repositories(session, group_id=None, household_id=None) 

20 

21 default_group_slug: str | None = None 

22 default_household_slug: str | None = None 

23 

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 

27 

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 

33 

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 ) 

48 

49 

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() 

54 

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 

59 

60 return AppStartupInfo( 

61 is_first_login=is_first_login, 

62 is_demo=settings.IS_DEMO, 

63 ) 

64 

65 

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() 

70 

71 resp.headers["Cache-Control"] = "public, max-age=604800" 

72 return AppTheme(**settings.theme.model_dump())