Coverage for opt/mealie/lib/python3.12/site-packages/mealie/routes/users/registration.py: 64%

23 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 03:04 +0000

1from fastapi import APIRouter, Depends, HTTPException, status 

2 

3from mealie.core.config import get_app_settings 

4from mealie.repos.all_repositories import get_repositories 

5from mealie.routes._base import BasePublicController, controller 

6from mealie.schema.response import ErrorResponse 

7from mealie.schema.user.registration import CreateUserRegistration 

8from mealie.schema.user.user import UserOut 

9from mealie.services.event_bus_service.event_bus_service import EventBusService 

10from mealie.services.event_bus_service.event_types import EventTypes, EventUserSignupData 

11from mealie.services.user_services.registration_service import RegistrationService 

12 

13router = APIRouter(prefix="/register") 

14 

15 

16@controller(router) 

17class RegistrationController(BasePublicController): 

18 event_bus: EventBusService = Depends(EventBusService.as_dependency) 

19 

20 @router.post("", response_model=UserOut, status_code=status.HTTP_201_CREATED) 

21 def register_new_user(self, data: CreateUserRegistration): 

22 settings = get_app_settings() 

23 

24 if not settings.ALLOW_SIGNUP and data.group_token is None or data.group_token == "": 

25 raise HTTPException( 

26 status_code=status.HTTP_403_FORBIDDEN, 

27 detail=ErrorResponse.respond("User Registration is Disabled"), 

28 ) 

29 

30 registration_service = RegistrationService( 

31 self.logger, 

32 get_repositories(self.session, group_id=None, household_id=None), 

33 self.translator, 

34 ) 

35 

36 result = registration_service.register_user(data) 

37 

38 self.event_bus.dispatch( 

39 integration_id="registration", 

40 group_id=result.group_id, 

41 household_id=result.household_id, 

42 event_type=EventTypes.user_signup, 

43 document_data=EventUserSignupData(username=result.username, email=result.email), 

44 ) 

45 

46 return result