Merge with facc7cc5c7f0457ee36d5d71b3fc93e363348032
authorRaphael Velt <raph.velt@gmail.com>
Wed, 14 Dec 2011 18:23:08 +0100
changeset 412 97c082990f8d
parent 408 4141c5821c98 (current diff)
parent 410 bf5cf5a9e737 (diff)
child 413 972af2c4af80
child 414 e2c1a2386124
Merge with facc7cc5c7f0457ee36d5d71b3fc93e363348032
web/res/css/tweetcast.css
web/res/js-tweetcast/live-polemic.js
--- a/script/lib/iri_tweet/models.py	Wed Dec 14 18:22:27 2011 +0100
+++ b/script/lib/iri_tweet/models.py	Wed Dec 14 18:23:08 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	Wed Dec 14 18:22:27 2011 +0100
+++ b/script/lib/iri_tweet/utils.py	Wed Dec 14 18:23:08 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):