def post(self): fb_uid = str(self.request.get('fb_uid')) device_id = str(self.request.get('device_id')) user = CacheController.get_user_by_fb_id(fb_uid) if user is not None: logging.info("device id was set to " + device_id) user.device_id = device_id user.put() CacheController.invalidate_user_fb_id(fb_uid) logging.info("Device was registered successfully for user " + user.first_name + " " + user.last_name) else: logging.error("No user was found with user_id %s. Failed to register device." % fb_uid)
def post(self, fb_uid): user = CacheController.get_user_by_fb_id(fb_uid) nick = self.request.get("nick") info = self.request.get("info") if nick == "": user.nick = None else: user.nick = nick user.info = info user.put() CacheController.invalidate_user_fb_id(fb_uid) self.response.out.write(json.dumps({"success": "true"}))
def post(self, fb_uid): user = CacheController.get_user_by_fb_id(fb_uid) nick = self.request.get("nick") info = self.request.get("info") if nick == "": user.nick = None else: user.nick = nick user.info = info user.put() CacheController.invalidate_user_fb_id(fb_uid) self.response.out.write(json.dumps({"success" : "true"}))
def post(self): fb_uid = str(self.request.get('fb_uid')) device_id = str(self.request.get('device_id')) user = CacheController.get_user_by_fb_id(fb_uid) if user is not None: logging.info("device id was set to " + device_id) user.device_id = device_id user.put() CacheController.invalidate_user_fb_id(fb_uid) logging.info("Device was registered successfully for user " + user.first_name + " " + user.last_name) else: logging.error( "No user was found with user_id %s. Failed to register device." % fb_uid)
def add_vote_to_post(self, vote, is_new): db.run_in_transaction(ChoosiePost.add_vote_to_post_transaction, self.key(), vote) logging.info("user_id" + self.user_fb_id) logging.info("vote_id " + vote.user_fb_id) if is_new: user = CacheController.get_user_by_fb_id(self.user_fb_id) if user.num_votes: user.num_votes += 1 else: user.num_votes = 1 user.put() CacheController.invalidate_user_fb_id(user.fb_uid) if self.user_fb_id != vote.user_fb_id and self.created_at > datetime.datetime.now() - datetime.timedelta(0.1): # if i didnt vote on my self and the post was uploaded less then 2.5 hours ago vote_from = vote.get_user().display_name() deferred.defer(self.notify_vote_async, self.key(), self.user_fb_id, vote_from)
def post(self): user = CacheController.get_user_by_fb_id(self.request.get('fb_uid')) logging.info(self.request.get('fb_uid')) if user is None: self.error(500) logging.error("user not found!") return logging.info("user found!") logging.info("share_to_fb_param: " + self.request.get("share_to_fb", default_value="off")) if (self.request.get("share_to_fb", default_value="off") == "on"): logging.info("user" + user.fb_access_token) logging.info("user_db" + str(self.request.get('fb_access_token'))) logging.info("key " + str(user.key())) # updating user access token cause he might added publish_stream permission if (user.fb_access_token != str( self.request.get('fb_access_token'))): logging.info("Changing access_token!") user.fb_access_token = str(self.request.get('fb_access_token')) user.fb_access_token_expdate = Utils.get_access_token_from_request( self.request) user.put() CacheController.invalidate_user_fb_id(user.fb_uid) photo1_blob_key = Utils.write_file_to_blobstore( self.shrinkImage(self.request.get('photo1'))) photo2_blob_key = Utils.write_file_to_blobstore( self.shrinkImage(self.request.get('photo2'))) choosie_post = ChoosiePost(question=self.request.get('question'), user_fb_id=self.request.get('fb_uid'), photo1_blob_key=photo1_blob_key, photo2_blob_key=photo2_blob_key) # Save this post in the datastore, and also in the memcache. choosie_post.put() CacheController.set_model(choosie_post) logging.info("share:" + self.request.get("share_to_fb", default_value="off")) if (self.request.get("share_to_fb") == "on"): logging.info("publishing!!") choosie_post.publish_to_facebook(self.request.host_url) self.redirect('/')
def post(self): user = CacheController.get_user_by_fb_id(self.request.get('fb_uid')) logging.info(self.request.get('fb_uid')) if user is None: self.error(500) logging.error("user not found!") return logging.info("user found!") logging.info("share_to_fb_param: " + self.request.get("share_to_fb", default_value="off")) if (self.request.get("share_to_fb", default_value="off") == "on"): logging.info("user" + user.fb_access_token) logging.info("user_db" + str(self.request.get('fb_access_token'))) logging.info("key " + str(user.key())) # updating user access token cause he might added publish_stream permission if (user.fb_access_token != str(self.request.get('fb_access_token'))): logging.info("Changing access_token!") user.fb_access_token = str(self.request.get('fb_access_token')) user.fb_access_token_expdate = Utils.get_access_token_from_request(self.request) user.put() CacheController.invalidate_user_fb_id(user.fb_uid) photo1_blob_key = Utils.write_file_to_blobstore(self.shrinkImage(self.request.get('photo1'))) photo2_blob_key = Utils.write_file_to_blobstore(self.shrinkImage(self.request.get('photo2'))) choosie_post = ChoosiePost(question = self.request.get('question'), user_fb_id = self.request.get('fb_uid'), photo1_blob_key = photo1_blob_key, photo2_blob_key = photo2_blob_key) # Save this post in the datastore, and also in the memcache. choosie_post.put() CacheController.set_model(choosie_post) logging.info("share:" + self.request.get("share_to_fb", default_value="off")) if (self.request.get("share_to_fb") == "on"): logging.info("publishing!!") choosie_post.publish_to_facebook(self.request.host_url) self.redirect('/')
def add_vote_to_post(self, vote, is_new): db.run_in_transaction(ChoosiePost.add_vote_to_post_transaction, self.key(), vote) logging.info("user_id" + self.user_fb_id) logging.info("vote_id " + vote.user_fb_id) if is_new: user = CacheController.get_user_by_fb_id(self.user_fb_id) if user.num_votes: user.num_votes += 1 else: user.num_votes = 1 user.put() CacheController.invalidate_user_fb_id(user.fb_uid) if self.user_fb_id != vote.user_fb_id and self.created_at > datetime.datetime.now( ) - datetime.timedelta( 0.1 ): # if i didnt vote on my self and the post was uploaded less then 2.5 hours ago vote_from = vote.get_user().display_name() deferred.defer(self.notify_vote_async, self.key(), self.user_fb_id, vote_from)
class NotifyHandler(webapp2.RequestHandler): notify_type = {"new_post": 1, "comment": 2, "vote": 3} def get(self): message = "i love soja milk" # users = db.GqlQuery("SELECT * FROM User WHERE device_id > :1",None) users = User.all() user_array = [] # devices = ["APA91bHlkage-d5iZhdRAZtKS1gUy8q1LcEyGXmmhBzaGXxMTp6S5QIxQGkp8HxiTExI6cim4KngJXzamvbjzOKLrRUPKQpQqKaevHAEertE_PKKT8UjkLabSDTw8ljXYVt59k_xqIWK"] for user in users.run(): # devices.append(user.device_id) if user.device_id is not None: user_array.append(user) result = NotifyHandler.send_notifiction( NotifyHandler.notify_type["new_post"], "ron", "1", user_array) self.response.write("result is " + result) @staticmethod def send_notifiction(notification_type, text, post_key, recipients): device_ids_array = [user.device_id for user in recipients] logging.info("Sending notification to devices: %s", ", ".join(device_ids_array)) logging.info("Sending notification to users: %s", ", ".join([user.name() for user in recipients])) data = { "data": { "type": notification_type, "text": text, "post_key": post_key }, "registration_ids": device_ids_array } result = urlfetch.fetch( url="https://android.googleapis.com/gcm/send", payload=json.dumps(data), method=urlfetch.POST, headers={ 'Content-Type': 'application/json', 'Authorization': 'key=AIzaSyDAkpOHWW6km87yen5W9C8y1MaGn7-hQKw' }) result_is_json = False try: result_data = json.loads(result.content) result_is_json = True except Exception, e: logging.info("It is not json. Eshhhh.") if not result_is_json: return result.content logging.info(result_data) if result_data.get("canonical_ids") is not 0: for index, result in enumerate(result_data["results"]): if result.get("registration_id") is not None: logging.info( "Need to change device_id for user [%s]. New ID: %s", recipients[index].name(), result) user = recipients[index] user.device_id = result.get("registration_id") user.put() CacheController.invalidate_user_fb_id(user.fb_uid) return str(result)
def post(self): user = CacheController.get_user_by_fb_id(self.request.get('fb_uid')) logging.info(self.request.get('fb_uid')) if user is None: self.error(500) logging.error("user not found!") return logging.info("user found!") logging.info("share_to_fb_param: " + self.request.get("share_to_fb", default_value="off")) debug_show_fb = self.request.get("debug_show_fb", default_value="") logging.info("debug_show_fb: " + debug_show_fb) post_type_id = int(self.request.get("post_type_id", default_value="1")) if debug_show_fb: img1 = images.Image(self.shrinkImage(self.request.get('photo1'))) img2 = images.Image(self.shrinkImage(self.request.get('photo2'))) self.response.headers['Content-Type'] = 'image/png' self.response.out.write(Utils.compose_two_images(img1, img2)) return if self.request.get("share_to_fb", default_value="off") == "on": logging.info("user" + user.fb_access_token) logging.info("user_db" + str(self.request.get('fb_access_token'))) logging.info("key " + str(user.key())) # updating user access token cause he might added publish_stream permission if user.fb_access_token != str( self.request.get('fb_access_token')): logging.info("Changing access_token!") user.fb_access_token = str(self.request.get('fb_access_token')) user.fb_access_token_expdate = Utils.get_access_token_from_request( self.request) user.put() CacheController.invalidate_user_fb_id(user.fb_uid) if user.num_votes: user.num_votes += 1 else: user.num_votes = 1 user.put() CacheController.invalidate_user_fb_id(user.fb_uid) photo1_blob_key = Utils.write_file_to_blobstore( self.shrinkImage(self.request.get('photo1'))) if post_type_id == 1: photo2_blob_key = Utils.write_file_to_blobstore( self.shrinkImage(self.request.get('photo2'))) else: photo2_blob_key = None choosie_post = ChoosiePost(question=self.request.get('question'), user_fb_id=self.request.get('fb_uid'), photo1_blob_key=photo1_blob_key, photo2_blob_key=photo2_blob_key, post_type_id=post_type_id) # Save this post in the datastore, and also in the memcache. choosie_post.put() CacheController.set_model(choosie_post) logging.info("share:" + self.request.get("share_to_fb", default_value="off")) if self.request.get("share_to_fb") == "on": logging.info("publishing!!") choosie_post.publish_to_facebook(self.request.host_url) choosie_post.notify_friends() self.redirect('/')
def post(self): user = CacheController.get_user_by_fb_id(self.request.get('fb_uid')) logging.info(self.request.get('fb_uid')) if user is None: self.error(500) logging.error("user not found!") return logging.info("user found!") logging.info("share_to_fb_param: " + self.request.get("share_to_fb", default_value="off")) debug_show_fb = self.request.get("debug_show_fb", default_value="") logging.info("debug_show_fb: " + debug_show_fb) post_type_id = int(self.request.get("post_type_id", default_value="1")) if debug_show_fb: img1 = images.Image(self.shrinkImage(self.request.get('photo1'))) img2 = images.Image(self.shrinkImage(self.request.get('photo2'))) self.response.headers['Content-Type'] = 'image/png' self.response.out.write(Utils.compose_two_images(img1, img2)) return if self.request.get("share_to_fb", default_value="off") == "on": logging.info("user" + user.fb_access_token) logging.info("user_db" + str(self.request.get('fb_access_token'))) logging.info("key " + str(user.key())) # updating user access token cause he might added publish_stream permission if user.fb_access_token != str(self.request.get('fb_access_token')): logging.info("Changing access_token!") user.fb_access_token = str(self.request.get('fb_access_token')) user.fb_access_token_expdate = Utils.get_access_token_from_request(self.request) user.put() CacheController.invalidate_user_fb_id(user.fb_uid) if user.num_votes: user.num_votes += 1 else: user.num_votes = 1 user.put() CacheController.invalidate_user_fb_id(user.fb_uid) photo1_blob_key = Utils.write_file_to_blobstore(self.shrinkImage(self.request.get('photo1'))) if post_type_id == 1: photo2_blob_key = Utils.write_file_to_blobstore(self.shrinkImage(self.request.get('photo2'))) else: photo2_blob_key = None choosie_post = ChoosiePost(question = self.request.get('question'), user_fb_id = self.request.get('fb_uid'), photo1_blob_key = photo1_blob_key, photo2_blob_key = photo2_blob_key, post_type_id = post_type_id) # Save this post in the datastore, and also in the memcache. choosie_post.put() CacheController.set_model(choosie_post) logging.info("share:" + self.request.get("share_to_fb", default_value="off")) if self.request.get("share_to_fb") == "on": logging.info("publishing!!") choosie_post.publish_to_facebook(self.request.host_url) choosie_post.notify_friends() self.redirect('/')