diff options
| author | Barry Warsaw | 2016-04-03 11:41:59 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2016-04-03 11:41:59 -0400 |
| commit | 5b0c0aba4a3778d7b358a7de9d17a07135965948 (patch) | |
| tree | 2243a7e2d66935962425c44f7c88c28d5b820e1c | |
| parent | 5976a7980dd00e183bb764f87c2ffc6570d1bb96 (diff) | |
| download | mailman-5b0c0aba4a3778d7b358a7de9d17a07135965948.tar.gz mailman-5b0c0aba4a3778d7b358a7de9d17a07135965948.tar.zst mailman-5b0c0aba4a3778d7b358a7de9d17a07135965948.zip | |
| -rw-r--r-- | src/mailman/rest/lists.py | 2 | ||||
| -rw-r--r-- | src/mailman/rest/members.py | 18 | ||||
| -rw-r--r-- | src/mailman/rest/root.py | 33 |
3 files changed, 20 insertions, 33 deletions
diff --git a/src/mailman/rest/lists.py b/src/mailman/rest/lists.py index 192a9f41e..51da341d1 100644 --- a/src/mailman/rest/lists.py +++ b/src/mailman/rest/lists.py @@ -147,7 +147,7 @@ class AList(_ListBase): email, self._mlist.list_id, role) if member is None: return NotFound(), [] - return AMember(context['api'], member.member_id) + return AMember(member.member_id) @child(roster_matcher) def roster(self, context, segments, role): diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py index 2a75973db..26c79aa0e 100644 --- a/src/mailman/rest/members.py +++ b/src/mailman/rest/members.py @@ -101,16 +101,13 @@ class MemberCollection(_MemberBase): class AMember(_MemberBase): """A member.""" - def __init__(self, api, member_id): + def __init__(self, member_id): # The member_id is either the member's UUID or the string # representation of the member's UUID. - self.api = api service = getUtility(ISubscriptionService) - try: - self._member = service.get_member(api.to_uuid(member_id)) - except ValueError: - # The string argument could not be converted to a UUID. - self._member = None + self._member_id = member_id + self._member = (None if member_id is None + else service.get_member(member_id)) def on_get(self, request, response): """Return a single member end-point.""" @@ -126,7 +123,7 @@ class AMember(_MemberBase): return NotFound(), [] if self._member is None: return NotFound(), [] - member_id = self.api.from_uuid(self._member.member_id) + member_id = context['api'].from_uuid(self._member_id) child = Preferences( self._member.preferences, 'members/{}'.format(member_id)) return child, [] @@ -138,10 +135,9 @@ class AMember(_MemberBase): return NotFound(), [] if self._member is None: return NotFound(), [] + member_id = context['api'].from_uuid(self._member_id) child = ReadOnlyPreferences( - self._member, - 'members/{}/all'.format( - self.api.from_uuid(self._member.member_id))) + self._member, 'members/{}/all'.format(member_id)) return child, [] def on_delete(self, context, response): diff --git a/src/mailman/rest/root.py b/src/mailman/rest/root.py index 289b714dd..6fad5bc7c 100644 --- a/src/mailman/rest/root.py +++ b/src/mailman/rest/root.py @@ -175,14 +175,10 @@ class TopLevel: /<api>/addresses/<email> """ if len(segments) == 0: - resource = AllAddresses() - resource.api = context['api'] - return resource + return AllAddresses() else: email = segments.pop(0) - resource = AnAddress(email) - resource.api = context['api'] - return resource, segments + return AnAddress(email), segments @child() def domains(self, context, segments): @@ -215,32 +211,29 @@ class TopLevel: @child() def members(self, context, segments): """/<api>/members""" - api = context['api'] if len(segments) == 0: - resource = AllMembers() - resource.api = api - return resource + return AllMembers() # Either the next segment is the string "find" or a member id. They # cannot collide. segment = segments.pop(0) if segment == 'find': resource = FindMembers() - resource.api = api else: - resource = AMember(api, segment) + try: + member_id = context['api'].to_uuid(segment) + except ValueError: + member_id = None + resource = AMember(member_id) return resource, segments @child() def users(self, context, segments): """/<api>/users""" - api = context['api'] if len(segments) == 0: - resource = AllUsers() - resource.api = api - return resource + return AllUsers() else: - user_id = segments.pop(0) - return AUser(api, user_id), segments + user_identifier = segments.pop(0) + return AUser(context['api'], user_identifier), segments @child() def owners(self, context, segments): @@ -248,9 +241,7 @@ class TopLevel: if len(segments) != 0: return BadRequest(), [] else: - resource = ServerOwners() - resource.api = context['api'] - return resource, segments + return ServerOwners(), segments @child() def templates(self, context, segments): |
