script/lib/iri_tweet/utils.py
changeset 409 f7ceddf99d6d
parent 289 a5eff8f2b81d
child 411 0471e6eb8a1b
equal deleted inserted replaced
402:b59be14258dd 409:f7ceddf99d6d
   197         
   197         
   198 
   198 
   199 
   199 
   200     def __get_user(self, user_dict, do_merge, query_twitter = False):
   200     def __get_user(self, user_dict, do_merge, query_twitter = False):
   201         get_logger().debug("Get user : " + repr(user_dict)) #@UndefinedVariable
   201         get_logger().debug("Get user : " + repr(user_dict)) #@UndefinedVariable
       
   202         
       
   203         user_dict = adapt_fields(user_dict, fields_adapter["stream"]["user"])
   202     
   204     
   203         user_id = user_dict.get("id",None)    
   205         user_id = user_dict.get("id",None)    
   204         user_name = user_dict.get("screen_name", user_dict.get("name", None))
   206         user_name = user_dict.get("screen_name", user_dict.get("name", None))
   205         
   207         
   206         if user_id is None and user_name is None:
   208         if user_id is None and user_name is None:
   209         user = None
   211         user = None
   210         if user_id:
   212         if user_id:
   211             user = self.obj_buffer.get(User, id=user_id)
   213             user = self.obj_buffer.get(User, id=user_id)
   212         else:
   214         else:
   213             user = self.obj_buffer.get(User, screen_name=user_name)
   215             user = self.obj_buffer.get(User, screen_name=user_name)
   214             
   216 
       
   217         #to do update user id needed            
   215         if user is not None:
   218         if user is not None:
       
   219             user_created_at = None
       
   220             if user.args is not None:
       
   221                 user_created_at = user.args.get('created_at', None)
       
   222             if user_created_at is None and user_dict.get('created_at', None) is not None and do_merge:
       
   223                 if user.args is None:
       
   224                     user.args = user_dict
       
   225                 else:
       
   226                     user.args.update(user_dict)
   216             return user
   227             return user
   217 
   228 
   218         #todo : add methpds to objectbuffer to get buffer user
   229         #todo : add methpds to objectbuffer to get buffer user
   219         user_obj = None
   230         user_obj = None
   220         if user_id:
   231         if user_id:
   221             user_obj = self.session.query(User).filter(User.id == user_id).first()
   232             user_obj = self.session.query(User).filter(User.id == user_id).first()
   222         else:
   233         else:
   223             user_obj = self.session.query(User).filter(User.screen_name.ilike(user_name)).first()
   234             user_obj = self.session.query(User).filter(User.screen_name.ilike(user_name)).first()
   224     
   235     
   225         if user_obj is not None:
   236         #todo update user if needed
   226             user = ObjectBufferProxy(User, None, None, False, user_obj)
   237         if user_obj is not None:            
       
   238             if user_obj.created_at is not None or user_dict.get('created_at', None) is None or not do_merge :
       
   239                 user = ObjectBufferProxy(User, None, None, False, user_obj)
       
   240             else:
       
   241                 user = self.obj_buffer.add_object(User, None, user_dict, True, user_obj)
   227             return user
   242             return user
   228     
   243     
   229         user_created_at = user_dict.get("created_at", None)
   244         user_created_at = user_dict.get("created_at", None)
   230         
   245         
   231         if user_created_at is None and query_twitter:
   246         if user_created_at is None and query_twitter:
   242                     user_dict = t.users.show(screen_name=user_name)            
   257                     user_dict = t.users.show(screen_name=user_name)            
   243             except Exception as e:
   258             except Exception as e:
   244                 get_logger().info("get_user : TWITTER ERROR : " + repr(e)) #@UndefinedVariable
   259                 get_logger().info("get_user : TWITTER ERROR : " + repr(e)) #@UndefinedVariable
   245                 get_logger().info("get_user : TWITTER ERROR : " + str(e)) #@UndefinedVariable
   260                 get_logger().info("get_user : TWITTER ERROR : " + str(e)) #@UndefinedVariable
   246                 return None
   261                 return None
   247     
   262             
   248         user_dict = adapt_fields(user_dict, fields_adapter["stream"]["user"])
       
   249         if "id" not in user_dict:
   263         if "id" not in user_dict:
   250             return None
   264             return None
   251         
   265         
   252         #TODO filter get, wrap in proxy
   266         #TODO filter get, wrap in proxy
   253         user_obj = self.session.query(User).filter(User.id == user_dict["id"]).first()
   267         user_obj = self.session.query(User).filter(User.id == user_dict["id"]).first()
   254         
   268         
   255         if user_obj is not None:
   269         if user_obj is not None and not do_merge:
   256             if not do_merge:
   270             return ObjectBufferProxy(User, None, None, False, user_obj)
   257                 return ObjectBufferProxy(User, None, None, False, user_obj)
   271         else:        
   258         
   272             return self.obj_buffer.add_object(User, None, user_dict, True)        
   259         user = self.obj_buffer.add_object(User, None, user_dict, True)
       
   260         
       
   261         return user
       
   262 
   273 
   263     def __get_or_create_object(self, klass, filter_by_kwargs, filter, creation_kwargs, must_flush, do_merge):
   274     def __get_or_create_object(self, klass, filter_by_kwargs, filter, creation_kwargs, must_flush, do_merge):
   264         
   275         
   265         obj_proxy = self.obj_buffer.get(klass, **filter_by_kwargs)
   276         obj_proxy = self.obj_buffer.get(klass, **filter_by_kwargs)
   266         if obj_proxy is None:
   277         if obj_proxy is None: