示例#1
0
    def run(self):
        import time
        from v2ex.service.fetcher_manager import FetcherManager

        while not self._stop_flag:
            time.sleep(1)
            nid = FetcherManager.get_task()
            ntf_token = NtfTokenDao.get_from_nid(nid)
            if ntf_token is None:
                FetcherManager.remove_task(nid)
                continue

            if self.should_check_update(ntf_token):
                if self.has_update(ntf_token):
                    logging.debug("found update for %s", ntf_token.token)
                    self.gcm_send(ntf_token.uid, gcm.send_notify)
                else:
                    logging.debug("not found update for %s", ntf_token.token)

                ntf_token.last_fetch_time = func.now()
                db.get_session().commit()
            elif self.should_ping(ntf_token):
                self.gcm_send(ntf_token.uid, gcm.send_ping)

                ntf_token.last_ping_time = func.now()
                db.get_session().commit()
示例#2
0
    def del_gcm_token(cls, uid, old_token):
        gcm_token = None
        has_left = False
        for token in cls.get_from_uid(uid):
            if token.token == old_token:
                gcm_token = token
                # continue loop to find it has left
                continue

            has_left = True
            if gcm_token is not None:
                # if already found token, break loop
                break

        if gcm_token is None:
            return

        db = get_session()
        db.delete(gcm_token)
        if not has_left:
            NtfTokenDao.del_for_user(uid)
        db.commit()
        return
示例#3
0
文件: api.py 项目: CzBiX/v2ex-server
    def post(self, username):
        user = UserDao.get_from_username(username)

        if user is None:
            self.send_error(400)
            return

        action = self.get_body_argument("action")

        if action == "set_ntf_token":
            token = self.get_body_argument("token")
            nid = NtfTokenDao.set_for_user(user.id, token)
            FetcherManager.add_task(nid)
        elif action == "add_gcm_token":
            token = self.get_body_argument("token")
            GcmTokenDao.add_gcm_token(user.id, token)
        elif action == "del_gcm_token":
            token = self.get_body_argument("token")
            GcmTokenDao.del_gcm_token(user.id, token)

        self.set_status(200)
示例#4
0
    def get(self):
        user_count = UserDao.get_count()
        token_count = NtfTokenDao.get_count()

        self.render("admin.html", user_count=user_count, token_count=token_count)