コード例 #1
0
 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)
コード例 #2
0
 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"}))
コード例 #3
0
 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"}))
コード例 #4
0
 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)
コード例 #5
0
  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)
コード例 #6
0
    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('/')
コード例 #7
0
  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('/')
    
コード例 #8
0
    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)
コード例 #9
0
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)
コード例 #10
0
    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('/')
コード例 #11
0
  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('/')