Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
    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
Beispiel #7
0
 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)
Beispiel #8
0
 def _get_spaces(self) -> GETSpaceListResponse:
     """
     获取 field meta
     """
     resp = self.vika.request.get(self._api_endpoint)
     return handle_response(resp, GETSpaceListResponse)