@@ -259,6 +259,13 @@ def modify(self, user_name, option, new_value, user_zone=""):
259259 logger .debug (response .int_info )
260260
261261
262+ CREATE_GROUP__USER_TYPE__DEFAULT__API_CHANGE__VERSION_THRESHOLD = (4 ,3 ,4 )
263+
264+ def get__group_create__user_type__default (session ):
265+ if session .server_version < CREATE_GROUP__USER_TYPE__DEFAULT__API_CHANGE__VERSION_THRESHOLD :
266+ return "rodsgroup"
267+ return ""
268+
262269class GroupManager (UserManager ):
263270
264271 def get (self , name , user_zone = "" ):
@@ -290,14 +297,27 @@ def _api_info(self, group_admin_flag):
290297 def create (
291298 self ,
292299 name ,
300+ user_type = get__group_create__user_type__default ,
301+ user_zone = "" ,
302+ auth_str = "" ,
293303 group_admin = None ,
294304 ** options ,
295305 ):
296- user_zone = options .pop ("user_zone" , "" )
297- auth_str = options .pop ("auth_str" , "" )
298- user_type = options .pop ("user_type" , "rodsgroup" )
306+ """Create and return a new iRODSGroup.
307+
308+ Input parameters:
309+ -----------------
310+ name: This is the name to be given to the new group.
311+ user_type: (deprecated parameter) This parameter should remain unused and will effectively resolve as "rodsgroup".
312+ user_zone: (deprecated parameter) In iRODS 4.3+, do not use this parameter as groups may not be made for a remote zone.
313+ auth_type: (deprecated parameter) This parameter should be left to default to "" as groups do not need authentication.
314+ group_admin: If left to its default value of None, seamlessly allows a groupadmin to create new groups.
315+ """
316+
317+ if callable (user_type ):
318+ user_type = user_type (self .sess )
299319
300- if user_zone != "" or auth_str != "" or user_type != " rodsgroup" :
320+ if user_zone != "" or auth_str != "" or user_type not in ( "" , " rodsgroup") :
301321 warnings .warn (
302322 "Use of non-default value for auth_str, user_type or user_zone in GroupManager.create is deprecated" ,
303323 DeprecationWarning ,
@@ -308,9 +328,15 @@ def create(
308328 api_to_use = api_number [api_key ]
309329
310330 if MessageClass is UserAdminRequest :
311- message_body = MessageClass ("mkgroup" , name , user_type , user_zone )
331+ message_body = MessageClass ("mkgroup" , name , "rodsgroup" )
312332 else :
313- message_body = MessageClass ("add" , "user" , name , user_type , "" , "" )
333+ message_body = MessageClass (
334+ "add" ,
335+ ("user" if self .sess .server_version < CREATE_GROUP__USER_TYPE__DEFAULT__API_CHANGE__VERSION_THRESHOLD else "group" ),
336+ name ,
337+ user_type ,
338+ "" ,
339+ "" )
314340 request = iRODSMessage ("RODS_API_REQ" , msg = message_body , int_info = api_to_use )
315341 with self .sess .pool .get_connection () as conn :
316342 conn .send (request )
0 commit comments