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
« prev ^ index » next coverage.py v7.13.1, created at 2026-05-04 12:41 +0000
1import logging
2from datetime import datetime
4from django.contrib.auth.base_user import BaseUserManager
5from lxml import etree
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
16logger = logging.getLogger(__name__)
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)
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}")
33 user.date_joined = date_joined
34 user.save()
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
47def get_user_or_create_fake_one(email: str):
48 user = User.objects.filter(email=email).first()
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}")
60 return user