Skip to content

Commit e38da84

Browse files
committed
Merge branch 'master' into chunk-queries
2 parents 7575f09 + fc0ea31 commit e38da84

3 files changed

Lines changed: 31 additions & 11 deletions

File tree

membersuite_api_client/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self, membersuite_object_data):
1616
self.fields = convert_ms_object(
1717
membersuite_object_data["Fields"]["KeyValueOfstringanyType"])
1818

19-
self.id = self.fields["ID"]
19+
self.membersuite_id = self.fields["ID"]
2020
self.extra_data = membersuite_object_data
2121

2222
def __str__(self):

membersuite_api_client/security/models.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,38 @@ def __str__(self):
3030
return ("<PortalUser: ID: {id}, email_address: {email_address}, "
3131
"first_name: {first_name}, last_name: {last_name}, "
3232
"owner: {owner}, session_id: {session_id}>".format(
33-
id=self.id,
33+
id=self.membersuite_id,
3434
email_address=self.email_address,
3535
first_name=self.first_name,
3636
last_name=self.last_name,
3737
owner=self.owner,
3838
session_id=self.session_id))
3939

40-
def get_username(self):
40+
def generate_username(self):
4141
"""Return a username suitable for storing in auth.User.username.
4242
43+
Has to be <= 30 characters long. (Until we drop support for
44+
Django 1.4, after which we can define a custom User model with
45+
a larger username field.)
46+
47+
We want to incorporate the membersuite_id in the username.
48+
Those look like this:
49+
50+
00000000-0032-c842-a28a-0b3c8b856f80
51+
52+
That's 36 characters, too long for username. Making the
53+
assumption that those leading zeroes will always be there in
54+
every ID. Since they're not needed to generate a unique
55+
value, they can go.
56+
57+
After chomping the zeroes, we're at 27 characters, so we
58+
insert "ms-" in the front.
59+
4360
"""
44-
return "_membersuite_id_{}".format(self.id)
61+
assert self.membersuite_id.startswith("00000000-")
62+
username = self.membersuite_id.replace("00000000-", '')
63+
username = "ms-" + username
64+
return username
4565

4666
def get_individual(self, client):
4767
"""Return the Individual that owns this PortalUser.
@@ -90,7 +110,7 @@ def __init__(self, membersuite_object_data, portal_user=None):
90110
def __str__(self):
91111
return ("<Individual: ID: {id}, email_address: {email_address}, "
92112
"first_name: {first_name}, last_name: {last_name}>".format(
93-
id=self.id,
113+
id=self.membersuite_id,
94114
email_address=self.email_address,
95115
first_name=self.first_name,
96116
last_name=self.last_name))

membersuite_api_client/tests/test_security.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ def setUpClass(cls):
8181
def setUp(self):
8282
self.portal_user = get_portal_user(client=self.client)
8383

84-
def test_get_username(self):
85-
"""Does get_username() work?
84+
def test_generate_username(self):
85+
"""Does generate_username() work?
8686
8787
"""
88-
self.portal_user.id = "fake-membersuite-id"
89-
self.assertEqual("_membersuite_id_fake-membersuite-id",
90-
self.portal_user.get_username())
88+
self.portal_user.membersuite_id = "00000000-fake-membersuite-id"
89+
self.assertEqual("ms-fake-membersuite-id",
90+
self.portal_user.generate_username())
9191

9292
def test_get_individual(self):
9393
"""Does get_individual() work?
@@ -96,7 +96,7 @@ def test_get_individual(self):
9696
individual = self.portal_user.get_individual(client=self.client)
9797
self.assertEqual(self.portal_user.first_name, individual.first_name)
9898
self.assertEqual(self.portal_user.last_name, individual.last_name)
99-
self.assertEqual(self.portal_user.owner, individual.id)
99+
self.assertEqual(self.portal_user.owner, individual.membersuite_id)
100100

101101

102102
class IndividualTestCase(unittest.TestCase):

0 commit comments

Comments
 (0)