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()
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
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)
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)