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

23 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 15:32 +0000

1from fastapi import APIRouter, Depends, HTTPException, status 1a

2 

3from mealie.core.config import get_app_settings 1a

4from mealie.repos.all_repositories import get_repositories 1a

5from mealie.routes._base import BasePublicController, controller 1a

6from mealie.schema.response import ErrorResponse 1a

7from mealie.schema.user.registration import CreateUserRegistration 1a

8from mealie.schema.user.user import UserOut 1a

9from mealie.services.event_bus_service.event_bus_service import EventBusService 1a

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

11from mealie.services.user_services.registration_service import RegistrationService 1a

12 

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

14 

15 

16@controller(router) 1a

17class RegistrationController(BasePublicController): 1a

18 event_bus: EventBusService = Depends(EventBusService.as_dependency) 1a

19 

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

21 def register_new_user(self, data: CreateUserRegistration): 1a

22 settings = get_app_settings() 1bc

23 

24 if not settings.ALLOW_SIGNUP and data.group_token is None or data.group_token == "": 24 ↛ 25line 24 didn't jump to line 25 because the condition on line 24 was never true1bc

25 raise HTTPException( 

26 status_code=status.HTTP_403_FORBIDDEN, 

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

28 ) 

29 

30 registration_service = RegistrationService( 1bc

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

37 

38 self.event_bus.dispatch( 1b

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