Coverage for src / mesh / ojs / import_user.py: 0%

41 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-05-04 12:41 +0000

1import logging 

2from datetime import datetime 

3 

4from django.contrib.auth.base_user import BaseUserManager 

5from lxml import etree 

6 

7from mesh.models import User 

8from mesh.ojs import NSMAP 

9from mesh.ojs.lxml_utils import ( 

10 find_and_make_test_email_or_raise, 

11 findtext_or_raise, 

12 str_to_datetime, 

13) 

14from mesh.views.utils import create_new_user 

15 

16logger = logging.getLogger(__name__) 

17 

18 

19def import_ojs_user(element: "etree._Element"): 

20 ojs_email = BaseUserManager.normalize_email( 

21 find_and_make_test_email_or_raise(element, "email") 

22 ) 

23 ojs_first_name = findtext_or_raise(element, "givenname") 

24 ojs_last_name = findtext_or_raise(element, "familyname") 

25 ojs_date_joined = findtext_or_raise(element, "date_registered") 

26 date_joined = str_to_datetime(ojs_date_joined) 

27 

28 user = User.objects.filter(email=ojs_email).first() 

29 if user is None: 

30 user = create_new_user(ojs_email, ojs_first_name, ojs_last_name) 

31 logger.debug(f"Created user {ojs_email}") 

32 

33 user.date_joined = date_joined 

34 user.save() 

35 

36 ojs_roles = element.findall("user_group_ref", NSMAP) 

37 for role_tag in ojs_roles: 

38 if role_tag.text == "Journal manager": 

39 if not user.journal_manager: 

40 logger.debug(f"Set user {ojs_email} as journal manager") 

41 user.journal_manager = True 

42 user.current_role = "journal_manager" 

43 user.save() 

44 return user 

45 

46 

47def get_user_or_create_fake_one(email: str): 

48 user = User.objects.filter(email=email).first() 

49 

50 if user is None: 

51 try: 

52 user = create_new_user(email, "john", "doe") 

53 logger.debug(f"Created fake user named John Doe with email address : {email}") 

54 user.date_joined = datetime.today() 

55 user.save() 

56 except Exception as e: 

57 # TODO : Cannot find or create user with email : Aharon.Yechiel@clariter.com_test 

58 raise ValueError(f"Error occurred while creating fake user: {e}") 

59 

60 return user