# get list of ids, if they don't exist, create arguments
id_arguments=[]
argstr=''
forkeyinkeyval.keys():
ifkeynotinallowedkeywords_lst:return[]
id_argument=(acc_getArgumentId(key,keyval[key])
or
run_sql("""INSERT INTO accARGUMENT (keyword, value) values ('%s', '%s') """%(key,keyval[key])))
id_arguments.append(id_argument)
argstr+=(argstrand','or'')+str(id_argument)
# check if equal authorization exists
for(id_trav,)inrun_sql("""SELECT DISTINCT argumentlistid FROM accROLE_accACTION_accARGUMENT WHERE id_accROLE = '%s' AND id_accACTION = '%s' """%(id_role,id_action)):
listlength=run_sql("""SELECT COUNT(*) FROM accROLE_accACTION_accARGUMENT
WHERE id_accROLE = '%s' AND id_accACTION = '%s' AND argumentlistid = '%s' AND
id_accARGUMENT IN (%s) """%(id_role,id_action,id_trav,argstr))[0][0]
notlist=run_sql("""SELECT COUNT(*) FROM accROLE_accACTION_accARGUMENT
WHERE id_accROLE = '%s' AND id_accACTION = '%s' AND argumentlistid = '%s' AND
id_accARGUMENT NOT IN (%s) """%(id_role,id_action,id_trav,argstr))[0][0]
arglistid=run_sql("""SELECT MAX(argumentlistid) FROM accROLE_accACTION_accARGUMENT WHERE id_accROLE = %s AND id_accACTION = %s """%
(id_role,id_action))[0][0]+1
exceptProgrammingError:return0
except(IndexError,TypeError):arglistid=1
ifarglistid<=0:arglistid=1
ifverbose:print'ids: insert all the entries'
# all references are valid, insert: one entry in raa for each argument
forid_argumentinid_arguments:
ifnotrun_sql("""SELECT * FROM accROLE_accACTION_accARGUMENT WHERE id_accROLE = %s AND id_accACTION = %s AND id_accARGUMENT = %s AND argumentlistid = %s"""%
ifrun_sql("""SELECT * FROM accROLE_accACTION_accARGUMENT WHERE id_accROLE = %s AND id_accACTION = %s AND id_accARGUMENT = 0 AND argumentlistid = 0""",(id_role,id_action)):
return[['#','argument keyword'],['0','action without arguments']]
# tuples into lists
res2,arglistids=[],{}
forresinres1:
res2.append([])
forrinres:res2[-1].append(r)
res2.sort()
# create multilevel dictionary
forresinres2:
a,kw,value=res# rolekey, argumentlistid, keyword, value