diff -r b59be14258dd -r f7ceddf99d6d script/lib/iri_tweet/utils.py --- a/script/lib/iri_tweet/utils.py Thu Dec 01 00:16:38 2011 +0100 +++ b/script/lib/iri_tweet/utils.py Wed Dec 07 19:28:46 2011 +0100 @@ -199,6 +199,8 @@ def __get_user(self, user_dict, do_merge, query_twitter = False): get_logger().debug("Get user : " + repr(user_dict)) #@UndefinedVariable + + user_dict = adapt_fields(user_dict, fields_adapter["stream"]["user"]) user_id = user_dict.get("id",None) user_name = user_dict.get("screen_name", user_dict.get("name", None)) @@ -211,8 +213,17 @@ user = self.obj_buffer.get(User, id=user_id) else: user = self.obj_buffer.get(User, screen_name=user_name) - + + #to do update user id needed if user is not None: + user_created_at = None + if user.args is not None: + user_created_at = user.args.get('created_at', None) + if user_created_at is None and user_dict.get('created_at', None) is not None and do_merge: + if user.args is None: + user.args = user_dict + else: + user.args.update(user_dict) return user #todo : add methpds to objectbuffer to get buffer user @@ -222,8 +233,12 @@ else: user_obj = self.session.query(User).filter(User.screen_name.ilike(user_name)).first() - if user_obj is not None: - user = ObjectBufferProxy(User, None, None, False, user_obj) + #todo update user if needed + if user_obj is not None: + if user_obj.created_at is not None or user_dict.get('created_at', None) is None or not do_merge : + user = ObjectBufferProxy(User, None, None, False, user_obj) + else: + user = self.obj_buffer.add_object(User, None, user_dict, True, user_obj) return user user_created_at = user_dict.get("created_at", None) @@ -244,21 +259,17 @@ get_logger().info("get_user : TWITTER ERROR : " + repr(e)) #@UndefinedVariable get_logger().info("get_user : TWITTER ERROR : " + str(e)) #@UndefinedVariable return None - - user_dict = adapt_fields(user_dict, fields_adapter["stream"]["user"]) + if "id" not in user_dict: return None #TODO filter get, wrap in proxy user_obj = self.session.query(User).filter(User.id == user_dict["id"]).first() - if user_obj is not None: - if not do_merge: - return ObjectBufferProxy(User, None, None, False, user_obj) - - user = self.obj_buffer.add_object(User, None, user_dict, True) - - return user + if user_obj is not None and not do_merge: + return ObjectBufferProxy(User, None, None, False, user_obj) + else: + return self.obj_buffer.add_object(User, None, user_dict, True) def __get_or_create_object(self, klass, filter_by_kwargs, filter, creation_kwargs, must_flush, do_merge):