Skip to content

Commit d4547db

Browse files
d-w-moorealanking
authored andcommitted
[#742] change keyword user=>group to add rodsgroup in iRODS 5
1 parent 800fd95 commit d4547db

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

irods/manager/user_manager.py

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
262269
class 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

Comments
 (0)