コード例 #1
0
ファイル: cron.py プロジェクト: chengkejian/developer
async def put(app, request, oid):
    cron = await get_item(app.pool, 'cron', int(oid))
    if request.json.get('status'):
        request.json['status'] = 'enable'
        try:
            c = CronTab(cron['cron'])
        except Exception as e:
            return fail('定时器格式有误,请先修改为正确的定时器')
        later = c.next(default_utc=False)
        next_run = datetime.datetime.now() + datetime.timedelta(seconds=later)
        request.json['next_run'] = next_run.strftime('%Y-%m-%d %H:%M:%S')
    else:
        if request.json.get('other'):
            if request.json['runner_id'] == '': return fail('未选择执行器')
            for i in request.json.get('other').keys():
                if request.json.get('other')[i].strip() == '':
                    return fail('%s 不能为空' % ('定时器' if i == 'cron' else i))
                request.json[i] = request.json.get('other')[i]
            try:
                c = CronTab(request.json['cron'])
            except Exception as e:
                return fail('定时器格式有误,请检查')
            if cron['status'] == 'enable':
                later = c.next(default_utc=False)
                next_run = datetime.datetime.now() + datetime.timedelta(
                    seconds=later)
                request.json['next_run'] = next_run.strftime(
                    '%Y-%m-%d %H:%M:%S')
            request.json.pop('other')
        else:
            request.json['status'] = 'disable'
            request.json['next_run'] = '2000-01-01 00:00:00'
    await runner.run(21, {'db': app.pool})
    pass
コード例 #2
0
async def post(app, request):
    keys = request.json.keys()
    for c in ['password']:
        if c not in keys:
            return fail('miss')
    if request.json['password']:
        await modify_item(
            app.pool, 'users', request['user']['id'],
            {'key': app.fernet.encrypt(request.json['password'])})
        return ok('OK')
    else:
        return fail('')
コード例 #3
0
async def post(app, request):
    if request.json.get('roles') and 'name' in request.json.get('other') and 'executer_id' in request.json.get('other'):
        roles_view = set()
        for i in request.json['roles'].keys():
            roles_view.add(i) if request.json['roles'][i] else []
        if len(roles_view) < 1: return fail('权限为必填')
        request.json['roles_view'] = roles_view
        request.json.pop('roles')
        request.json['name'] = request.json.get('other')['name']
        request.json['executer_id'] = request.json.get('other')['executer_id']
        request.json.pop('other')
        request.json['status'] = 'true'
    else: return fail('参数不能为空')
コード例 #4
0
async def post(app, request):
    args = request.json.get('other')
    if args.get('title', False) and args.get('runner', False) and args.get(
            'content', False) and args.get('result_mapper',
                                           False) and args.get('async', False):
        for i in args.keys():
            if args[i].strip() == '': return fail('%s 不能为空' % (i))
            request.json[i] = args[i]
        request.json[
            'async'] = True if request.json['async'] == 'True' else False
        request.json.pop('other')
    else:
        return fail('参数不能为空')
コード例 #5
0
async def post(app, request):
    if request.json.get('roles') and request.json.get('name'):
        roles = await get_items(app.pool, 'roles')
        role_desc = {str(i.get('id')): i.get('role_code') for i in roles}
        permission = set()
        for i in request.json['roles'].keys():
            if request.json['roles'][i]:
                permission.add(role_desc[i])
        if len(permission) < 1: return fail('权限不为空')
        request.json.pop('roles')
        request.json['permission'] = permission
    else:return fail('Name OR 权限 不能为空')
    request.json['type'] = 'internal'
    pass
コード例 #6
0
async def post(app, request):
    if request.json.get('roles') and is_complete(request.json['other']):
        roles_view = set()
        for i in request.json['roles'].keys():
            roles_view.add(i) if request.json['roles'][i] else []
        if len(roles_view) < 1: return fail('权限为必填')
        request.json.pop('roles')
        request.json['roles'] = roles_view
        for k in request.json.get('other').keys():
            request.json[k] = request.json.get('other')[k]
        # request.json['arguments'] = json.dumps(request.json['arguments'])
        request.json['end_status'] = set(request.json['end_status'])
        request.json.pop('other')
    else:
        return fail('所有参数不能为空')
