Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
 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)
Esempio n. 4
0
    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'])
Esempio n. 5
0
    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'])
Esempio n. 6
0
 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)
Esempio n. 7
0
    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
Esempio n. 8
0
File: user.py Progetto: yisan/Icarus
    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)
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
 async def on_complete(id_lst: IDList):
     # 创建完成后添加入日志
     for id_ in id_lst:
         post_stats_new(POST_TYPES.BOARD, id_)