First debugging steps for creating a slice.
[sfa.git] / sfa / senslab / parsing.py
index 21d9a06..0a5092a 100644 (file)
@@ -3,11 +3,11 @@
 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,22 +18,22 @@ 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)
+       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)
+       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'}}
                
        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:
@@ -63,7 +63,8 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None)
                                        #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:
@@ -73,26 +74,49 @@ def parse_filter(list_to_filter, param_filter, type_of_list, return_fields=None)
                                        
        
                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 ]
+                        if check :
+                            dflt= defaultdict(str,param_filter)
+                            
+                        else:
+                            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