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: |