@@ -107,20 +107,52 @@ def make_group_member_uri(self, group_id, member_id=None, params=None):
107107 member_id = member_id , params = params )
108108
109109 MakeGroupMembersUri = make_group_member_uri
110+
111+ def RetrieveAllPages (self , feed , desired_class = gdata .data .GDFeed ):
112+ """Retrieve all pages and add all elements.
110113
111- def retrieve_all_groups (self , ** kwargs ):
112- """Retrieves all groups for the given domain.
114+ Args:
115+ feed: gdata.data.GDFeed object with linked elements.
116+ desired_class: type of Feed to be returned.
117+
118+ Returns:
119+ desired_class: subclass of gdata.data.GDFeed.
120+ """
121+
122+ next = feed .GetNextLink ()
123+ while next is not None :
124+ next_feed = self .GetFeed (next .href , desired_class = desired_class )
125+ for a_entry in next_feed .entry :
126+ feed .entry .append (a_entry )
127+ next = next_feed .GetNextLink ()
128+ return feed
129+
130+ def retrieve_page_of_groups (self , ** kwargs ):
131+ """Retrieves first page of groups for the given domain.
113132
114133 Args:
115134 kwargs: The other parameters to pass to gdata.client.GDClient.GetFeed()
116135
117136 Returns:
118- A gdata.apps.groups.data.GDFeed of the group users
137+ A gdata.apps.groups.data.GroupFeed of the groups
119138 """
120139 uri = self .MakeGroupProvisioningUri ()
121140 return self .GetFeed (uri ,
122141 desired_class = gdata .apps .groups .data .GroupFeed , ** kwargs )
123142
143+ RetrievePageOfGroups = retrieve_page_of_groups
144+
145+ def retrieve_all_groups (self ):
146+ """Retrieve all groups in this domain.
147+
148+ Returns:
149+ gdata.apps.groups.data.GroupFeed of the groups
150+ """
151+
152+ groups_feed = self .RetrievePageOfGroups ()
153+ # pagination
154+ return self .RetrieveAllPages (groups_feed , gdata .apps .groups .data .GroupFeed )
155+
124156 RetrieveAllGroups = retrieve_all_groups
125157
126158 def retrieve_group (self , group_id , ** kwargs ):
@@ -134,11 +166,45 @@ def retrieve_group(self, group_id, **kwargs):
134166 A gdata.apps.groups.data.GroupEntry representing the group
135167 """
136168 uri = self .MakeGroupProvisioningUri (group_id = group_id )
137- print uri
138169 return self .GetEntry (uri ,
139170 desired_class = gdata .apps .groups .data .GroupEntry , ** kwargs )
140171
141172 RetrieveGroup = retrieve_group
173+
174+ def retrieve_page_of_member_groups (self , member_id , direct_only = False ):
175+ """Retrieve one page of groups that belong to the given member_id.
176+
177+ Args:
178+ member_id: The member's email address (e.g. member@example.com).
179+ direct_only: Boolean whether only return groups that this member
180+ directly belongs to.
181+
182+ Returns:
183+ gdata.apps.groups.data.GroupFeed of the groups.
184+ """
185+ uri = self .MakeGroupProvisioningUri (params = {'member' :member_id ,
186+ 'directOnly' :direct_only })
187+ return self .GetFeed (uri ,
188+ desired_class = gdata .apps .groups .data .GroupFeed , ** kwargs )
189+
190+ RetrievePageOfMemberGroups = retrieve_page_of_member_groups
191+
192+ def retrieve_groups (self , member_id , direct_only = False , ** kwargs ):
193+ """Retrieve all groups that belong to the given member_id.
194+
195+ Args:
196+ member_id: The member's email address (e.g. member@example.com).
197+ direct_only: Boolean whether only return groups that this member
198+ directly belongs to.
199+
200+ Returns:
201+ gdata.apps.groups.data.GroupFeed of the groups
202+ """
203+ groups_feed = self .RetrievePageOfMemberGroups ()
204+ # pagination
205+ return self .RetrieveAllPages (groups_feed , gdata .apps .groups .data .GroupFeed )
206+
207+ RetrieveGroups = retrieve_groups
142208
143209 def create_group (self , group_id , group_name ,
144210 description = None , email_permission = None , ** kwargs ):
@@ -190,20 +256,34 @@ def delete_group(self, group_id, **kwargs):
190256
191257 DeleteGroup = delete_group
192258
193- def retrieve_all_members (self , group_id , ** kwargs ):
194- """Retrieves group members of the group.
259+ def retrieve_page_of_members (self , group_id , ** kwargs ):
260+ """Retrieves first page of group members of the group.
195261
196262 Args:
197263 group_id: string groupId of the group whose members are retrieved
198264 kwargs: The other parameters to pass to gdata.client.GDClient.GetFeed()
199265
200266 Returns:
201- A gdata.apps.groups.data.GDFeed of the GroupMember entries
267+ A gdata.apps.groups.data.GroupMemberFeed of the GroupMember entries
202268 """
203269 uri = self .MakeGroupMembersUri (group_id = group_id )
204270 return self .GetFeed (uri ,
205271 desired_class = gdata .apps .groups .data .GroupMemberFeed , ** kwargs )
206272
273+ RetrievePageOfMembers = retrieve_page_of_members
274+
275+ def retrieve_all_members (self , group_id , ** kwargs ):
276+ """Retrieve all members of the group.
277+
278+ Returns:
279+ gdata.apps.groups.data.GroupMemberFeed
280+ """
281+
282+ group_member_feed = self .RetrievePageOfMembers (group_id = group_id )
283+ # pagination
284+ return self .RetrieveAllPages (group_member_feed ,
285+ gdata .apps .groups .data .GroupMemberFeed )
286+
207287 RetrieveAllMembers = retrieve_all_members
208288
209289 def retrieve_group_member (self , group_id , member_id , ** kwargs ):
0 commit comments