script/lib/iri_tweet/iri_tweet/utils.py
changeset 889 c774bdf7d3dd
parent 888 6fc6637d8403
child 890 9c57883dbb9d
equal deleted inserted replaced
888:6fc6637d8403 889:c774bdf7d3dd
    57 def parse_date(date_str):
    57 def parse_date(date_str):
    58     ts = email.utils.parsedate_tz(date_str) #@UndefinedVariable
    58     ts = email.utils.parsedate_tz(date_str) #@UndefinedVariable
    59     return datetime.datetime(*ts[0:7])
    59     return datetime.datetime(*ts[0:7])
    60 
    60 
    61 def clean_keys(dict_val):
    61 def clean_keys(dict_val):
    62     return dict([(str(key),value) for key,value in dict_val.items()])
    62     return dict([(str(key),value) for key,value in dict_val.iteritems()])
    63 
    63 
    64 fields_adapter = {
    64 fields_adapter = {
    65     'stream': {
    65     'stream': {
    66         "tweet": {
    66         "tweet": {
    67             "created_at"    : adapt_date,
    67             "created_at"    : adapt_date,
    98     def adapt_one_field(field, value):
    98     def adapt_one_field(field, value):
    99         if field in adapter_mapping and adapter_mapping[field] is not None:
    99         if field in adapter_mapping and adapter_mapping[field] is not None:
   100             return adapter_mapping[field](value)
   100             return adapter_mapping[field](value)
   101         else:
   101         else:
   102             return value
   102             return value
   103     return dict([(str(k),adapt_one_field(k,v)) for k,v in fields_dict.items()])    
   103     return dict([(str(k),adapt_one_field(k,v)) for k,v in fields_dict.iteritems()])    
   104 
   104 
   105 
   105 
   106 class ObjectBufferProxy(object):
   106 class ObjectBufferProxy(object):
   107     def __init__(self, klass, args, kwargs, must_flush, instance=None):
   107     def __init__(self, klass, args, kwargs, must_flush, instance=None):
   108         self.klass= klass
   108         self.klass= klass
   111         self.must_flush = must_flush
   111         self.must_flush = must_flush
   112         self.instance = instance
   112         self.instance = instance
   113         
   113         
   114     def persists(self, session):
   114     def persists(self, session):
   115         new_args = [arg() if callable(arg) else arg for arg in self.args] if self.args is not None else []
   115         new_args = [arg() if callable(arg) else arg for arg in self.args] if self.args is not None else []
   116         new_kwargs = dict([(k,v()) if callable(v) else (k,v) for k,v in self.kwargs.items()]) if self.kwargs is not None else {}
   116         new_kwargs = dict([(k,v()) if callable(v) else (k,v) for k,v in self.kwargs.iteritems()]) if self.kwargs is not None else {}
   117         
   117         
   118         if self.instance is None:
   118         if self.instance is None:
   119             self.instance = self.klass(*new_args, **new_kwargs)
   119             self.instance = self.klass(*new_args, **new_kwargs)
   120         else:
   120         else:
   121             self.instance = self.klass(*new_args, **new_kwargs)
   121             self.instance = self.klass(*new_args, **new_kwargs)
   158         if klass in self.__bufferdict:
   158         if klass in self.__bufferdict:
   159             for proxy in self.__bufferdict[klass]:
   159             for proxy in self.__bufferdict[klass]:
   160                 if proxy.kwargs is None or len(proxy.kwargs) == 0 or proxy.klass != klass:
   160                 if proxy.kwargs is None or len(proxy.kwargs) == 0 or proxy.klass != klass:
   161                     continue
   161                     continue
   162                 found = True
   162                 found = True
   163                 for k,v in kwargs.items():
   163                 for k,v in kwargs.iteritems():
   164                     if (k not in proxy.kwargs) or v != proxy.kwargs[k]:
   164                     if (k not in proxy.kwargs) or v != proxy.kwargs[k]:
   165                         found = False
   165                         found = False
   166                         break
   166                         break
   167                 if found:
   167                 if found:
   168                     return proxy        
   168                     return proxy