improve the user management. try to complete user information whenever possible.
--- 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)
--- 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):