def POST(self): id = xutils.get_argument("id") # xtables.get_schedule_table().delete(where=dict(id=id)) key = "schedule:%s" % id dbutil.delete(key) xmanager.load_tasks() raise web.seeother("/system/crontab")
def build_index(): # 先删除老的索引 for key, value in dbutil.prefix_iter("note_tiny:", include_key=True): dbutil.delete(key) # old key to new key for item in dbutil.prefix_iter("note_full:"): put_note_tiny(item) migrate_note_recent() return "迁移完成!"
def migrate_note_recent(): recent_list = dbutil.prefix_iter("note_recent", include_key=True) for key, item in recent_list: dbutil.delete(key) for item in dbutil.prefix_iter("note_tiny"): if item.type != "group": dbutil.zadd("note_recent:%s" % item.creator, item.mtime, item.id) if item.is_public: dbutil.zadd("note_recent:public", item.mtime, item.id) return "迁移完成!"
def check_and_run(task, tm): if self.match(task, tm): put_task(request_url, task) try: xutils.trace("RunTask", task.url) if task.tm_wday == "no-repeat": # 一次性任务直接删除 dbutil.delete(task.id) self.load_tasks() except Exception as e: xutils.log("run task [%s] failed, %s" % (task.url, e))
def delete_note(id): note = get_by_id(id) if note is None: return if note.is_deleted != 0: # 已经被删除了,执行物理删除 tiny_key = "note_tiny:%s:%s" % (note.creator, note.id) full_key = "note_full:%s" % note.id index_key = "note_index:%s" % note.id dbutil.delete(tiny_key) dbutil.delete(full_key) dbutil.delete(index_key) delete_history(note.id) return # 标记删除 note.mtime = xutils.format_datetime() note.is_deleted = 1 kv_put_note(id, note) # 更新数量 update_children_count(note.parent_id) delete_tags(note.creator, id) # 删除笔记本 book_key = "notebook:%s:%s" % (note.creator, format_note_id(id)) dbutil.delete(book_key) # 更新数量统计 refresh_note_stat(note.creator)
def delete_old_visit_log(creator, note_id): counter = Counter() def filter_func(key, value): log_id = get_id_from_log(value) counter.update("v") return log_id == note_id or counter["v"] > MAX_VIEW_LOG old_logs = dbutil.prefix_list("note_visit_log:%s:" % creator, filter_func, include_key=True, reverse=True) for key, value in old_logs: dbutil.delete(key)
def delete_note(id): print("try to delete note", id) note = get_by_id(id) if note is None: return if note.is_deleted == 1: # 已经被删除了,执行物理删除 tiny_key = "note_tiny:%s:%s" % (note.creator, note.id) full_key = "note_full:%s" % note.id index_key = "note_index:%s" % note.id dbutil.delete(tiny_key) dbutil.delete(full_key) dbutil.delete(index_key) return note.mtime = xutils.format_datetime() note.is_deleted = 1 kv_put_note(id, note) update_children_count(note.parent_id) delete_tags(note.creator, id) book_key = "notebook:%s:%020d" % (note.creator, int(id)) dbutil.delete(book_key) # 更新数量统计 refresh_note_stat(note.creator)
def migrate_note_history(): # sqlite to kv db = xtables.get_note_history_table() for item in db.select(): dbutil.put("note_history:%s:%s" % (item.note_id, item.version), item) # old_key to new_key for item in dbutil.prefix_iter("note.history"): # 这里leveldb第一版没有note_id,而是id字段 old_key = "note.history:%s:%s" % (item.id, item.version) new_key = "note_history:%s:%s" % (item.id, item.version) new_value = dbutil.get(new_key) if new_value and (new_value.mtime is None or item.mtime > new_value.mtime): dbutil.put(new_key, item) dbutil.delete(old_key) if new_value is None: dbutil.put(new_key, item) dbutil.delete(old_key) return "迁移完成!"
def update_public_index(note): if note.is_public: note_index = convert_to_index(note) dbutil.put("note_public:%s" % format_note_id(note.id), note_index) else: dbutil.delete("note_public:%s" % format_note_id(note.id))
def delete_comment(comment_id): dbutil.delete(comment_id)
def delete_tags(creator, note_id): key = "note_tags:%s:%s" % (creator, note_id) dbutil.delete(key)
def remove_user(name): if name == "admin": return name = name.lower() dbutil.delete("user:%s" % name) refresh_users()
def delete_message_by_id(id): dbutil.delete(id) xmanager.fire("message.remove", Storage(id=id))
def delete_visit_log(user_name, name, url): exist_log = find_visit_log(user_name, url) if exist_log != None: dbutil.delete(exist_log.key)