def id_perm_changes(s, handle, fd, permdata, set): removelist = [] changelist = [] addlist = [] if not check_fd_sel(fd, set) or not check_perm_sel(permdata, set): return([removelist,changelist,addlist]) for perm_act in set['PermAct']: # pass if no action is defined if not perm_act['Action']: pass elif perm_act['Action']['Action'] == 'Remove': for perm in permdata['perms']: if Match.parse(perm_act['Criteria'], perm): removelist.append(perm) elif perm_act['Action']['Action'] == 'Change': for perm in permdata['perms']: if Match.parse(perm_act['Criteria'], perm): # delete the old permission newperm = perm.copy() if 'Read' in perm: del(newperm['Read']) if 'Write'in perm: del(newperm['Write']) if 'Manage' in perm: del(newperm['Manage']) for key,val in perm_act['Action']['Perms'].items(): newperm[key] = val changelist.append(newperm) elif perm_act['Action']['Action'] == 'Add': addFlag = True for perm in permdata['perms']: if not Match.parse(perm_act['Criteria'], perm): addFlag = False if addFlag: pEntry = {} pEntry['handle'] = perm_act['Action']['Handle'] grpdata = DCC.prop_get(s, pEntry['handle'], InfoSet = 'Title') pEntry['name'] = grpdata['title'] if 'Read' in perm_act['Action']['Perms']: pEntry['Read'] = perm_act['Action']['Perms']['Read'] if 'Write' in perm_act['Action']['Perms']: pEntry['Write'] = perm_act['Action']['Perms']['Write'] if 'Manage' in perm_act['Action']['Perms']: pEntry['Manage'] = perm_act['Action']['Perms']['Manage'] addlist.append(pEntry) elif perm_act['Action']['Action'] == 'Message': for perm in permdata['perms']: if Match.parse(perm_act['Criteria'], perm): print(perm_act['Action']['Message']) DCC.print_perm(perm, LF = True) return([removelist, changelist, addlist])
def print_perm_changes(removelist, changelist, addlist): for perm in removelist: print('??? Remove ??? :',end='') DCC.print_perm(perm,LF=True) for perm in changelist: print('??? Change ??? :',end='') DCC.print_perm(perm,LF=True) for perm in addlist: print('??? Add ??? :',end='') DCC.print_perm(perm,LF=True) print()
def make_perm_changes(s, handle, permdata, removelist, changelist, addlist, **kwargs): ask_flag = kwargs.get('Ask',True) mod_flag = False if ask_flag == True: ans = MyUtil.get_all_none_indiv('Make Changes? All/None/Individual (A/N/I)?') if ans == 'All': ask_flag = False elif ans == 'None': return for perm in removelist: print('Remove?: ',end='') DCC.print_perm(perm) if ask_flag == False or MyUtil.get_yn(': (Y/N)?'): if ask_flag == False: print() mod_flag = True MyUtil.remove_dict_from_list(permdata['perms'],'handle',perm['handle']) for chperm in changelist: print('Change?:', end='') DCC.print_perm(chperm) if ask_flag == False or MyUtil.get_yn(': (Y/N)?'): if ask_flag == False: print() mod_flag = True for perm in permdata['perms']: if perm['handle'] == chperm['handle']: if 'Read' in perm: del(perm['Read']) if 'Write'in perm: del(perm['Write']) if 'Manage' in perm: del(perm['Manage']) for key,val in chperm.items(): perm[key] = val for addperm in addlist: print('Add?:', end='') DCC.print_perm(addperm) if ask_flag == False or MyUtil.get_yn(': (Y/N)?'): if ask_flag == False: print() mod_flag = True permdata['perms'].append(addperm) if debug: DCC.print_perms(permdata) if mod_flag: # check ask_flag since it may have been modified from kwargs value if ask_flag == False: modify_dcc_perms(s, handle, permdata, Ask=False) else: modify_dcc_perms(s,handle,permdata, **kwargs)