|
1 | 1 | from urllib.parse import urljoin, urlparse |
2 | 2 |
|
3 | 3 | import requests |
| 4 | +import json |
4 | 5 |
|
5 | 6 | from .const import API_BASE, API_GET_DATASHEET_QS_SET, DEFAULT_PAGE_SIZE |
6 | 7 | from .datasheet import Datasheet |
| 8 | +from .exceptions import ErrorSortParams |
7 | 9 | from .vika_type import RawGETResponse |
8 | 10 |
|
9 | 11 |
|
@@ -41,11 +43,23 @@ def datasheet(self, dst_id_or_url, **kwargs): |
41 | 43 | raise Exception("Bad URL") |
42 | 44 | return Datasheet(self, dst_id, records=[], **kwargs) |
43 | 45 |
|
| 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 | + |
44 | 52 | def fetch_datasheet(self, dst_id, **kwargs): |
45 | 53 | params = {} |
46 | 54 | for key in kwargs: |
47 | 55 | 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}) |
49 | 63 | resp = self.request.get( |
50 | 64 | urljoin(self.api_base, f"/fusion/v1/datasheets/{dst_id}/records"), |
51 | 65 | params=params, |
|
0 commit comments