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:48 +0000

1from fastapi import APIRouter, Depends, Response 1b

2from sqlalchemy.orm.session import Session 1b

3 

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

10 

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

12 

13 

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

18 

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

20 

21 default_group_slug: str | None = None 1cdefghijklmnopqrstua

22 default_household_slug: str | None = None 1cdefghijklmnopqrstua

23 

24 default_group = public_repos.groups.get_by_name(settings.DEFAULT_GROUP) 1cdefghijklmnopqrstua

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 true1cdefghijklmnopqrstua

26 default_group_slug = default_group.slug 

27 

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 true1cdefghijklmnopqrstua

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 

33 

34 return AppInfo( 1cdefghijklmnopqrstua

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) 1b

51def get_startup_info(session: Session = Depends(generate_session)): 1b

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: 57 ↛ 60line 57 didn't jump to line 60

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) 1b

67def get_app_theme(resp: Response): 1b

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