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('|'))
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)
+ #print>>sys.stderr, " \r\n type_of_list Error parse_filter %s " %(type_of_list)
return []
-
- #print>>sys.stderr, " \r\n ____FIRST ENTRY parse_filter param_filter %s type %s list %s " %(param_filter, type(param_filter), list_to_filter)
+
return_filtered_list= []
for item in list_to_filter:
#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) :
+ #print>>sys.stderr, " \r\n p_filter %s \t item %s "%(p_filter,item[list_type[type_of_list]['str']])
if return_fields:
tmp_item = filter_return_fields(item,return_fields)
else:
elif type(param_filter) is dict:
- stripped_filterdict = strip_dictionnary(param_filter)
-
- tmp_copy = {}
- tmp_copy = item.copy()
+ #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]
-
+ #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:
+ #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:
+ #print>>sys.stderr, " \r\n \r\n parsing.py param_filter dflt %s founditem %s " %(dflt, founditem)
+ 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