def patch(self, request): form, error = JsonParser( Argument('id', type=int, help='缺少必要参数'), Argument('value', type=str, default=''), Argument('is_public', type=bool, help='缺少必要参数'), Argument('desc', required=False) ).parse(request.body) if error is None: form.value = form.value.strip() config = Config.objects.filter(pk=form.id).first() if not config: return json_response(error='未找到指定对象') config.desc = form.desc config.is_public = form.is_public if config.value != form.value: old_value = config.value config.value = form.value config.updated_at = human_datetime() config.updated_by = request.user ConfigHistory.objects.create( action='2', old_value=old_value, **config.to_dict(excludes=('id',))) config.save() return json_response(error=error)
def post(self, request): form, error = JsonParser( Argument('o_id', type=int, help='缺少必要参数'), Argument('type', filter=lambda x: x in dict(Config.TYPES), help='缺少必要参数'), Argument('envs', type=list, filter=lambda x: len(x), help='请选择环境'), Argument('key', help='请输入Key'), Argument('is_public', type=bool, help='缺少必要参数'), Argument('value', type=str, default=''), Argument('desc', required=False)).parse(request.body) if error is None: form.value = form.value.strip() form.updated_at = human_datetime() form.updated_by = request.user envs = form.pop('envs') for env_id in envs: cf = Config.objects.filter(o_id=form.o_id, type=form.type, env_id=env_id, key=form.key).first() if cf: raise Exception(f'{cf.env.name} 中已存在该Key') Config.objects.create(env_id=env_id, **form) ConfigHistory.objects.create(action='1', env_id=env_id, **form) return json_response(error=error)