# HG changeset patch # User Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com> # Date 1323282526 -3600 # Node ID f7ceddf99d6d79646fc6f90ad94c8e6bcc7fdbab # Parent b59be14258ddab5522939059202e25518c10d4ae improve the user management. try to complete user information whenever possible. diff -r b59be14258dd -r f7ceddf99d6d script/lib/iri_tweet/models.py --- a/script/lib/iri_tweet/models.py Thu Dec 01 00:16:38 2011 +0100 +++ b/script/lib/iri_tweet/models.py Wed Dec 07 19:28:46 2011 +0100 @@ -152,7 +152,7 @@ id = Column(BigInteger, primary_key=True, autoincrement=False) id_str = Column(String) contributors_enabled = Column(Boolean) - created_at = Column(DateTime) + created_at = Column(DateTime, index=True) description = Column(String) favourites_count = Column(Integer) follow_request_sent = Column(Boolean) 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):