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
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('')
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('参数不能为空')
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('参数不能为空')
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
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('所有参数不能为空')
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')
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('出错了')
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')
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不能为空")
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
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="该用户没有分配角色")
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('用户名或密码错误')
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')
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和执行器不能为空')
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')