Skip to content

Commit f2a194b

Browse files
Remove name from UserAdapter (#3086)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 320d74f commit f2a194b

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

users/adapters.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import TYPE_CHECKING
22

33
from mitol.scim.adapters import UserAdapter
4+
from mitol.scim.constants import SchemaURI
45

56
from openedx.models import OpenEdxUser
67
from users.models import LegalAddress, UserProfile
@@ -16,7 +17,9 @@ class LearnUserAdapter(UserAdapter):
1617
django_scim library.
1718
"""
1819

19-
ATTR_MAP = UserAdapter.ATTR_MAP | {
20+
ATTR_MAP = {
21+
("active", None, None): "is_active",
22+
("userName", None, None): "username",
2023
("fullName", None, None): "name",
2124
}
2225

@@ -49,6 +52,23 @@ def display_name(self):
4952
"""
5053
return self.obj.name
5154

55+
def to_dict(self):
56+
"""
57+
Return a ``dict`` conforming to the SCIM User Schema,
58+
ready for conversion to a JSON object.
59+
"""
60+
return {
61+
"id": self.id,
62+
"externalId": self.obj.scim_external_id,
63+
"schemas": [SchemaURI.USER],
64+
"userName": self.obj.username,
65+
"displayName": self.display_name,
66+
"emails": self.emails,
67+
"active": self.obj.is_active,
68+
"groups": [],
69+
"meta": self.meta,
70+
}
71+
5272
def from_dict(self, d):
5373
"""
5474
Consume a ``dict`` conforming to the SCIM User Schema, updating the
@@ -61,9 +81,14 @@ def from_dict(self, d):
6181
scim_user.from_dict(d)
6282
scim_user.save()
6383
"""
64-
super().from_dict(d)
65-
66-
self.obj.name = d.get("fullName", self.obj.name) # name's default is ""
84+
self.parse_emails(d.get("emails"))
85+
86+
self.obj.is_active = d.get("active", True)
87+
self.obj.username = d.get("userName")
88+
self.obj.scim_username = d.get("userName")
89+
self.obj.scim_external_id = d.get("externalId")
90+
self.obj.global_id = self.obj.scim_external_id or ""
91+
self.obj.name = d.get("fullName", self.obj.name)
6792

6893
def _save_related(self):
6994
self.user_profile.user = self.obj

0 commit comments

Comments
 (0)