def _get_nodes(self, space_id: str) -> GETNodeListResponse: """ 获取 field meta """ node_list_resp = self.vika.request.get( urljoin(self.vika.api_base, f"/fusion/v1/spaces/{space_id}/nodes")) return handle_response(node_list_resp, GETNodeListResponse)
def get_fields(self, **kwargs): """ 获取 field meta @param kwargs: - viewId: 'viewId' @return: """ api_endpoint = urljoin(self.vika.api_base, f"/fusion/v1/datasheets/{self.id}/fields") resp = self.vika.request.get(api_endpoint, params=kwargs) return handle_response(resp, GETMetaFieldResponse)
def delete_records(self, rec_list) -> bool: """ 删除记录 """ api_endpoint = self._record_api_endpoint if type(rec_list) is list: ids = [rec._id if type(rec) is Record else rec for rec in rec_list] else: rec = rec_list ids = rec._id if type(rec) is Record else rec resp = self.vika.request.delete(api_endpoint, params={"recordIds": ids}) r = handle_response(resp, DeleteRecordResponse) return r.success
def get_records(self, **kwargs): """ 分页获取数表数据 """ params = {} for key in kwargs: if key in API_GET_DATASHEET_QS_SET: params_value = kwargs.get(key) if key == 'sort': if check_sort_params(params_value): params_value = [json.dumps(i) for i in params_value] else: raise ErrorSortParams('sort 参数格式有误') params.update({key: params_value}) resp = self.vika.request.get(self._record_api_endpoint, params=params) return handle_response(resp, GETRecordResponse)
def create_records(self, data) -> PostRecordResponse: """ 添加记录 """ if type(data) is list: data = { "records": [{ "fields": trans_data(self.field_key_map, item) } for item in data], "fieldKey": self.field_key, } else: data = { "records": [{ "fields": trans_data(self.field_key_map, data) }], "fieldKey": self.field_key, } resp = self.vika.request.post(self._record_api_endpoint, json=data) return handle_response(resp, PostRecordResponse)
def upload_file(self, file_url): """ @deprecated 上传附件,支持本地或者网络文件路经。(请使用 upload_attachment 代替,此方法可能会被废弃) dst.upload_file("/path/to/your/file") """ api_endpoint = urljoin(self.vika.api_base, f"/fusion/v1/datasheets/{self.id}/attachments") is_web_file = type(file_url) is str and file_url.startswith("http") if is_web_file: r = requests.get(file_url) file_mimetype = r.headers["content-type"] with io.BytesIO() as buf: buf.write(r.content) buf.seek(0) _file = ("image", io.BufferedReader(buf), file_mimetype) r = self.vika.request.post( api_endpoint, files={"files": _file}, stream=False, ) else: with open(file_url, "rb") as upload_file: r = self.vika.request.post( api_endpoint, files={ "files": ( file_url, upload_file, mimetypes.guess_type(file_url)[0], ) }, ) up_file_resp = handle_response(r, UploadFileResponse) if up_file_resp.success: return up_file_resp.data
def _get_node_detail(self, node_id: str) -> GETNodeDetailResponse: node_detail_resp = self.vika.request.get( urljoin(self.vika.api_base, f"/fusion/v1/nodes/{node_id}")) return handle_response(node_detail_resp, GETNodeDetailResponse)
def _get_spaces(self) -> GETSpaceListResponse: """ 获取 field meta """ resp = self.vika.request.get(self._api_endpoint) return handle_response(resp, GETSpaceListResponse)