Skip to content

Commit c0c899f

Browse files
authored
fix: sort params parse (#8)
1 parent 45e8e64 commit c0c899f

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ _传入分页相关参数(pageNum、pageSize)时,SDK 不会再自动加载
207207
| viewId | str | 视图ID。默认为维格表中第一个视图。请求会返回视图中经过视图中筛选/排序后的结果 | |
208208
| pageNum | int | 默认 1 | |
209209
| pageSize | int | 默认 100 , 最大 1000 | |
210-
| sort | dict[] | 指定排序的字段,会覆盖视图排序条件 | `[{ field: 'field1': order: 'asc' }]` |
210+
| sort | dict[] | 指定排序的字段,会覆盖视图排序条件 | `[{ field: 'field1', order: 'asc' }]` |
211211
| recordIds | str[] | 返回指定 recordId 的记录集 | `['recordId1', 'recordId2']` |
212212
| fields | str[] | 只有指定字段会返回 | |
213213
| filterByFormula | str | 使用公式作为筛选条件,返回匹配的记录 | |

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="vika",
8-
version="0.1.1",
8+
version="0.1.2",
99
author="vikadata",
1010
author_email="[email protected]",
1111
description="维格表官方 Python SDK",

vika/exceptions.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,10 @@ class ErrorFieldKey(Exception):
3434
"""
3535

3636
pass
37+
38+
39+
class ErrorSortParams(Exception):
40+
"""
41+
错误的排序规则
42+
"""
43+
pass

vika/vika.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from urllib.parse import urljoin, urlparse
22

33
import requests
4+
import json
45

56
from .const import API_BASE, API_GET_DATASHEET_QS_SET, DEFAULT_PAGE_SIZE
67
from .datasheet import Datasheet
8+
from .exceptions import ErrorSortParams
79
from .vika_type import RawGETResponse
810

911

@@ -41,11 +43,23 @@ def datasheet(self, dst_id_or_url, **kwargs):
4143
raise Exception("Bad URL")
4244
return Datasheet(self, dst_id, records=[], **kwargs)
4345

46+
@staticmethod
47+
def check_sort_params(sort):
48+
if not isinstance(sort, list):
49+
return False
50+
return all([('field' in i and 'order' in i) for i in sort])
51+
4452
def fetch_datasheet(self, dst_id, **kwargs):
4553
params = {}
4654
for key in kwargs:
4755
if key in API_GET_DATASHEET_QS_SET:
48-
params.update({key: kwargs.get(key)})
56+
params_value = kwargs.get(key)
57+
if key == 'sort':
58+
if self.check_sort_params(params_value):
59+
params_value = [json.dumps(i) for i in params_value]
60+
else:
61+
raise ErrorSortParams('sort 参数格式有误')
62+
params.update({key: params_value})
4963
resp = self.request.get(
5064
urljoin(self.api_base, f"/fusion/v1/datasheets/{dst_id}/records"),
5165
params=params,

0 commit comments

Comments
 (0)