コード例 #7
0
async def put(app, request, oid):
    roles = await get_items(app.pool, 'roles')
    role_desc = {str(i.get('id')): i.get('role_code') for i in roles}
    roles_view = set()
    for i in request.json['roles'].keys():
        roles_view.add(role_desc[i]) if request.json['roles'][i] else []
    if len(roles_view) < 1: return fail('权限为必填')
    request.json.pop('roles')
    request.json['roles'] = roles_view
    for k in request.json.get('other').keys():
        if request.json.get('other')[k].strip() == '':
            return fail('%s 不能为空' % (k))
        request.json[k] = str(request.json.get('other')[k])
    if request.json.get('end_status'):
        request.json['end_status'] = set(request.json['end_status'])
    request.json.pop('other')
コード例 #8
0
async def put(app, request, oid):
    request.json['uid'] = request['user'].get('id')
    action = await get_item(app.pool, 'jobs_items',
                            request.json.get('action_id'))
    old = await get_item(app.pool, 'jobs_events', int(oid))
    sub_items = await get_items(app.pool, 'jobs_events', {
        'event_id': old.get('id'),
        'sort': '-create_at'
    })
    old['new_content'] = old['content'].copy()
    for i in sub_items:
        old['status'] = i.get('status')
        if i.get('content'):
            old['new_content'].update(i.get('content'))
    # check status and check permissions
    diff = set(action.get('roles')) & set(request['user']['role_code'])
    if not diff:
        return fail('无权操作')
    func = ACTIONS_FUNCS.get(action.get('operator'))
    if func:
        if type(action.get('arguments')) == dict:
            _mapper = action.get('arguments').get('args_mapper') if action.get(
                'arguments') else []
        else:
            _mapper = []
        env = {
            'uid': request['user'].get('id'),
            'db': app.pool,
            'content': old.get('content'),
            'new_content': old.get('new_content'),
            'request_id': oid,
            'args_preprocesser': _mapper,
            'data': old
        }
        result_code, result_message, error_info = await func(
            action.get('arguments'), env)
        await create_item(
            app.pool, 'jobs_events', {
                'uid': request['user'].get('id'),
                'event_id': int(oid),
                'jobs_id': action.get('id'),
                'status': action.get('end_status')[result_code],
                'information': str(result_message)
            })
        return ok(result_message, return_msg=error_info)
    return fail('出错了')
コード例 #9
0
async def put(app, request, oid):
    for i in request.json.get('other').keys():
        if request.json.get('other')[i].strip() == '':
            return fail('%s 不能为空' % (i))
        request.json[i] = request.json.get('other')[i]
    if request.json.get('async'):
        request.json[
            'async'] = True if request.json['async'] == 'True' else False
    request.json.pop('other')
コード例 #10
0
async def put(app, request, oid):
    if str(request.json.get('type')) != 'None':
        request.json['type'] = 'single' if request.json.get('type') else 'internal'
    elif request.json.get('runner_items'):
        runner_items = []
        for i in request.json['runner_items']:
            runner_items.append(i['id'])
        request.json['runner_items'] = runner_items
    elif request.json.get('roles') and request.json.get('name'):
        roles = await get_items(app.pool, 'roles')
        role_desc = {str(i.get('id')): i.get('role_code') for i in roles}
        permission = []
        for i in request.json['roles'].keys():
            if request.json['roles'][i]:
                permission.append(role_desc[i])
        if len(permission) < 1: return fail('权限不为空')
        request.json.pop('roles')
        request.json['permission'] = permission
    else: return fail("Name不能为空")
