async def after_insert(self, raw_post: Dict, values: SQLValuesToWrite, record: DataRecord): # 添加统计记录 post_stats_new(POST_TYPES.BOARD, record['id']) # 管理日志:新建板块 ManageLog.post_new(self, POST_TYPES.BOARD, record)
async def after_insert(self, values_lst: List[SQLValuesToWrite], records: List[DataRecord]): for record in records: # 添加统计记录 post_stats_new(POST_TYPES.BOARD, record['id']) # 管理日志:新建板块 ManageLog.post_new(self, POST_TYPES.BOARD, record)
def get_main_page_article(cls): try: return cls.select().where(cls.flag == 2).get() except cls.DoesNotExist: a = cls.insert(time=int(time.time()), user_id=None, flag=2, title="主页面", content=DEFAULT_WIKI_CONTENT, ref=None).execute() post_stats_new(POST_TYPES.WIKI, get_bytes_from_blob(a)) return cls.get(cls.id == a)
async def after_insert(self, raw_post: Dict, values: SQLValuesToWrite, record: DataRecord): # 添加统计记录 post_stats_new(POST_TYPES.WIKI, record['id']) # 添加创建记录 ManageLog.post_new(self, POST_TYPES.WIKI, record) if config.SEARCH_ENABLE: run_in_thread(esdb.es_update_wiki, record['id'])
async def after_insert(self, values_lst: List[SQLValuesToWrite], records: List[DataRecord]): for record in records: # 添加统计记录 post_stats_new(POST_TYPES.WIKI, record['id']) # 添加创建记录 ManageLog.post_new(self, POST_TYPES.WIKI, record) if config.SEARCH_ENABLE: run_in_thread(esdb.es_update_wiki, record['id'])
def get_sidebar_article(cls): try: return cls.select().where(cls.flag == 1).get() except cls.DoesNotExist: a = cls.insert(time=int(time.time()), user_id=None, flag=1, title="侧边栏", content=DEFAULT_SIDEBAR_CONTENT, ref=None).execute() post_stats_new(POST_TYPES.WIKI, a.tobytes()) return cls.get(cls.id == a)
async def after_insert(self, raw_post: Dict, values: SQLValuesToWrite, record: DataRecord): if record['number'] == 1: u = User.get(User.id == record['id']) u.group = USER_GROUP.ADMIN u.save() # 添加统计记录 post_stats_new(POST_TYPES.USER, record['id']) UserNotifLastInfo.new(record['id']) record['access_token'] = self._key
async def signup_cleanup(self, u): if u: # 添加统计记录 post_stats_new(POST_TYPES.USER, u.id) UserNotifLastInfo.new(u.id) if u.email: await UserModel.reg_code_cleanup(u.email) t: UserToken = await self.setup_user_token(u.id) self.finish(RETCODE.SUCCESS, {'id': u.id, 'access_token': t.get_token()}) else: self.finish(RETCODE.FAILED)
async def after_insert(self, values_lst: List[SQLValuesToWrite], records: List[DataRecord]): for record in records: if record['number'] == 1: u = User.get(User.id == record['id']) u.group = USER_GROUP.ADMIN u.save() # 添加统计记录 post_stats_new(POST_TYPES.USER, record['id']) UserNotifLastInfo.new(record['id']) record['access_token'] = self._key
async def create_user(self, password, email=None, phone=None) -> User: values = {} nprefix = config.USER_NICKNAME_AUTO_PREFIX + '_' if config.POST_ID_GENERATOR != config.AutoGenerator: # 若不使用数据库生成id uid = User.gen_id() values['id'] = uid.to_bin() values['nickname'] = nprefix + uid.to_hex() values['is_new_user'] = True values['change_nickname_chance'] = 1 if email: values['email'] = email.lower() if phone: values['phone'] = phone # 密码 ret = User.gen_password_and_salt(password) values.update(ret) values['group'] = USER_GROUP.NORMAL values['state'] = POST_STATE.NORMAL # 注册IP地址 values['ip_registered'] = await get_fuzz_ip(self) # 生成 access_token values.update(User.gen_key()) values['time'] = int(time.time()) try: uid = User.insert(values).execute() u = User.get_by_pk(uid) except peewee.IntegrityError as e: db.rollback() if e.args[0].startswith('duplicate key'): return self.finish(RETCODE.ALREADY_EXISTS) return self.finish(RETCODE.FAILED) except peewee.DatabaseError: db.rollback() return self.finish(RETCODE.FAILED) times = 3 success = False u.nickname = nprefix + to_hex(u.id.tobytes()) # 尝试填充用户名 while times >= 0: try: if u.number == 1: u.group = USER_GROUP.ADMIN u.save() success = True break except peewee.DatabaseError: db.rollback() times -= 1 u.nickname = nprefix + to_hex(os.urandom(8)) if not success: return self.finish(RETCODE.FAILED) # 清理现场 if email: await User.reg_code_cleanup(email) # 添加统计记录 post_stats_new(POST_TYPES.USER, u.id) UserNotifLastInfo.new(u.id) return u
async def on_complete(id_lst: IDList): # 创建完成后添加入日志 for id_ in id_lst: post_stats_new(POST_TYPES.BOARD, id_)