From 05cfbdb47a70dd0d322122ef4303218fc98dc8fd Mon Sep 17 00:00:00 2001 From: fandrem <none@none> Date: Thu, 12 May 2022 15:24:09 +0200 Subject: [PATCH] Feature #28491 - sid_user.py script --- bin/sid_user.py | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/bin/sid_user.py b/bin/sid_user.py index 91d1877..656baaf 100755 --- a/bin/sid_user.py +++ b/bin/sid_user.py @@ -379,20 +379,22 @@ def sid_update_user_exlude_approver_scheduler_change_management(diego, dfqdn, re else: print("removed " + user + " from " + typeExclude) -def sid_create_update_user_approver_scheduler_change_management(diego, dfqdn, res_rw_user, user, uid, typeAdd, need_to_update, context_uid=778000000, verify=True): +def sid_create_update_user_approver_scheduler_change_management(diego, dfqdn, res_rw_user, user, uid, typeAdd, need_to_update, context_uid=666000002, verify=True): create = True results = diego.diegoGetObject(uid) ty = [] ty2 = [] - if 'objects' in results : - for typ in results['objects'] : - ty.append(typ['type']) - #if is one of that create -> TODO : just support one by context! - if typ['type'] in ['approver', 'scheduler'] : - create = False - ty2 = ty - ty2.append(typeAdd) - + #print(results) 666060597 + if 'has as act' in results['properties'] : + if (isinstance(results['properties']['has as act'], list)): + for act in results['properties']['has as act'] : + ty.append(act['name']) + else : + ty.append(results['properties']['has as act']['name']) + + if typeAdd not in ty : + ty.append(typeAdd) + #new relation to workaround Polymorphism if create : block_to_update = { 'uid': uid, @@ -402,6 +404,16 @@ def sid_create_update_user_approver_scheduler_change_management(diego, dfqdn, re 'is a specialization of' : typeAdd, 'type': typeAdd, } + + #new version "has as act" + block_to_update = { + 'uid': uid, + 'name': user, + 'context': 666000002, + 'type': 'user', + 'properties': {'has as act': ty} + } + to_print = pformat(block_to_update) for i in list(range(0, int(round(len(to_print) / 250)) + 1)): logger.info('scrat %s update cmd: %s' % (str(i), to_print[250 * i:250 * (i + 1)])) @@ -409,8 +421,9 @@ def sid_create_update_user_approver_scheduler_change_management(diego, dfqdn, re ''' delete: need to check the line exist if not 409''' scrat_inst = Scrat(res_rw_user, '', fqdn=dfqdn, version=2, verify=verify) #(scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode=True, line_only=True, Full=True) - (scrat_json, scratres) = scrat_inst.scratQuery(block_to_update, Full=True) + #(scrat_json, scratres) = scrat_inst.scratQuery(block_to_update, Full=True) #(scrat_json, scratres) = scrat_inst.scratQuery(scratter, Full=True) + (scrat_json, scratres) = scrat_inst.scratUpdate(block_to_update, overwrite_mode='exclusive', line_only=False, Full=True) if str(scratres) != '200': '''Scrat add new user relation in diferent context''' to_print = pformat(block_to_update) @@ -904,7 +917,7 @@ def main(): sid_create_update_user_approver_scheduler_change_management(diego, fqdn, res_rw_user, user, sid_results[1][user]['uid'], 'scheduler', need_to_update) #pass else: - logger.error('dry run, user not add/update from the scheduler role.') + logger.error('dry run, user not add/update from the scheduler role in "has as act"') continue @@ -939,7 +952,7 @@ def main(): sid_create_update_user_approver_scheduler_change_management(diego, fqdn, res_rw_user, user, sid_results[1][user]['uid'], 'approver', need_to_update) #pass else: - logger.error('dry run, user not add/update from the approver role.') + logger.error('dry run, user not add/update from the approver role in "has as act".') continue ''' * scrat department -- GitLab