コード例 #11
0
async def put(app, request, oid):
    if str(request.json.get('status')) != 'None':
        request.json['status'] = str(request.json['status']).lower()
    if request.json.get('roles') and 'name' in request.json.get('other') and 'executer_id' in request.json.get('other'):
        roles = await get_items(app.pool, 'roles')
        role_desc = {str(i.get('id')): i.get('role_code') for i in roles}
        roles_view = set()
        for i in request.json['roles'].keys():
            if request.json['roles'][i]:
                roles_view.add(role_desc[i])
        if len(roles_view) < 1: return fail('权限不为空')
        request.json.pop('roles')
        request.json['roles_view'] = roles_view
        for i in request.json['other'].keys():
            request.json[i] = request.json['other'][i]
        request.json.pop('other')
    else:
        return fail('参数不能为空')
    pass
コード例 #12
0
async def ls(app, request):
    if request.get("user"):
        user = request.get('user')
        role_code = user.get("role_code")
        if role_code:
            role_code_str = [str(i) for i in role_code if i.strip() != ""]
            role_code_str = ",".join(role_code_str)
            request.args["role_code-overlap"] = [role_code_str]
        else:
            return fail(return_msg="该用户没有分配角色")
コード例 #13
0
async def post(app, request):

    keys = request.json.keys()
    for c in ['name', 'password']:
        if c not in keys:
            return fail('参数错误')
    users = await get_items(app.pool, 'users', {'name': request.json['name']})
    if users:
        print(app.fernet.decrypt(users[0]['key']))
        if app.fernet.decrypt(users[0]['key']) == request.json['password']:
            request['session']['user'] = users[0]
            next_go = request.cookies.get('next_go', '')
            rep = json({'return_code': '0000', 'return_msg': next_go})
            if request.cookies.get('next_go'):
                rep.cookies['next_go'] = ''
                rep.cookies['next_go']['domain'] = '.' + get_fld(request.url)
                rep.cookies['next_go']['max-age'] = 0
            return rep

    return fail('用户名或密码错误')
コード例 #14
0
ファイル: register.py プロジェクト: chengkejian/developer
async def post(app, request):
    keys = request.json.keys()
    for c in ['name', 'password', 'mobile']:
        if c not in keys:
            return fail('miss')
    user = dict(request.json).copy()
    if 'id' in user.keys():
        user.pop('id')
    user['status'] = 0
    user['key'] = app.fernet.encrypt(request.json['password'])
    await create_item(app.pool, 'users', user)
    return ok('OK')
コード例 #15
0
ファイル: cron.py プロジェクト: chengkejian/developer
async def post(app, request):
    if request.json.get('id'): request.json.pop('id')
    request.json['uid'] = request['user'].get('id')
    if request.json.get('runner_id') and 'name' in request.json.get(
            'other') and 'cron' in request.json.get('other'):
        try:
            cron = CronTab(request.json.get('other')['cron'])
        except Exception as e:
            return fail('定时器格式有误,请检查')
        later = cron.next(default_utc=False)
        next_run = datetime.datetime.now() + datetime.timedelta(seconds=later)
        request.json['next_run'] = next_run.strftime('%Y-%m-%d %H:%M:%S')
        request.json['name'] = request.json.get('other')['name']
        request.json['cron'] = request.json.get('other')['cron']
        request.json['status'] = 'enable'
        request.json['last_status'] = 'None'
        request.json['create_at'] = datetime.datetime.now().strftime(
            '%Y-%m-%d %H:%M:%S')
        await runner.run(21, {'db', app.pool})
    else:
        return fail('Name和执行器不能为空')
コード例 #16
0
ファイル: trigger.py プロジェクト: chengkejian/developer
async def post(app, request):

    try:
        request.args.get('key')
    except:
        return fail('error data')
    #keys = request.json.keys()
    # for c in ['name', 'password']:
    #     if c not in keys:
    #         return fail('miss')
    triggers = await get_items(app.pool, 'external_triggers',
                               {'token': request.args.get('key')})
    for i in triggers:
        print(i)
        print(await executer.run(app, request, i.get('action_id')))
        return ok('OK')
    # if users:
    #     request['session']['user'] = users[0]
    #     return ok('OK')

    return fail('error')