X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fsenslab%2Fparsing.py;h=3f4591354863bcbdfdf50bbd83eeca255d21780c;hb=aee25ad72d8092093b49c54311444c347b8bd799;hp=21d9a06fb4c89807c316c37aec9337735155a5c8;hpb=bb57cb30c7cfdddcf8e55fd7084e3cdaf67eaac4;p=sfa.git diff --git a/sfa/senslab/parsing.py b/sfa/senslab/parsing.py index 21d9a06f..3f459135 100644 --- a/sfa/senslab/parsing.py +++ b/sfa/senslab/parsing.py @@ -1,13 +1,12 @@ -# import modules used here -- sys is a very standard one import sys import httplib import json - +from collections import defaultdict def strip_dictionnary (dict_to_strip): stripped_filter = [] - stripped_filterdict = {} + stripped_filterdict = {} for f in dict_to_strip : stripped_filter.append(str(f).strip('|')) @@ -18,29 +17,25 @@ def strip_dictionnary (dict_to_strip): def filter_return_fields( dict_to_filter, return_fields): filtered_dict = {} - #print>>sys.stderr, " \r\n \t \tfilter_return_fields return fields %s " %(return_fields) for field in return_fields: - #print>>sys.stderr, " \r\n \t \tfield %s " %(field) if field in dict_to_filter: filtered_dict[field] = dict_to_filter[field] - #print>>sys.stderr, " \r\n \t\t filter_return_fields filtered_dict %s " %(filtered_dict) return filtered_dict def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None) : - list_type = { 'persons': {'str': 'email','int':'person_id'},\ + list_type = { 'persons': {'str': 'hrn','int':'record_id'},\ 'keys':{'int':'key_id'},\ 'site':{'str':'login_base','int':'site_id'},\ 'node':{'str':'hostname','int':'node_id'},\ - 'slice':{'str':'name','int':'slice_id'}} + 'slice':{'str':'slice_hrn','int':'record_id_slice'},\ + 'peers':{'str':'hrn'}} - print>>sys.stderr, " \r\n ___ parse_filter param_filter %s type %s return fields %s " %(param_filter,type_of_list, return_fields) if param_filter is None and return_fields is None: return list_to_filter if type_of_list not in list_type: - print>>sys.stderr, " \r\n type_of_list Error parse_filter %s " %(type_of_list) return [] return_filtered_list= [] @@ -49,10 +44,8 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None) tmp_item = {} if type(param_filter) is list : - #print>>sys.stderr, " \r\n p_filter LIST %s " %(param_filter) for p_filter in param_filter: - #print>>sys.stderr, " \r\n p_filter %s \t item %s " %(p_filter,item) if type(p_filter) is int: if item[list_type[type_of_list]['int']] == p_filter : if return_fields: @@ -60,39 +53,52 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None) else: tmp_item = item return_filtered_list.append(tmp_item) - #print>>sys.stderr, " \r\n 1tmp_item",tmp_item if type(p_filter) is str: - if item[list_type[type_of_list]['str']] == p_filter : + if item[list_type[type_of_list]['str']] == str(p_filter) : if return_fields: tmp_item = filter_return_fields(item,return_fields) else: tmp_item = item return_filtered_list.append(tmp_item) - #print>>sys.stderr, " \r\n 2tmp_item",tmp_item elif type(param_filter) is dict: - stripped_filterdict = strip_dictionnary(param_filter) - - tmp_copy = {} - tmp_copy = item.copy() - #print>>sys.stderr, " \r\n \t\t ________tmp_copy %s " %(tmp_copy) - key_list = tmp_copy.keys() - for key in key_list: - print>>sys.stderr, " \r\n \t\t key %s " %(key) - if key not in stripped_filterdict.keys(): - del tmp_copy[key] - + #stripped_filterdict = strip_dictionnary(param_filter) + #tmp_copy = {} + #tmp_copy = item.copy() + #key_list = tmp_copy.keys() + #for key in key_list: + #if key not in stripped_filterdict: + #del tmp_copy[key] + + #rif the item matches the filter, returns it + founditem = [] + check = [ True for k in param_filter.keys() if 'id' in k ] + dflt= defaultdict(str,param_filter) + + + + #founditem = [ item for k in dflt if item[k] in dflt[k]] + for k in dflt: + if item[k] in dflt[k]: + founditem = [item] + + if founditem: + if return_fields: + tmp_item = filter_return_fields(founditem[0],return_fields) + else: + tmp_item = founditem[0] + return_filtered_list.append(tmp_item) - #print>>sys.stderr, " \r\n tmp_copy %s param_filter %s cmp = %s " %(tmp_copy, param_filter,cmp(tmp_copy, stripped_filterdict)) - if cmp(tmp_copy, stripped_filterdict) == 0: - if return_fields: - tmp_item = filter_return_fields(item,return_fields) - else: + #if cmp(tmp_copy, stripped_filterdict) == 0: + #if return_fields: + #tmp_item = filter_return_fields(item,return_fields) + #else: - tmp_item = item - return_filtered_list.append(tmp_item) - - return return_filtered_list \ No newline at end of file + #tmp_item = item + #return_filtered_list.append(tmp_item) + if return_filtered_list : + return return_filtered_list + \ No newline at end of file