Coverage for model/profile.py: 100%

39 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2026-07-24 16:42 +0000

1from fastapi import APIRouter, Depends 

2from typing import Optional 

3 

4from mongo import * 

5from .auth import login_required 

6from .utils import * 

7from .schemas import EditProfileBody, EditConfigBody 

8 

9__all__ = ['profile_router'] 

10 

11profile_router = APIRouter() 

12 

13 

14@profile_router.get('') 

15@profile_router.get('/{username}') 

16def view_profile(user=Depends(login_required), username: Optional[str] = None): 

17 user = user if username is None else User(username) 

18 if not user: 

19 return HTTPError('Profile not exist.', 404) 

20 

21 data = { 

22 'email': user.obj.email, 

23 'displayedName': user.obj.profile.displayed_name, 

24 'bio': user.obj.profile.bio, 

25 } 

26 data.update(user.info) 

27 

28 return HTTPResponse('Profile exist.', data=data) 

29 

30 

31@profile_router.post('') 

32def edit_profile(body: EditProfileBody, user=Depends(login_required)): 

33 profile = user.obj.profile or {} 

34 displayed_name = body.displayed_name 

35 bio = body.bio 

36 

37 if displayed_name is not None: 

38 profile[ 

39 'displayed_name'] = displayed_name if displayed_name != "" else user.username 

40 if bio is not None: 

41 profile['bio'] = bio 

42 

43 user.obj.update(profile=profile) 

44 

45 cookies = {'jwt': user.cookie} 

46 return HTTPResponse('Uploaded.', cookies=cookies) 

47 

48 

49@profile_router.put('/config') 

50def edit_config(body: EditConfigBody, user=Depends(login_required)): 

51 try: 

52 config = { 

53 'font_size': body.font_size, 

54 'theme': body.theme, 

55 'indent_type': body.indent_type, 

56 'tab_size': body.tab_size, 

57 'language': body.language, 

58 } 

59 user.obj.update(editor_config=config) 

60 except ValidationError as ve: 

61 return HTTPError('Update fail.', 400, data=ve.to_dict()) 

62 user.reload() 

63 cookies = {'jwt': user.cookie} 

64 return HTTPResponse('Uploaded.', cookies=cookies)